diff --git a/.tx/config b/.tx/config
index befa61f59d896cd58ad0f4cf2ffe81d84385c8bb..795d3959ff77e1dcdd09b1284dcce97971ecf90a 100644
--- a/.tx/config
+++ b/.tx/config
@@ -270,6 +270,8 @@ source_lang = en
 ;;trans.ca = installer/resources/locale/po/messages_ca.po
 trans.de = installer/resources/locale/po/messages_de.po
 trans.es = installer/resources/locale/po/messages_es.po
+;; currently fails check
+;;trans.fi = installer/resources/locale/po/messages_fi.po
 trans.fr = installer/resources/locale/po/messages_fr.po
 trans.id = installer/resources/locale/po/messages_id.po
 trans.it = installer/resources/locale/po/messages_it.po
@@ -297,6 +299,7 @@ type = PROPERTIES
 trans.cs = core/java/src/gnu/getopt/MessagesBundle_cs.properties
 trans.de = core/java/src/gnu/getopt/MessagesBundle_de.properties
 trans.es = core/java/src/gnu/getopt/MessagesBundle_es.properties
+trans.fi = core/java/src/gnu/getopt/MessagesBundle_fi.properties
 trans.fr = core/java/src/gnu/getopt/MessagesBundle_fr.properties
 trans.hu = core/java/src/gnu/getopt/MessagesBundle_hu.properties
 ;; Java converts id to in
@@ -322,6 +325,7 @@ trans.zh_CN = core/java/src/gnu/getopt/MessagesBundle_zh.properties
 [I2P.streaming]
 source_file = apps/ministreaming/locale/messages_en.po
 source_lang = en
+trans.ca = apps/ministreaming/locale/messages_ca.po
 trans.de = apps/ministreaming/locale/messages_de.po
 trans.es = apps/ministreaming/locale/messages_es.po
 trans.fr = apps/ministreaming/locale/messages_fr.po
@@ -332,6 +336,7 @@ trans.nb = apps/ministreaming/locale/messages_nb.po
 trans.pl = apps/ministreaming/locale/messages_pl.po
 trans.ro = apps/ministreaming/locale/messages_ro.po
 trans.ru_RU = apps/ministreaming/locale/messages_ru.po
+trans.sv_SE = apps/ministreaming/locale/messages_sv.po
 trans.uk_UA = apps/ministreaming/locale/messages_uk.po
 trans.zh_CN = apps/ministreaming/locale/messages_zh.po
 
diff --git a/LICENSE.txt b/LICENSE.txt
index 254fde1a3f7927209308755864474e91c256a1b0..295da33aa2eb99b54ee203c0a9927b9a02330a82 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -252,8 +252,8 @@ Applications:
       Bundles systray4j-2.4.1:
       See licenses/LICENSE-LGPLv2.1.txt
 
-   Tomcat 6.0.43:
-   Copyright 1999-2014 The Apache Software Foundation
+   Tomcat 6.0.44:
+   Copyright 1999-2015 The Apache Software Foundation
    See licenses/LICENSE-Apache2.0.txt
    See licenses/NOTICE-Tomcat.txt
 
diff --git a/README.txt b/README.txt
index d115a6dbf25b07382c04fd2eae31d726570fba56..0a99e21a49f8c3166560b2568cfcb94d0b57e020 100644
--- a/README.txt
+++ b/README.txt
@@ -19,7 +19,8 @@ To build:
 
 Documentation:
 	https://geti2p.net/how
-	API: run 'ant javadoc' then start at build/javadoc/index.html
+	API: http://docs.i2p-projekt.de/javadoc/
+	     or run 'ant javadoc' then start at build/javadoc/index.html
 
 Latest release:
 	https://geti2p.net/download
@@ -34,6 +35,15 @@ Need help?
 	IRC irc.freenode.net #i2p
 	http://forum.i2p/
 
+Bug reports:
+	https://trac.i2p2.de/report/1
+
+Contact information, security issues, press inquiries:
+	https://geti2p.net/en/contact
+
+Twitter:
+	@i2p, @geti2p
+
 Licenses:
 	See LICENSE.txt
 
diff --git a/apps/BOB/src/net/i2p/BOB/BOB.java b/apps/BOB/src/net/i2p/BOB/BOB.java
index c4ef3b23a297ee3e547d3c83fa4c5ac6dac638e2..e1106c9bbb50619dfdb41bafe936519d4022a729 100644
--- a/apps/BOB/src/net/i2p/BOB/BOB.java
+++ b/apps/BOB/src/net/i2p/BOB/BOB.java
@@ -338,7 +338,7 @@ public class BOB implements Runnable, ClientApp {
 
 				if (g) {
 					DoCMDS conn_c = new DoCMDS(spin, lock, server, props, database, _log);
-					Thread t = new Thread(conn_c);
+					Thread t = new I2PAppThread(conn_c);
 					t.setName("BOB.DoCMDS " + i);
 					t.start();
 					i++;
diff --git a/apps/BOB/src/net/i2p/BOB/DoCMDS.java b/apps/BOB/src/net/i2p/BOB/DoCMDS.java
index 957f0ea3f1e4aa85ab4fa48388bd607058b4bfe5..7e5bd101478c13e8dae5fe1f29605ef320f17073 100644
--- a/apps/BOB/src/net/i2p/BOB/DoCMDS.java
+++ b/apps/BOB/src/net/i2p/BOB/DoCMDS.java
@@ -25,12 +25,13 @@ import java.util.Locale;
 import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.concurrent.atomic.AtomicBoolean;
+
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
 import net.i2p.client.I2PClientFactory;
-//import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
-//import net.i2p.i2ptunnel.I2PTunnel;
+import net.i2p.util.I2PAppThread;
+
 // needed only for debugging.
 // import java.util.logging.Level;
 // import java.util.logging.Logger;
@@ -1307,7 +1308,7 @@ public class DoCMDS implements Runnable {
 														// wait
 													}
 													tunnel = new MUXlisten(lock, database, nickinfo, _log);
-													Thread t = new Thread(tunnel);
+													Thread t = new I2PAppThread(tunnel);
 													t.start();
 													// try {
 													//	Thread.sleep(1000 * 10); // Slow down the startup.
diff --git a/apps/BOB/src/net/i2p/BOB/I2Plistener.java b/apps/BOB/src/net/i2p/BOB/I2Plistener.java
index 28c053a3adc08a735875573c70ee4ea9811c59b7..ebe4888602c6cb26f7f320429b487733c9b58ae5 100644
--- a/apps/BOB/src/net/i2p/BOB/I2Plistener.java
+++ b/apps/BOB/src/net/i2p/BOB/I2Plistener.java
@@ -18,10 +18,12 @@ package net.i2p.BOB;
 import java.net.ConnectException;
 import java.net.SocketTimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
+
 import net.i2p.I2PException;
 import net.i2p.client.streaming.I2PServerSocket;
 import net.i2p.client.streaming.I2PSocket;
 import net.i2p.client.streaming.I2PSocketManager;
+import net.i2p.util.I2PAppThread;
 
 /**
  * Listen on I2P and connect to TCP
@@ -30,16 +32,15 @@ import net.i2p.client.streaming.I2PSocketManager;
  */
 public class I2Plistener implements Runnable {
 
-	private NamedDB info,  database;
-	private Logger _log;
-	public I2PSocketManager socketManager;
-	public I2PServerSocket serverSocket;
-	private AtomicBoolean lives;
+	private final NamedDB info,  database;
+	private final Logger _log;
+	private final I2PServerSocket serverSocket;
+	private final AtomicBoolean lives;
 
 	/**
 	 * Constructor
 	 * @param SS
-	 * @param S
+	 * @param S unused
 	 * @param info
 	 * @param database
 	 * @param _log
@@ -48,7 +49,6 @@ public class I2Plistener implements Runnable {
 		this.database = database;
 		this.info = info;
 		this._log = _log;
-		this.socketManager = S;
 		this.serverSocket = SS;
 		this.lives = lives;
 	}
@@ -79,7 +79,7 @@ public class I2Plistener implements Runnable {
 						conn++;
 						// toss the connection to a new thread.
 						I2PtoTCP conn_c = new I2PtoTCP(sessSocket, info, database, lives);
-						Thread t = new Thread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
+						Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " I2PtoTCP " + conn);
 						t.start();
 					}
 
diff --git a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java
index bf699db60e62587e84c8878474a3c788e45c3dbf..8e1cebb735b701060ae4b5814c0a5b0e8eb923dc 100644
--- a/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java
+++ b/apps/BOB/src/net/i2p/BOB/I2PtoTCP.java
@@ -19,7 +19,9 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 import java.util.concurrent.atomic.AtomicBoolean;
+
 import net.i2p.client.streaming.I2PSocket;
+import net.i2p.util.I2PAppThread;
 
 /**
  * Process I2P->TCP
@@ -111,8 +113,8 @@ public class I2PtoTCP implements Runnable {
 					// setup to cross the streams
 					TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P
 					TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app
-					t = new Thread(conn_c, Thread.currentThread().getName() + " TCPioA");
-					q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB");
+					t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA");
+					q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB");
 					// Fire!
 					t.start();
 					q.start();
diff --git a/apps/BOB/src/net/i2p/BOB/MUXlisten.java b/apps/BOB/src/net/i2p/BOB/MUXlisten.java
index f330be971d88dbe23dc5030f97846bc406ba0bc1..81dbe0845100af617546f17631cf58dc55b2debe 100644
--- a/apps/BOB/src/net/i2p/BOB/MUXlisten.java
+++ b/apps/BOB/src/net/i2p/BOB/MUXlisten.java
@@ -21,11 +21,13 @@ import java.net.InetAddress;
 import java.net.ServerSocket;
 import java.util.Properties;
 import java.util.concurrent.atomic.AtomicBoolean;
+
 import net.i2p.I2PException;
 import net.i2p.client.I2PClient;
 import net.i2p.client.streaming.I2PServerSocket;
 import net.i2p.client.streaming.I2PSocketManager;
 import net.i2p.client.streaming.I2PSocketManagerFactory;
+import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
 
 /**
@@ -201,14 +203,14 @@ public class MUXlisten implements Runnable {
 							// I2P -> TCP
 							SS = socketManager.getServerSocket();
 							I2Plistener conn = new I2Plistener(SS, socketManager, info, database, _log, lives);
-							t = new Thread(tg, conn, "BOBI2Plistener " + N);
+							t = new I2PAppThread(tg, conn, "BOBI2Plistener " + N);
 							t.start();
 						}
 
 						if (come_in) {
 							// TCP -> I2P
 							TCPlistener conn = new TCPlistener(listener, socketManager, info, database, _log, lives);
-							q = new Thread(tg, conn, "BOBTCPlistener " + N);
+							q = new I2PAppThread(tg, conn, "BOBTCPlistener " + N);
 							q.start();
 						}
 
diff --git a/apps/BOB/src/net/i2p/BOB/NamedDB.java b/apps/BOB/src/net/i2p/BOB/NamedDB.java
index 5a1b8e45f3e3bddab7ff317f9a1a17325ee1651b..dda9ab268d0290c1adc6df0ec23be097c2379278 100644
--- a/apps/BOB/src/net/i2p/BOB/NamedDB.java
+++ b/apps/BOB/src/net/i2p/BOB/NamedDB.java
@@ -64,7 +64,7 @@ public class NamedDB {
 	}
 
 	/**
-	 * Find objects in the array, returns it's index or throws exception
+	 * Find objects in the array, returns its index or throws exception
 	 * @param key
 	 * @return an objects index
 	 * @throws ArrayIndexOutOfBoundsException when key does not exist
diff --git a/apps/BOB/src/net/i2p/BOB/TCPlistener.java b/apps/BOB/src/net/i2p/BOB/TCPlistener.java
index e5dd41d599c604af5fcda17ef6e27b321e596f4c..2ad1b5af616457b7d0d3e066f41b4e454d40b1ea 100644
--- a/apps/BOB/src/net/i2p/BOB/TCPlistener.java
+++ b/apps/BOB/src/net/i2p/BOB/TCPlistener.java
@@ -20,8 +20,10 @@ import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
+
 import net.i2p.client.streaming.I2PServerSocket;
 import net.i2p.client.streaming.I2PSocketManager;
+import net.i2p.util.I2PAppThread;
 
 /**
  * Listen on TCP port and connect to I2P
@@ -30,12 +32,11 @@ import net.i2p.client.streaming.I2PSocketManager;
  */
 public class TCPlistener implements Runnable {
 
-	private NamedDB info,  database;
-	private Logger _log;
-	public I2PSocketManager socketManager;
-	public I2PServerSocket serverSocket;
-	private ServerSocket listener;
-	private AtomicBoolean lives;
+	private final NamedDB info,  database;
+	private final Logger _log;
+	private final I2PSocketManager socketManager;
+	private final ServerSocket listener;
+	private final AtomicBoolean lives;
 
 	/**
 	 * Constructor
@@ -76,7 +77,7 @@ public class TCPlistener implements Runnable {
 						conn++;
 						// toss the connection to a new thread.
 						TCPtoI2P conn_c = new TCPtoI2P(socketManager, server, info, database, lives);
-						Thread t = new Thread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
+						Thread t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPtoI2P " + conn);
 						t.start();
 						g = false;
 					}
diff --git a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java
index 0ce587257d2c2ac6440560d7987f0c5b7bfeb942..3f196af28dad6441fa874ab8710b82a5676be294 100644
--- a/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java
+++ b/apps/BOB/src/net/i2p/BOB/TCPtoI2P.java
@@ -24,13 +24,14 @@ import java.net.NoRouteToHostException;
 import java.net.Socket;
 import java.util.Locale;
 import java.util.concurrent.atomic.AtomicBoolean;
+
+import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
 import net.i2p.client.streaming.I2PSocket;
 import net.i2p.client.streaming.I2PSocketManager;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
-//import net.i2p.i2ptunnel.I2PTunnel;
-import net.i2p.I2PAppContext;
+import net.i2p.util.I2PAppThread;
 
 /**
  *
@@ -158,8 +159,8 @@ public class TCPtoI2P implements Runnable {
 					// setup to cross the streams
 					TCPio conn_c = new TCPio(in, Iout, lives); // app -> I2P
 					TCPio conn_a = new TCPio(Iin, out, lives); // I2P -> app
-					t = new Thread(conn_c, Thread.currentThread().getName() + " TCPioA");
-					q = new Thread(conn_a, Thread.currentThread().getName() + " TCPioB");
+					t = new I2PAppThread(conn_c, Thread.currentThread().getName() + " TCPioA");
+					q = new I2PAppThread(conn_a, Thread.currentThread().getName() + " TCPioB");
 					// Fire!
 					t.start();
 					q.start();
diff --git a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java
index 1b6f4249d25b9327d7db1209b8dd6780c7e3554f..9448d1d7bfa3376468fd0cd903ce7fb9db266734 100644
--- a/apps/BOB/src/net/i2p/BOB/UDPIOthread.java
+++ b/apps/BOB/src/net/i2p/BOB/UDPIOthread.java
@@ -34,15 +34,17 @@ import net.i2p.util.Log;
  *  The skeletal frame is here, just needs to be finished.
  *
  * @author sponge
+ * @deprecated incomplete, unused
  */
 public class UDPIOthread implements I2PSessionListener, Runnable {
 
-	private NamedDB info;
-	private Log _log;
-	private Socket socket;
+	private final NamedDB info;
+	private final Log _log;
+	private final Socket socket;
 	private DataInputStream in;
 	private DataOutputStream out;
-	private I2PSession _session;
+	private final I2PSession _session;
+	// FIXME never set
 	private Destination _peerDestination;
 	private boolean up;
 
@@ -58,7 +60,6 @@ public class UDPIOthread implements I2PSessionListener, Runnable {
 		this._log = _log;
 		this.socket = socket;
 		this._session = _session;
-
 	}
 
 	/**
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java b/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java
index 4a124e4886015de9040ea8d20ef0534c8f8d8763..fea030774a9604eb89a5baecf9588d1c3d966cbc 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/AddressBook.java
@@ -27,6 +27,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import net.i2p.I2PAppContext;
 import net.i2p.util.EepGet;
@@ -49,6 +50,26 @@ class AddressBook {
     private boolean modified;
     private static final boolean DEBUG = false;
 
+    private static final int MIN_DEST_LENGTH = 516;
+    private static final int MAX_DEST_LENGTH = MIN_DEST_LENGTH + 100;  // longer than any known cert type for now
+
+    /**
+     * 5-67 chars lower/upper case
+     */
+    private static final Pattern HOST_PATTERN =
+        Pattern.compile("^[0-9a-zA-Z\\.-]{5,67}$");
+
+    /**
+     * 52 chars lower/upper case
+     * Always ends in 'a' or 'q'
+     */
+    private static final Pattern B32_PATTERN =
+        Pattern.compile("^[2-7a-zA-Z]{51}[aAqQ]$");
+
+    /** not a complete qualification, just a quick check */
+    private static final Pattern B64_PATTERN =
+        Pattern.compile("^[0-9a-zA-Z~-]{" + MIN_DEST_LENGTH + ',' + MAX_DEST_LENGTH + "}={0,2}$");
+
     /**
      * Construct an AddressBook from the contents of the Map addresses.
      * 
@@ -159,8 +180,13 @@ class AddressBook {
      * @since 0.8.7
      */
     public Iterator<Map.Entry<String, String>> iterator() {
-        if (this.subFile != null)
-            return new ConfigIterator(this.subFile);
+        if (this.subFile != null) {
+            try {
+                return new ConfigIterator(this.subFile);
+            } catch (IOException ioe) {
+                return new ConfigIterator();
+            }
+       }
         return this.addresses.entrySet().iterator();
     }
 
@@ -201,9 +227,6 @@ class AddressBook {
         return "Map containing " + this.addresses.size() + " entries";
     }
 
-    private static final int MIN_DEST_LENGTH = 516;
-    private static final int MAX_DEST_LENGTH = MIN_DEST_LENGTH + 100;  // longer than any known cert type for now
-
     /**
      * Do basic validation of the hostname
      * hostname was already converted to lower case by ConfigParser.parse()
@@ -220,9 +243,10 @@ class AddressBook {
 		host.indexOf("..") < 0 &&
                 // IDN - basic check, not complete validation
                 (host.indexOf("--") < 0 || host.startsWith("xn--") || host.indexOf(".xn--") > 0) &&
-                host.replaceAll("[a-z0-9.-]", "").length() == 0 &&
+                HOST_PATTERN.matcher(host).matches() &&
                 // Base32 spoofing (52chars.i2p)
-                (! (host.length() == 56 && host.substring(0,52).replaceAll("[a-z2-7]", "").length() == 0)) &&
+                // We didn't do it this way, we use a .b32.i2p suffix, but let's prohibit it anyway
+                (! (host.length() == 56 && B32_PATTERN.matcher(host.substring(0,52)).matches())) &&
                 // ... or maybe we do Base32 this way ...
                 (! host.equals("b32.i2p")) &&
                 (! host.endsWith(".b32.i2p")) &&
@@ -246,7 +270,7 @@ class AddressBook {
 		 (dest.length() > MIN_DEST_LENGTH && dest.length() <= MAX_DEST_LENGTH)) &&
 		// B64 comes in groups of 2, 3, or 4 chars, but never 1
 		((dest.length() % 4) != 1) &&
-                dest.replaceAll("[a-zA-Z0-9~-]", "").length() == 0
+                B64_PATTERN.matcher(dest).matches()
                 ;	
     }
 
@@ -332,4 +356,27 @@ class AddressBook {
     protected void finalize() {
         delete();
     }
+
+/****
+    public static void main(String[] args) {
+        String[] tests = { "foo.i2p",
+                           "3bnipzzu67cdq2rcygyxz52xhvy6ylokn4zfrk36ywn6pixmaoza.b32.i2p",
+                           "9rhEy4dT9fMlcSOhDzfWRxCV2aen4Zp4eSthOf5f9gVKMa4PtQJ-wEzm2KEYeDXkbM6wEDvMQ6ou4LIniSE6bSAwy7fokiXk5oabels-sJmftnQWRbZyyXEAsLc3gpJJvp9km7kDyZ0z0YGL5tf3S~OaWdptB5tSBOAOjm6ramcYZMWhyUqm~xSL1JyXUqWEHRYwhoDJNL6-L516VpDYVigMBpIwskjeFGcqK8BqWAe0bRwxIiFTPN6Ck8SDzQvS1l1Yj-zfzg3X3gOknzwR8nrHUkjsWtEB6nhbOr8AR21C9Hs0a7MUJvSe2NOuBoNTrtxT76jDruI78JcG5r~WKl6M12yM-SqeBNE9hQn2QCHeHAKju7FdRCbqaZ99IwyjfwvZbkiYYQVN1xlUuGaXrj98XDzK7GORYdH-PrVGfEbMXQ40KLHUWHz8w4tQXAOQrCHEichod0RIzuuxo3XltCWKrf1xGZhkAo9bk2qXi6digCijvYNaKmQdXZYWW~RtAAAA",
+                           "6IZTYacjlXjSAxu-uXEO5oGsj-f4tfePHEvGjs5pu-AMXMwD7-xFdi8kdobDMJp9yRAl96U7yLl~0t9zHeqqYmNeZnDSkTmAcSC2PT45ZJDXBobKi1~a77zuqfPwnzEatYfW3GL1JQAEkAmiwNJoG7ThTZ3zT7W9ekVJpHi9mivpTbaI~rALLfuAg~Mvr60nntZHjqhEZuiU4dTXrmc5nykl~UaMnBdwHL4jKmoN5CotqHyLYZfp74fdD-Oq4SkhuBhU8wkBIM3lz3Ul1o6-s0lNUMdYJq1CyxnyP7jeekdfAlSx4P4sU4M0dPaYvPdOFWPWwBuEh0pCs5Mj01B2xeEBhpV~xSLn6ru5Vq98TrmaR33KHxd76OYYFsWwzVbBuMVSd800XpBghGFucGw01YHYsPh3Afb01sXbf8Nb1bkxCy~DsrmoH4Ww3bpx66JhRTWvg5al3oWlCX51CnJUqaaK~dPL-pBvAyLKIA5aYvl8ca66jtA7AFDxsOb2texBBQAEAAcAAA==",
+                           "te9Ky7XvVcLLr5vQqvfmOasg915P3-ddP3iDqpMMk7v5ufFKobLAX~1k-E4WVsJVlkYvkHVOjxix-uT1IdewKmLd81s5wZtz0GQ3ZC6p0C3S2cOxz7kQqf7QYSR0BrhZC~2du3-GdQO9TqNmsnHrah5lOZf0LN2JFEFPqg8ZB5JNm3JjJeSqePBRk3zAUogNaNK3voB1MVI0ZROKopXAJM4XMERNqI8tIH4ngGtV41SEJJ5pUFrrTx~EiUPqmSEaEA6UDYZiqd23ZlewZ31ExXQj97zvkuhKCoS9A9MNkzZejJhP-TEXWF8~KHur9f51H--EhwZ42Aj69-3GuNjsMdTwglG5zyIfhd2OspxJrXzCPqIV2sXn80IbPgwxHu0CKIJ6X43B5vTyVu87QDI13MIRNGWNZY5KmM5pilGP7jPkOs4xQDo4NHzpuJR5igjWgJIBPU6fI9Pzq~BMzjLiZOMp8xNWey1zKC96L0eX4of1MG~oUvq0qmIHGNa1TlUwBQAEAAEAAA==",
+                           "(*&(*&(*&(*",
+                           "9rhEy4dT9fMlcSOhDzfWRxCV2aen4Zp4eSthOf5f9gVKMa4PtQJ-wEzm2KEYeDXkbM6wEDvMQ6ou4LIniSE6bSAwy7fokiXk5oabels-sJmftnQWRbZyyXEAsLc3gpJJvp9km7kDyZ0z0YGL5tf3S~OaWdptB5tSBOAOjm6ramcYZMWhyUqm~xSL1JyXUqWEHRYwhoDJNL6-L516VpDYVigMBpIwskjeFGcqK8BqWAe0bRwxIiFTPN6Ck8SDzQvS1l1Yj-zfzg3X3gOknzwR8nrHUkjsWtEB6nhbOr8AR21C9Hs0a7MUJvSe2NOuBoNTrtxT76jDruI78JcG5r~WKl6M12yM-SqeBNE9hQn2QCHeHAKju7FdRCbqaZ99IwyjfwvZbkiYYQVN1xlUuGaXrj98XDzK7GORYdH-PrVGfEbMXQ40KLHUWHz8w4tQXAOQrCHEichod0RIzuuxo3XltCWKrf1xGZhkAo9bk2qXi6digCijvYNaKmQdXZYWW~RtAAA",
+                           "6IZTYacjlXjSAxu-uXEO5oGsj-f4tfePHEvGjs5pu-AMXMwD7-xFdi8kdobDMJp9yRAl96U7yLl~0t9zHeqqYmNeZnDSkTmAcSC2PT45ZJDXBobKi1~a77zuqfPwnzEatYfW3GL1JQAEkAmiwNJoG7ThTZ3zT7W9ekVJpHi9mivpTbaI~rALLfuAg~Mvr60nntZHjqhEZuiU4dTXrmc5nykl~UaMnBdwHL4jKmoN5CotqHyLYZfp74fdD-Oq4SkhuBhU8wkBIM3lz3Ul1o6-s0lNUMdYJq1CyxnyP7jeekdfAlSx4P4sU4M0dPaYvPdOFWPWwBuEh0pCs5Mj01B2xeEBhpV~xSLn6ru5Vq98TrmaR33KHxd76OYYFsWwzVbBuMVSd800XpBghGFucGw01YHYsPh3Afb01sXbf8Nb1bkxCy~DsrmoH4Ww3bpx66JhRTWvg5al3oWlCX51CnJUqaaK~dPL-pBvAyLKIA5aYvl8ca66jtA7AFDxsOb2texBBQAEAAcAAA===",
+                           "!e9Ky7XvVcLLr5vQqvfmOasg915P3-ddP3iDqpMMk7v5ufFKobLAX~1k-E4WVsJVlkYvkHVOjxix-uT1IdewKmLd81s5wZtz0GQ3ZC6p0C3S2cOxz7kQqf7QYSR0BrhZC~2du3-GdQO9TqNmsnHrah5lOZf0LN2JFEFPqg8ZB5JNm3JjJeSqePBRk3zAUogNaNK3voB1MVI0ZROKopXAJM4XMERNqI8tIH4ngGtV41SEJJ5pUFrrTx~EiUPqmSEaEA6UDYZiqd23ZlewZ31ExXQj97zvkuhKCoS9A9MNkzZejJhP-TEXWF8~KHur9f51H--EhwZ42Aj69-3GuNjsMdTwglG5zyIfhd2OspxJrXzCPqIV2sXn80IbPgwxHu0CKIJ6X43B5vTyVu87QDI13MIRNGWNZY5KmM5pilGP7jPkOs4xQDo4NHzpuJR5igjWgJIBPU6fI9Pzq~BMzjLiZOMp8xNWey1zKC96L0eX4of1MG~oUvq0qmIHGNa1TlUwBQAEAAEAAA==",
+                           "x"
+        };
+        for (String s : tests) {
+            test(s);
+        }
+    }
+
+    public static void test(String s) {
+        System.out.println(s + " valid host? " + isValidKey(s) + " valid dest? " + isValidDest(s));
+    }
+****/
 }
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java b/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java
index 955363eafdf789716b929b49bffb42860373865e..30c21d19bf269592b3e522066f2b0652e615b060 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/ConfigIterator.java
@@ -22,6 +22,7 @@
 package net.i2p.addressbook;
 
 import java.io.BufferedReader;
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -41,7 +42,7 @@ import java.util.NoSuchElementException;
  *
  *  @since 0.8.7
  */
-class ConfigIterator implements Iterator<Map.Entry<String, String>> {
+class ConfigIterator implements Iterator<Map.Entry<String, String>>, Closeable {
 
     private BufferedReader input;
     private ConfigEntry next;
@@ -54,11 +55,9 @@ class ConfigIterator implements Iterator<Map.Entry<String, String>> {
     /**
      *  An iterator over the key/value pairs in the file.
      */
-    public ConfigIterator(File file) {
-        try {
+    public ConfigIterator(File file) throws IOException {
             FileInputStream fileStream = new FileInputStream(file);
-            input = new BufferedReader(new InputStreamReader(fileStream));
-        } catch (IOException ioe) {}
+            input = new BufferedReader(new InputStreamReader(fileStream, "UTF-8"));
     }
 
     public boolean hasNext() {
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java b/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java
index 5fda52940222d29180a0ff9445acfa0d97c37d0f..e2cd8ab2a0abaaff9575170ec41d149465303362 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/ConfigParser.java
@@ -116,7 +116,7 @@ class ConfigParser {
     public static Map<String, String>  parse(File file) throws IOException {
         FileInputStream fileStream = new FileInputStream(file);
         BufferedReader input = new BufferedReader(new InputStreamReader(
-                fileStream));
+                fileStream, "UTF-8"));
         Map<String, String>  rv = parse(input);
         try {
             fileStream.close();
@@ -205,7 +205,7 @@ class ConfigParser {
     public static List<String> parseSubscriptions(File file) throws IOException {
         FileInputStream fileStream = new FileInputStream(file);
         BufferedReader input = new BufferedReader(new InputStreamReader(
-                fileStream));
+                fileStream, "UTF-8"));
         List<String> rv = parseSubscriptions(input);
         try {
             fileStream.close();
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/DaemonThread.java b/apps/addressbook/java/src/net/i2p/addressbook/DaemonThread.java
index fe74c7a83a6412088cc4c4ba20099146765112b3..b0689a208112ddd2bd2fa68d40f0f0563bff0e12 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/DaemonThread.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/DaemonThread.java
@@ -25,6 +25,7 @@ import java.util.Properties;
 
 import net.i2p.I2PAppContext;
 import net.i2p.client.naming.NamingServiceUpdater;
+import net.i2p.util.I2PAppThread;
 
 /**
  * A thread that waits five minutes, then runs the addressbook daemon.  
@@ -32,7 +33,7 @@ import net.i2p.client.naming.NamingServiceUpdater;
  * @author Ragnarok
  *
  */
-public class DaemonThread extends Thread implements NamingServiceUpdater {
+public class DaemonThread extends I2PAppThread implements NamingServiceUpdater {
 
     private String[] args;
 
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/Log.java b/apps/addressbook/java/src/net/i2p/addressbook/Log.java
index d0f01904f9ae3dc8ff113ff4393c13e2fd117116..a87af2537f0bfa09e73c65b5c28f59d3afb41029 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/Log.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/Log.java
@@ -23,8 +23,9 @@ package net.i2p.addressbook;
 
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.util.Date;
 
 /**
@@ -56,8 +57,8 @@ class Log {
     public void append(String entry) {
         BufferedWriter bw = null;
         try {
-            bw = new BufferedWriter(new FileWriter(this.file,
-                    true));
+            bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(this.file,
+                    true), "UTF-8"));
             String timestamp = new Date().toString();
             bw.write(timestamp + " -- " + entry);
             bw.newLine();
diff --git a/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java b/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java
index b8b1df28b1d8814d754c9094c5681ca80baa9df3..74e946f953c2c92063bee805a6829d8235b87d48 100644
--- a/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java
+++ b/apps/addressbook/java/src/net/i2p/addressbook/SubscriptionIterator.java
@@ -76,7 +76,8 @@ class SubscriptionIterator implements Iterator<AddressBook> {
     public AddressBook next() {
         Subscription sub = this.subIterator.next();
         if (sub.getLastFetched() + this.delay < I2PAppContext.getGlobalContext().clock().now() &&
-            I2PAppContext.getGlobalContext().portMapper().getPort(PortMapper.SVC_HTTP_PROXY) >= 0) {
+            I2PAppContext.getGlobalContext().portMapper().getPort(PortMapper.SVC_HTTP_PROXY) >= 0 &&
+            !I2PAppContext.getGlobalContext().getBooleanProperty("i2p.vmCommSystem")) {
             //System.err.println("Fetching addressbook from " + sub.getLocation());
             return new AddressBook(sub, this.proxyHost, this.proxyPort);
         } else {
diff --git a/apps/desktopgui/bundle-messages.sh b/apps/desktopgui/bundle-messages.sh
index 957199923c69193f49a3cc45ab942285202b53e6..6823dde03e235b138b363af701035ce6e19b3a88 100644
--- a/apps/desktopgui/bundle-messages.sh
+++ b/apps/desktopgui/bundle-messages.sh
@@ -31,7 +31,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="src"
@@ -64,19 +64,19 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# intl.title("foo")
-		# handler._("foo")
-		# formhandler._("foo")
+		# handler._t("foo")
+		# formhandler._t("foo")
 		# net.i2p.router.web.Messages.getString("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
+	                 --keyword=_t --keyword=_x --keyword=intl._ --keyword=intl.title \
 	                 --keyword=handler._ --keyword=formhandler._ \
 	                 --keyword=net.i2p.router.web.Messages.getString \
 		         -o ${i}t
diff --git a/apps/desktopgui/locale/messages_uk.po b/apps/desktopgui/locale/messages_uk.po
index c45356c201861cefbac53156198df3f8832977fb..3084ecab54e04a813efa9f25ef7a3d5ae219c75e 100644
--- a/apps/desktopgui/locale/messages_uk.po
+++ b/apps/desktopgui/locale/messages_uk.po
@@ -4,7 +4,7 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# Denis Blank <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011
 # LinuxChata, 2014
 # madjong <madjong@i2pmail.org>, 2014
 msgid ""
@@ -12,9 +12,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2014-01-09 19:27+0000\n"
-"PO-Revision-Date: 2014-12-17 17:00+0000\n"
-"Last-Translator: madjong <madjong@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"PO-Revision-Date: 2015-08-07 16:31+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java
index 6fea46fef5fb117801e05b57c4f23210b581404f..2a3a16b63ea68964ed9d98d9043ec1611e9e76f2 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/ExternalTrayManager.java
@@ -20,7 +20,7 @@ public class ExternalTrayManager extends TrayManager {
     @Override
     public PopupMenu getMainMenu() {
         PopupMenu popup = new PopupMenu();
-        MenuItem startItem = new MenuItem(_("Start I2P"));
+        MenuItem startItem = new MenuItem(_t("Start I2P"));
         startItem.addActionListener(new ActionListener() {
 
             @Override
@@ -35,7 +35,7 @@ public class ExternalTrayManager extends TrayManager {
                     
                     @Override
                     protected void done() {
-                        trayIcon.displayMessage(_("Starting"), _("I2P is starting!"), TrayIcon.MessageType.INFO);
+                        trayIcon.displayMessage(_t("Starting"), _t("I2P is starting!"), TrayIcon.MessageType.INFO);
                         //Hide the tray icon.
                         //We cannot stop the desktopgui program entirely,
                         //since that risks killing the I2P process as well.
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java
index e1247dde6c53a44a8731ffd3446f38763ac077f8..1cb464308c8bc6e12d208f58b5675ccd49befe97 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/InternalTrayManager.java
@@ -23,7 +23,7 @@ public class InternalTrayManager extends TrayManager {
     public PopupMenu getMainMenu() {
         PopupMenu popup = new PopupMenu();
         
-        MenuItem browserLauncher = new MenuItem(_("Launch I2P Browser"));
+        MenuItem browserLauncher = new MenuItem(_t("Launch I2P Browser"));
         browserLauncher.addActionListener(new ActionListener() {
             
             @Override
@@ -47,7 +47,7 @@ public class InternalTrayManager extends TrayManager {
                 }.execute();
             }
         });
-        MenuItem desktopguiConfigurationLauncher = new MenuItem(_("Configure desktopgui"));
+        MenuItem desktopguiConfigurationLauncher = new MenuItem(_t("Configure desktopgui"));
         desktopguiConfigurationLauncher.addActionListener(new ActionListener() {
 
             @Override
@@ -64,7 +64,7 @@ public class InternalTrayManager extends TrayManager {
             }
 
         });
-        MenuItem restartItem = new MenuItem(_("Restart I2P"));
+        MenuItem restartItem = new MenuItem(_t("Restart I2P"));
         restartItem.addActionListener(new ActionListener() {
 
             @Override
@@ -82,7 +82,7 @@ public class InternalTrayManager extends TrayManager {
             }
             
         });
-        MenuItem stopItem = new MenuItem(_("Stop I2P"));
+        MenuItem stopItem = new MenuItem(_t("Stop I2P"));
         stopItem.addActionListener(new ActionListener() {
 
             @Override
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java
index f124ee3f62eaa3ab8eee99f5862a0a4822f3bc3a..227050735c62123fb13a9516c305216a742ddb87 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/TrayManager.java
@@ -78,7 +78,7 @@ public abstract class TrayManager {
         return image;
     }
     
-    protected static String _(String s) {
-        return DesktopguiTranslator._(s);
+    protected static String _t(String s) {
+        return DesktopguiTranslator._t(s);
     }
 }
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java b/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java
index 1e49f66093196c53e0bb23b38c48331fd1fde6b2..a697c5779f18633f7b25e7876e6fcb53af3d4a32 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/gui/DesktopguiConfigurationFrame.java
@@ -40,10 +40,10 @@ public class DesktopguiConfigurationFrame extends javax.swing.JFrame {
         cancelButton = new javax.swing.JButton();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-        setTitle(_("Tray icon configuration"));
+        setTitle(_t("Tray icon configuration"));
 
         desktopguiEnabled.setSelected(true);
-        desktopguiEnabled.setText(_("Should tray icon be enabled?"));
+        desktopguiEnabled.setText(_t("Should tray icon be enabled?"));
         desktopguiEnabled.setActionCommand("shouldDesktopguiBeEnabled");
 
         okButton.setText("OK");
@@ -98,8 +98,8 @@ public class DesktopguiConfigurationFrame extends javax.swing.JFrame {
         configureDesktopgui();
     }//GEN-LAST:event_okButtonMouseReleased
 
-    protected static String _(String s) {
-        return DesktopguiTranslator._(s);
+    protected static String _t(String s) {
+        return DesktopguiTranslator._t(s);
     }
 
     private void configureDesktopgui() {
diff --git a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java
index e95cbc01f28d438b290cd89e8a33a6867d9881d7..3778c4ad93e420ea886274dfcf70e94c7cba1b8e 100644
--- a/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java
+++ b/apps/desktopgui/src/net/i2p/desktopgui/i18n/DesktopguiTranslator.java
@@ -16,11 +16,11 @@ public class DesktopguiTranslator {
         return ctx;
     }
     
-    public static String _(String s) {
+    public static String _t(String s) {
         return Translate.getString(s, getRouterContext(), BUNDLE_NAME);
     }
 
-    public static String _(String s, Object o) {
+    public static String _t(String s, Object o) {
         return Translate.getString(s, o, getRouterContext(), BUNDLE_NAME);
     }
 }
diff --git a/apps/i2psnark/COPYING b/apps/i2psnark/COPYING
index d60c31a97a544b53039088d14fe9114583c0efc3..a0d98f2a621417ad2ae09eea97b10b21f8c9d660 100644
--- a/apps/i2psnark/COPYING
+++ b/apps/i2psnark/COPYING
@@ -1,340 +1 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+See ../../licenses/LICENSE-GPLv2.txt
diff --git a/apps/i2psnark/TODO b/apps/i2psnark/TODO
deleted file mode 100644
index 6f89c0f50749b1a8d3d6ab80fd419d2613448c69..0000000000000000000000000000000000000000
--- a/apps/i2psnark/TODO
+++ /dev/null
@@ -1,24 +0,0 @@
-- I2PSnark:
-  - add multitorrent support by checking the metainfo hash in the
-    PeerAcceptor and feeding it off to the appropriate coordinator
-  - add a web interface
-
-- BEncode
-  - Byte array length indicator can overflow.
-  - Support really big BigNums (only 256 chars allowed now)
-  - Better BEValue toString(). Uses stupid heuristic now for debugging.
-  - Implemented bencoding.
-  - Remove application level hack to calculate sha1 hash for metainfo
-    (But can it be done as efficiently?)
-
-- Storage
-  - Check file name filter.
-
-- TrackerClient
-  - Support undocumented &numwant= request.
-
-- PeerCoordinator
-  - Disconnect from other seeds as soon as you are a seed yourself.
-
-- Text UI
-  - Make it completely silent.
diff --git a/apps/i2psnark/authors.snark b/apps/i2psnark/authors-snark.txt
similarity index 100%
rename from apps/i2psnark/authors.snark
rename to apps/i2psnark/authors-snark.txt
diff --git a/apps/i2psnark/changelog.snark b/apps/i2psnark/changelog-snark.txt
similarity index 100%
rename from apps/i2psnark/changelog.snark
rename to apps/i2psnark/changelog-snark.txt
diff --git a/apps/i2psnark/java/bundle-messages.sh b/apps/i2psnark/java/bundle-messages.sh
index 033e1195b72e20b3c634a6ebaef49cb564b75fd9..7ef207a6d38500f49af9714d76f45326ae3d403b 100755
--- a/apps/i2psnark/java/bundle-messages.sh
+++ b/apps/i2psnark/java/bundle-messages.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="../java/src"
@@ -63,13 +63,13 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean poupdate.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x \
+	                 --keyword=_t --keyword=_x \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/i2psnark/java/src/org/klomp/snark/BitField.java b/apps/i2psnark/java/src/org/klomp/snark/BitField.java
index cb147fb2683f2599fee23071f091f3d21da53f10..f724f71d739d9af362388c0a388f04fd7838e72a 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/BitField.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/BitField.java
@@ -107,6 +107,27 @@ public class BitField
     }
   }
 
+  /**
+   * Sets the given bit to false.
+   *
+   * @exception IndexOutOfBoundsException if bit is smaller then zero
+   * bigger then size (inclusive).
+   * @since 0.9.22
+   */
+  public void clear(int bit)
+  {
+    if (bit < 0 || bit >= size)
+      throw new IndexOutOfBoundsException(Integer.toString(bit));
+    int index = bit/8;
+    int mask = 128 >> (bit % 8);
+    synchronized(this) {
+        if ((bitfield[index] & mask) != 0) {
+            count--;
+            bitfield[index] &= ~mask;
+        }
+    }
+  }
+
   /**
    * Sets all bits to true.
    *
diff --git a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java
index 1835ffe90c0de2a165aaa2e82c2d70df0023e254..53247a69914ba7b43592d2d333763e70cfb0c7ad 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/ExtensionHandler.java
@@ -207,30 +207,31 @@ abstract class ExtensionHandler {
                 if (log.shouldLog(Log.DEBUG))
                     log.debug("Got request for " + piece + " from: " + peer);
                 byte[] pc;
+                int totalSize;
                 synchronized(state) {
                     pc = state.getChunk(piece);
+                    totalSize = state.getSize();
                 }
-                sendPiece(peer, piece, pc);
+                sendPiece(peer, piece, pc, totalSize);
                 // Do this here because PeerConnectionOut only reports for PIECE messages
                 peer.uploaded(pc.length);
                 listener.uploaded(peer, pc.length);
             } else if (type == TYPE_DATA) {
-                int size = map.get("total_size").getInt();
-                if (log.shouldLog(Log.DEBUG))
-                    log.debug("Got data for " + piece + " length " + size + " from: " + peer);
+                // On close reading of BEP 9, this is the total metadata size.
+                // Prior to 0.9.21, we sent the piece size, so we can't count on it.
+                // just ignore it. The actual length will be verified in saveChunk()
+                //int size = map.get("total_size").getInt();
+                //if (log.shouldLog(Log.DEBUG))
+                //    log.debug("Got data for " + piece + " length " + size + " from: " + peer);
                 boolean done;
                 int chk = -1;
                 synchronized(state) {
                     if (state.isComplete())
                         return;
                     int len = is.available();
-                    if (len != size) {
-                        // probably fatal
-                        if (log.shouldLog(Log.WARN))
-                            log.warn("total_size " + size + " but avail data " + len);
-                    }
                     peer.downloaded(len);
                     listener.downloaded(peer, len);
+                    // this checks the size
                     done = state.saveChunk(piece, bs, bs.length - len, len);
                     if (log.shouldLog(Log.INFO))
                         log.info("Got chunk " + piece + " from " + peer);
@@ -293,11 +294,15 @@ abstract class ExtensionHandler {
         }
     }
 
-    private static void sendPiece(Peer peer, int piece, byte[] data) {
+    private static void sendPiece(Peer peer, int piece, byte[] data, int totalSize) {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("msg_type", Integer.valueOf(TYPE_DATA));
         map.put("piece", Integer.valueOf(piece));
-        map.put("total_size", Integer.valueOf(data.length));
+        // BEP 9
+        // "This key has the same semantics as the 'metadata_size' in the extension header"
+        // which apparently means the same value. Fixed in 0.9.21.
+        //map.put("total_size", Integer.valueOf(data.length));
+        map.put("total_size", Integer.valueOf(totalSize));
         byte[] dict = BEncoder.bencode(map);
         byte[] payload = new byte[dict.length + data.length];
         System.arraycopy(dict, 0, payload, 0, dict.length);
diff --git a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
index 85bb97c4d84590625a373970dd49bdaaeab29aa4..96f3804358b911e2186598f75c19b8cf81faa214 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/I2PSnarkUtil.java
@@ -14,6 +14,7 @@ import java.util.Set;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
+import net.i2p.client.I2PClient;
 import net.i2p.client.I2PSession;
 import net.i2p.client.I2PSessionException;
 import net.i2p.client.streaming.I2PServerSocket;
@@ -135,6 +136,7 @@ public class I2PSnarkUtil {
     
     public boolean configured() { return _configured; }
     
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public void setI2CPConfig(String i2cpHost, int i2cpPort, Map opts) {
         if (i2cpHost != null)
             _i2cpHost = i2cpHost;
@@ -255,6 +257,8 @@ public class I2PSnarkUtil {
                 opts.setProperty("i2p.streaming.disableRejectLogging", "true");
             if (opts.getProperty("i2p.streaming.answerPings") == null)
                 opts.setProperty("i2p.streaming.answerPings", "false");
+            if (opts.getProperty(I2PClient.PROP_SIGTYPE) == null)
+                opts.setProperty(I2PClient.PROP_SIGTYPE, "EdDSA_SHA512_Ed25519");
             _manager = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, opts);
             _connecting = false;
         }
@@ -657,7 +661,7 @@ public class I2PSnarkUtil {
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
diff --git a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java
index 543753331b8aa755338228d17715b999f2484956..a40a68f8da6d4674db61ff0b01c282ad24960f6a 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/MetaInfo.java
@@ -74,10 +74,11 @@ public class MetaInfo
    *  @param files null for single-file torrent
    *  @param lengths null for single-file torrent
    *  @param announce_list may be null
+   *  @param created_by may be null
    */
   MetaInfo(String announce, String name, String name_utf8, List<List<String>> files, List<Long> lengths,
            int piece_length, byte[] piece_hashes, long length, boolean privateTorrent,
-           List<List<String>> announce_list)
+           List<List<String>> announce_list, String created_by)
   {
     this.announce = announce;
     this.name = name;
@@ -91,7 +92,7 @@ public class MetaInfo
     this.privateTorrent = privateTorrent;
     this.announce_list = announce_list;
     this.comment = null;
-    this.created_by = null;
+    this.created_by = created_by;
     this.creation_date = I2PAppContext.getGlobalContext().clock().now();
 
     // TODO if we add a parameter for other keys
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java b/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java
index bcf0aefd0b21d36b2e148ac25c97ca9a1bd1a086..6cf35836db84aa60d886c9ddfd1347371b02d41f 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PartialPiece.java
@@ -108,7 +108,8 @@ class PartialPiece implements Comparable<PartialPiece> {
 
     /**
      *  Convert this PartialPiece to a request for the next chunk.
-     *  Used by PeerState only.
+     *  Used by PeerState only. This depends on the downloaded value
+     *  as set by setDownloaded() or read().
      */
 
     public Request getRequest() {
@@ -128,14 +129,16 @@ class PartialPiece implements Comparable<PartialPiece> {
     }
 
     /**
-     *  How many bytes are good - only valid by setDownloaded()
+     *  How many bytes are good - as set by setDownloaded() or read()
      */
     public int getDownloaded() {
          return this.off;
     }
 
     /**
-     *  Call this before returning a PartialPiece to the PeerCoordinator
+     *  Call this if necessary before returning a PartialPiece to the PeerCoordinator.
+     *  We do not use a bitmap to track individual chunks received.
+     *  Any chunks after a 'hole' will be lost.
      *  @since 0.9.1
      */
     public void setDownloaded(int offset) {
@@ -191,11 +194,20 @@ class PartialPiece implements Comparable<PartialPiece> {
     
     /**
      *  Blocking.
+     *  If offset matches the previous downloaded amount
+     *  (as set by a previous call to read() or setDownlaoded()),
+     *  the downloaded amount will be incremented by len.
+     *
      *  @since 0.9.1
      */
-    public void read(DataInputStream din, int off, int len) throws IOException {
+    public void read(DataInputStream din, int offset, int len) throws IOException {
         if (bs != null) {
-            din.readFully(bs, off, len);
+            din.readFully(bs, offset, len);
+            synchronized (this) {
+                // only works for in-order chunks
+                if (this.off == offset)
+                    this.off += len;
+            }
         } else {
             // read in fully before synching on raf
             ByteArray ba;
@@ -211,8 +223,11 @@ class PartialPiece implements Comparable<PartialPiece> {
             synchronized (this) {
                 if (raf == null)
                     createTemp();
-                raf.seek(off);
+                raf.seek(offset);
                 raf.write(tmp);
+                // only works for in-order chunks
+                if (this.off == offset)
+                    this.off += len;
             }
             if (ba != null)
                 _cache.release(ba, false);
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Peer.java b/apps/i2psnark/java/src/org/klomp/snark/Peer.java
index d612ce0275a4d90626abee9d5314a191e3748abe..cba955f691da30bf5f7721485a9488651f1911bf 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Peer.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Peer.java
@@ -297,7 +297,7 @@ public class Peer implements Comparable<Peer>
   
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("Start running the reader with " + toString());
-        // Use this thread for running the incomming connection.
+        // Use this thread for running the incoming connection.
         // The outgoing connection creates its own Thread.
         out.startup();
         Thread.currentThread().setName("Snark reader from " + peerID);
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java
index 430f6c7ae6e6fcaf89b03ae211f30327cc446b0f..c2abf66609a7b9eb778e482a1d8c09fdf4421348 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCheckerTask.java
@@ -267,7 +267,23 @@ class PeerCheckerTask implements Runnable
 
         // close out unused files, but we don't need to do it every time
         Storage storage = coordinator.getStorage();
-        if (storage != null && (_runCount % 4) == 0) {
+        if (storage != null) {
+            // The more files a torrent has, the more often we call the cleaner,
+            // to keep from running out of FDs
+            int files = storage.getFileCount();
+            int skip;
+            if (files == 1)
+                skip = 6;
+            else if (files <= 4)
+                skip = 4;
+            else if (files <= 20)
+                skip = 3;
+            else if (files <= 50)
+                skip = 2;
+            else
+                skip = 1;
+
+            if ((_runCount % skip) == 0)
                 storage.cleanRAFs();
         }
 
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java
index 51272e8a672dbaebfd282e419221d0bf5a5ed941..314b534bce83e82a2bc419d725e5bf0748e03a74 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerConnectionOut.java
@@ -170,6 +170,8 @@ class PeerConnectionOut implements Runnable
                 lastSent = System.currentTimeMillis();
 
                 // Remove all piece messages after sending a choke message.
+                // FiXME this causes REJECT messages to be sent before sending the CHOKE;
+                // BEP 6 recommends sending them after.
                 if (m.type == Message.CHOKE)
                   removeMessage(Message.PIECE);
 
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
index 63da5f29617ddf3ad32fe84257dea64d14577ca2..8daf8b03018cd00ff6a0db9b25087198dcbcea81 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerCoordinator.java
@@ -322,16 +322,22 @@ class PeerCoordinator implements PeerListener
    */
   public long getDownloadRate()
   {
+    if (halted)
+        return 0;
     return getRate(downloaded_old);
   }
 
   public long getUploadRate()
   {
+    if (halted)
+        return 0;
     return getRate(uploaded_old);
   }
 
   public long getCurrentUploadRate()
   {
+    if (halted)
+        return 0;
     // no need to synchronize, only one value
     long r = uploaded_old[0];
     if (r <= 0)
@@ -914,6 +920,7 @@ class PeerCoordinator implements PeerListener
    * Returns a byte array containing the requested piece or null of
    * the piece is unknown.
    *
+   * @return bytes or null for errors such as not having the piece yet
    * @throws RuntimeException on IOE getting the data
    */
   public ByteArray gotRequest(Peer peer, int piece, int off, int len)
@@ -977,8 +984,9 @@ class PeerCoordinator implements PeerListener
     }
     int piece = pp.getPiece();
     
-    synchronized(wantedPieces)
-      {
+    // try/catch outside the synch to avoid deadlock in the catch
+    try {
+      synchronized(wantedPieces) {
         Piece p = new Piece(piece);
         if (!wantedPieces.contains(p))
           {
@@ -994,8 +1002,7 @@ class PeerCoordinator implements PeerListener
             }
           }
         
-        try
-          {
+          // try/catch moved outside of synch
             // this takes forever if complete, as it rechecks
             if (storage.putPiece(pp))
               {
@@ -1004,26 +1011,38 @@ class PeerCoordinator implements PeerListener
               }
             else
               {
+                // so we will try again
+                markUnrequested(peer, piece);
+                // just in case
+                removePartialPiece(piece);
                 // Oops. We didn't actually download this then... :(
                 downloaded.addAndGet(0 - metainfo.getPieceLength(piece));
-                _log.warn("Got BAD piece " + piece + "/" + metainfo.getPieces() + " from " + peer + " for " + metainfo.getName());
+                // Mark this peer as not having the piece. PeerState will update its bitfield.
+                for (Piece pc : wantedPieces) {
+                    if (pc.getId() == piece) {
+                        pc.removePeer(peer);
+                        break;
+                    }
+                }
+                if (_log.shouldWarn())
+                    _log.warn("Got BAD piece " + piece + "/" + metainfo.getPieces() + " from " + peer + " for " + metainfo.getName());
                 return false; // No need to announce BAD piece to peers.
               }
-          }
-        catch (IOException ioe)
-          {
+
+        wantedPieces.remove(p);
+        wantedBytes -= metainfo.getPieceLength(p.getId());
+      }  // synch
+    } catch (IOException ioe) {
             String msg = "Error writing storage (piece " + piece + ") for " + metainfo.getName() + ": " + ioe;
             _log.error(msg, ioe);
             if (listener != null) {
                 listener.addMessage(msg);
                 listener.addMessage("Fatal storage error: Stopping torrent " + metainfo.getName());
             }
+            // deadlock was here
             snark.stopTorrent();
             throw new RuntimeException(msg, ioe);
-          }
-        wantedPieces.remove(p);
-        wantedBytes -= metainfo.getPieceLength(p.getId());
-      }
+    }
 
     // just in case
     removePartialPiece(piece);
@@ -1135,8 +1154,9 @@ class PeerCoordinator implements PeerListener
    *
    *  Also mark the piece unrequested if this peer was the only one.
    *
-   *  @param peer partials, must include the zero-offset (empty) ones too
-   *              No dup pieces, piece.setDownloaded() must be set
+   *  @param peer partials, must include the zero-offset (empty) ones too.
+   *              No dup pieces, piece.setDownloaded() must be set.
+   *              len field in Requests is ignored.
    *  @since 0.8.2
    */
   public void savePartialPieces(Peer peer, List<Request> partials)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java
index cf29c415fbd9b13e8c5d2fe92aa0ec452813298c..23cbe5690784e0b77d6383533d43705bd6963392 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/PeerState.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/PeerState.java
@@ -21,6 +21,7 @@
 package org.klomp.snark;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -238,6 +239,8 @@ class PeerState implements DataLoader
     }
 
     // Sanity check
+    // There is no check here that we actually have the piece;
+    // this will be caught in loadData() below
     if (piece < 0
         || piece >= metainfo.getPieces()
         || begin < 0
@@ -251,6 +254,8 @@ class PeerState implements DataLoader
                       + ", " + begin
                       + ", " + length
                       + "' message from " + peer);
+        if (peer.supportsFast())
+            out.sendReject(piece, begin, length);
         return;
       }
 
@@ -281,7 +286,8 @@ class PeerState implements DataLoader
   /**
    *  This is the callback that PeerConnectionOut calls
    *
-   *  @return bytes or null for errors
+   *  @return bytes or null for errors such as not having the piece yet
+   *  @throws RuntimeException on IOE getting the data
    *  @since 0.8.2
    */
   public ByteArray loadData(int piece, int begin, int length) {
@@ -291,6 +297,8 @@ class PeerState implements DataLoader
         // XXX - Protocol error-> diconnect?
         if (_log.shouldLog(Log.WARN))
           _log.warn("Got request for unknown piece: " + piece);
+        if (peer.supportsFast())
+            out.sendReject(piece, begin, length);
         return null;
       }
 
@@ -303,6 +311,8 @@ class PeerState implements DataLoader
                       + ", " + begin
                       + ", " + length
                       + "' message from " + peer);
+        if (peer.supportsFast())
+            out.sendReject(piece, begin, length);
         return null;
       }
 
@@ -360,6 +370,11 @@ class PeerState implements DataLoader
           {
             if (_log.shouldLog(Log.WARN))
               _log.warn("Got BAD " + req.getPiece() + " from " + peer);
+            synchronized(this) {
+                // so we don't ask again
+                if (bitfield != null)
+                    bitfield.clear(req.getPiece());
+            }
           }
       }
 
@@ -493,7 +508,12 @@ class PeerState implements DataLoader
       for (Integer p : pcs) {
           Request req = getLowestOutstandingRequest(p.intValue());
           if (req != null) {
-              req.getPartialPiece().setDownloaded(req.off);
+              PartialPiece pp = req.getPartialPiece();
+              synchronized(pp) {
+                  int dl = pp.getDownloaded();
+                  if (req.off != dl)
+                      req = new Request(pp, dl, 1);
+              }
               rv.add(req);
           }
       }
@@ -598,6 +618,13 @@ class PeerState implements DataLoader
 
   /**
    *  BEP 6
+   *  If the peer rejects lower chunks but not higher ones, thus creating holes,
+   *  we won't figure it out and the piece will fail, since we don't currently
+   *  keep a chunk bitmap in PartialPiece.
+   *  As long as the peer rejects all the chunks, or rejects only the last chunks,
+   *  no holes are created and we will be fine. The reject messages may be in any order,
+   *  just don't make a hole when it's over.
+   *
    *  @since 0.9.21
    */
   void rejectMessage(int piece, int begin, int length) {
@@ -605,10 +632,34 @@ class PeerState implements DataLoader
            _log.info("Got reject(" + piece + ',' + begin + ',' + length + ") from " + peer);
       out.cancelRequest(piece, begin, length);
       synchronized(this) {
+          Request deletedRequest = null;
+          // for this piece only
+          boolean haveMoreRequests = false;
           for (Iterator<Request> iter = outstandingRequests.iterator(); iter.hasNext(); ) {
               Request req = iter.next();
-              if (req.getPiece() == piece && req.off == begin && req.len == length)
-                  iter.remove();
+              if (req.getPiece() == piece) {
+                  if (req.off == begin && req.len == length) {
+                      iter.remove();
+                      deletedRequest = req;
+                  } else {
+                      haveMoreRequests = true;
+                  }
+              }
+          }
+          if (deletedRequest != null && !haveMoreRequests) {
+              // We must return the piece to the coordinator
+              // Create a new fake request so we can set the offset correctly
+              PartialPiece pp = deletedRequest.getPartialPiece();
+              int downloaded = pp.getDownloaded();
+              Request req;
+              if (deletedRequest.off == downloaded)
+                  req = deletedRequest;
+              else
+                  req = new Request(pp, downloaded, 1);
+              List<Request> pcs = Collections.singletonList(req);
+              listener.savePartialPieces(this.peer, pcs);
+              if (_log.shouldWarn()) 
+                  _log.warn("Returned to coord. w/ offset " + pp.getDownloaded() + " due to reject(" + piece + ',' + begin + ',' + length + ") from " + peer);
           }
           if (lastRequest != null && lastRequest.getPiece() == piece &&
               lastRequest.off == begin && lastRequest.len == length)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Request.java b/apps/i2psnark/java/src/org/klomp/snark/Request.java
index d6a621b1f2c7ec8ecff3e9ae1f3db3f4722b483a..fddbb2b5363cd8f5aaed3d4184f502ad0bcec2dd 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Request.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Request.java
@@ -43,13 +43,13 @@ class Request
    */
   Request(PartialPiece piece, int off, int len)
   {
-    // Sanity check
-    if (off < 0 || len <= 0 || off + len > piece.getLength())
-      throw new IndexOutOfBoundsException("Illegal Request " + toString());
-
     this.piece = piece;
     this.off = off;
     this.len = len;
+
+    // Sanity check
+    if (off < 0 || len <= 0 || off + len > piece.getLength())
+      throw new IndexOutOfBoundsException("Illegal Request " + toString());
   }
 
   /**
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java
index 42b2b792c2ac399b4d736b6b6de205af2ca81ea1..f8dadb627fd51730a8ff3a71504b5f36bc21b707 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java
@@ -617,7 +617,6 @@ public class Snark
    * @since 0.9.1
    */
   public synchronized void stopTorrent(boolean fast) {
-    stopped = true;
     TrackerClient tc = trackerclient;
     if (tc != null)
         tc.halt(fast);
@@ -625,17 +624,28 @@ public class Snark
     if (pc != null)
         pc.halt();
     Storage st = storage;
+    if (!fast)
+        // HACK: Needed a way to distinguish between user-stop and 
+        // shutdown-stop. stopTorrent(true) is in stopAllTorrents().
+        // (#766)
+        stopped = true;
     if (st != null) {
-        boolean changed = storage.isChanged() || getUploaded() != savedUploaded;
+        // TODO: Cache the config-in-mem to compare vs config-on-disk
+        // (needed for auto-save to not double-save in some cases)
+        //boolean changed = storage.isChanged() || getUploaded() != savedUploaded;
+        boolean changed = true;
+        if (changed && completeListener != null)
+            completeListener.updateStatus(this);
         try { 
             storage.close(); 
         } catch (IOException ioe) {
             System.out.println("Error closing " + torrent);
             ioe.printStackTrace();
         }
-        if (changed && completeListener != null)
-            completeListener.updateStatus(this);
     }
+    if (fast)
+        // HACK: See above if(!fast)
+        stopped = true;
     if (pc != null && _peerCoordinatorSet != null)
         _peerCoordinatorSet.remove(pc);
     if (_peerCoordinatorSet == null)
@@ -735,6 +745,18 @@ public class Snark
         return storage != null && storage.isChecking();
     }
 
+    /**
+     *  If checking is in progress, return completion 0.0 ... 1.0,
+     *  else return 1.0.
+     *  @since 0.9.23
+     */
+    public double getCheckingProgress() {
+        if (storage != null && storage.isChecking())
+            return storage.getCheckingProgress();
+        else
+            return 1.0d;
+    }
+
     /**
      *  Disk allocation (ballooning) in progress.
      *  @since 0.9.3
@@ -1254,7 +1276,8 @@ public class Snark
 
   public void setWantedPieces(Storage storage)
   {
-    coordinator.setWantedPieces();
+    if (coordinator != null)
+        coordinator.setWantedPieces();
   }
 
   ///////////// End StorageListener methods
@@ -1263,7 +1286,7 @@ public class Snark
   /** SnarkSnutdown callback unused */
   public void shutdown()
   {
-    // Should not be necessary since all non-deamon threads should
+    // Should not be necessary since all non-daemon threads should
     // have died. But in reality this does not always happen.
     //System.exit(0);
   }
diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
index 62f66f68fcd2986a63b8e8b2a573638590a9cf8c..688cf7e95cb548cabfb3c621ae21a5a4305bf09c 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java
@@ -8,6 +8,7 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.Serializable;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -89,12 +90,19 @@ public class SnarkManager implements CompleteListener {
     public static final String PROP_UPBW_MAX = "i2psnark.upbw.max";
     public static final String PROP_DIR = "i2psnark.dir";
     private static final String PROP_META_PREFIX = "i2psnark.zmeta.";
+    private static final String PROP_META_RUNNING = "running";
     private static final String PROP_META_STAMP = "stamp";
     private static final String PROP_META_BASE = "base";
     private static final String PROP_META_BITFIELD = "bitfield";
     private static final String PROP_META_PRIORITY = "priority";
     private static final String PROP_META_PRESERVE_NAMES = "preserveFileNames";
     private static final String PROP_META_UPLOADED = "uploaded";
+    private static final String PROP_META_ADDED = "added";
+    private static final String PROP_META_COMPLETED = "completed";
+    private static final String PROP_META_MAGNET = "magnet";
+    private static final String PROP_META_MAGNET_DN = "magnet_dn";
+    private static final String PROP_META_MAGNET_TR = "magnet_tr";
+    private static final String PROP_META_MAGNET_DIR = "magnet_dir";
     //private static final String PROP_META_BITFIELD_SUFFIX = ".bitfield";
     //private static final String PROP_META_PRIORITY_SUFFIX = ".priority";
     private static final String PROP_META_MAGNET_PREFIX = "i2psnark.magnet.";
@@ -118,6 +126,7 @@ public class SnarkManager implements CompleteListener {
     public static final String PROP_OPENTRACKERS = "i2psnark.opentrackers";
     public static final String PROP_PRIVATETRACKERS = "i2psnark.privatetrackers";
     private static final String PROP_USE_DHT = "i2psnark.enableDHT";
+    private static final String PROP_SMART_SORT = "i2psnark.smartSort";
 
     public static final int MIN_UP_BW = 10;
     public static final int DEFAULT_MAX_UP_BW = 25;
@@ -332,6 +341,17 @@ public class SnarkManager implements CompleteListener {
     public boolean shouldAutoStart() {
         return Boolean.parseBoolean(_config.getProperty(PROP_AUTO_START, DEFAULT_AUTO_START));
     }
+    
+    /**
+     *  @return default true
+     *  @since 0.9.23
+     */
+    public boolean isSmartSortEnabled() {
+        String val = _config.getProperty(PROP_SMART_SORT);
+        if (val == null)
+            return true;
+        return Boolean.parseBoolean(val);
+    }
 
 /****
     public String linkPrefix() {
@@ -728,19 +748,19 @@ public class SnarkManager implements CompleteListener {
     /**
      *  all params may be null or need trimming
      */
-    public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, String refreshDelay,
+    public void updateConfig(String dataDir, boolean filesPublic, boolean autoStart, boolean smartSort, String refreshDelay,
                              String startDelay, String pageSize, String seedPct, String eepHost, 
                              String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts,
                              String upLimit, String upBW, boolean useOpenTrackers, boolean useDHT, String theme) {
         synchronized(_configLock) {
-            locked_updateConfig(dataDir, filesPublic, autoStart, refreshDelay,
+            locked_updateConfig(dataDir, filesPublic, autoStart, smartSort,refreshDelay,
                                 startDelay,  pageSize,  seedPct,  eepHost, 
                                 eepPort,  i2cpHost,  i2cpPort,  i2cpOpts,
                                 upLimit,  upBW, useOpenTrackers, useDHT,  theme);
         }
     }
 
-    private void locked_updateConfig(String dataDir, boolean filesPublic, boolean autoStart, String refreshDelay,
+    private void locked_updateConfig(String dataDir, boolean filesPublic, boolean autoStart, boolean smartSort, String refreshDelay,
                              String startDelay, String pageSize, String seedPct, String eepHost, 
                              String eepPort, String i2cpHost, String i2cpPort, String i2cpOpts,
                              String upLimit, String upBW, boolean useOpenTrackers, boolean useDHT, String theme) {
@@ -768,9 +788,9 @@ public class SnarkManager implements CompleteListener {
                     _util.setMaxUploaders(limit);
                     changed = true;
                     _config.setProperty(PROP_UPLOADERS_TOTAL, Integer.toString(limit));
-                    addMessage(_("Total uploaders limit changed to {0}", limit));
+                    addMessage(_t("Total uploaders limit changed to {0}", limit));
                 } else {
-                    addMessage(_("Minimum total uploaders limit is {0}", Snark.MIN_TOTAL_UPLOADERS));
+                    addMessage(_t("Minimum total uploaders limit is {0}", Snark.MIN_TOTAL_UPLOADERS));
                 }
             }
         }
@@ -782,9 +802,9 @@ public class SnarkManager implements CompleteListener {
                     _util.setMaxUpBW(limit);
                     changed = true;
                     _config.setProperty(PROP_UPBW_MAX, Integer.toString(limit));
-                    addMessage(_("Up BW limit changed to {0}KBps", limit));
+                    addMessage(_t("Up BW limit changed to {0}KBps", limit));
                 } else {
-                    addMessage(_("Minimum up bandwidth limit is {0}KBps", MIN_UP_BW));
+                    addMessage(_t("Minimum up bandwidth limit is {0}KBps", MIN_UP_BW));
                 }
             }
         }
@@ -796,7 +816,7 @@ public class SnarkManager implements CompleteListener {
                 	    _util.setStartupDelay(minutes);
 	                    changed = true;
         	            _config.setProperty(PROP_STARTUP_DELAY, Integer.toString(minutes));
-                	    addMessage(_("Startup delay changed to {0}", DataHelper.formatDuration2(minutes * (60L * 1000))));
+                	    addMessage(_t("Startup delay changed to {0}", DataHelper.formatDuration2(minutes * (60L * 1000))));
                 }
 	}
 
@@ -807,9 +827,9 @@ public class SnarkManager implements CompleteListener {
 	            changed = true;
 	            _config.setProperty(PROP_REFRESH_DELAY, Integer.toString(secs));
                     if (secs >= 0)
-	                addMessage(_("Refresh time changed to {0}", DataHelper.formatDuration2(secs * 1000)));
+	                addMessage(_t("Refresh time changed to {0}", DataHelper.formatDuration2(secs * 1000)));
 	            else
-	                addMessage(_("Refresh disabled"));
+	                addMessage(_t("Refresh disabled"));
 	        }
 	    } catch (NumberFormatException nfe) {}
 	}
@@ -825,7 +845,7 @@ public class SnarkManager implements CompleteListener {
                     changed = true;
                     pageSize = Integer.toString(size);
                     _config.setProperty(PROP_PAGE_SIZE, pageSize);
-                    addMessage(_("Page size changed to {0}", pageSize));
+                    addMessage(_t("Page size changed to {0}", pageSize));
                 }
             } catch (NumberFormatException nfe) {}
         }
@@ -834,18 +854,18 @@ public class SnarkManager implements CompleteListener {
             dataDir = DataHelper.stripHTML(dataDir.trim());
             File dd = new File(dataDir);
             if (!dd.isAbsolute()) {
-                addMessage(_("Data directory must be an absolute path") + ": " + dataDir);
+                addMessage(_t("Data directory must be an absolute path") + ": " + dataDir);
             } else if (!dd.exists()) {
-                addMessage(_("Data directory does not exist") + ": " + dataDir);
+                addMessage(_t("Data directory does not exist") + ": " + dataDir);
             } else if (!dd.isDirectory()) {
-                addMessage(_("Not a directory") + ": " + dataDir);
+                addMessage(_t("Not a directory") + ": " + dataDir);
             } else if (!dd.canRead()) {
-                addMessage(_("Unreadable") + ": " + dataDir);
+                addMessage(_t("Unreadable") + ": " + dataDir);
             } else {
                 changed = true;
                 interruptMonitor = true;
                 _config.setProperty(PROP_DIR, dataDir);
-                addMessage(_("Data directory changed to {0}", dataDir));
+                addMessage(_t("Data directory changed to {0}", dataDir));
             }
 
         }
@@ -900,37 +920,37 @@ public class SnarkManager implements CompleteListener {
                     p.putAll(opts);
                     _util.setI2CPConfig(i2cpHost, port, p);
                     _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW));
-                    addMessage(_("I2CP and tunnel changes will take effect after stopping all torrents"));
+                    addMessage(_t("I2CP and tunnel changes will take effect after stopping all torrents"));
                 } else if (!reconnect) {
                     // The usual case, the other two are if not in router context
                     _config.setProperty(PROP_I2CP_OPTS, i2cpOpts.trim());
-                    addMessage(_("I2CP options changed to {0}", i2cpOpts));
+                    addMessage(_t("I2CP options changed to {0}", i2cpOpts));
                     _util.setI2CPConfig(oldI2CPHost, oldI2CPPort, opts);
                 } else {
                     // Won't happen, I2CP host/port, are hidden in the GUI if in router context
                     if (_util.connected()) {
                         _util.disconnect();
-                        addMessage(_("Disconnecting old I2CP destination"));
+                        addMessage(_t("Disconnecting old I2CP destination"));
                     }
-                    addMessage(_("I2CP settings changed to {0}", i2cpHost + ':' + port + ' ' + i2cpOpts));
+                    addMessage(_t("I2CP settings changed to {0}", i2cpHost + ':' + port + ' ' + i2cpOpts));
                     _util.setI2CPConfig(i2cpHost, port, opts);
                     _util.setMaxUpBW(getInt(PROP_UPBW_MAX, DEFAULT_MAX_UP_BW));
                     boolean ok = _util.connect();
                     if (!ok) {
-                        addMessage(_("Unable to connect with the new settings, reverting to the old I2CP settings"));
+                        addMessage(_t("Unable to connect with the new settings, reverting to the old I2CP settings"));
                         _util.setI2CPConfig(oldI2CPHost, oldI2CPPort, oldOpts);
                         ok = _util.connect();
                         if (!ok)
-                            addMessage(_("Unable to reconnect with the old settings!"));
+                            addMessage(_t("Unable to reconnect with the old settings!"));
                     } else {
-                        addMessage(_("Reconnected on the new I2CP destination"));
+                        addMessage(_t("Reconnected on the new I2CP destination"));
                         _config.setProperty(PROP_I2CP_HOST, i2cpHost.trim());
                         _config.setProperty(PROP_I2CP_PORT, "" + port);
                         _config.setProperty(PROP_I2CP_OPTS, i2cpOpts.trim());
                         // no PeerAcceptors/I2PServerSockets to deal with, since all snarks are inactive
                         for (Snark snark : _snarks.values()) {
                             if (snark.restartAcceptor()) {
-                                addMessage(_("I2CP listener restarted for \"{0}\"", snark.getBaseName()));
+                                addMessage(_t("I2CP listener restarted for \"{0}\"", snark.getBaseName()));
                                 // this is the common ConnectionAcceptor, so we only need to do it once
                                 break;
                             }
@@ -944,44 +964,54 @@ public class SnarkManager implements CompleteListener {
             _config.setProperty(PROP_FILES_PUBLIC, Boolean.toString(filesPublic));
             _util.setFilesPublic(filesPublic);
             if (filesPublic)
-                addMessage(_("New files will be publicly readable"));
+                addMessage(_t("New files will be publicly readable"));
             else
-                addMessage(_("New files will not be publicly readable"));
+                addMessage(_t("New files will not be publicly readable"));
             changed = true;
         }
 
         if (shouldAutoStart() != autoStart) {
             _config.setProperty(PROP_AUTO_START, Boolean.toString(autoStart));
             if (autoStart)
-                addMessage(_("Enabled autostart"));
+                addMessage(_t("Enabled autostart"));
+            else
+                addMessage(_t("Disabled autostart"));
+            changed = true;
+        }
+
+        if (isSmartSortEnabled() != smartSort) {
+            _config.setProperty(PROP_SMART_SORT, Boolean.toString(smartSort));
+            if (smartSort)
+                addMessage(_t("Enabled smart sort"));
             else
-                addMessage(_("Disabled autostart"));
+                addMessage(_t("Disabled smart sort"));
             changed = true;
         }
+
         if (_util.shouldUseOpenTrackers() != useOpenTrackers) {
             _config.setProperty(PROP_USE_OPENTRACKERS, useOpenTrackers + "");
             if (useOpenTrackers)
-                addMessage(_("Enabled open trackers - torrent restart required to take effect."));
+                addMessage(_t("Enabled open trackers - torrent restart required to take effect."));
             else
-                addMessage(_("Disabled open trackers - torrent restart required to take effect."));
+                addMessage(_t("Disabled open trackers - torrent restart required to take effect."));
             _util.setUseOpenTrackers(useOpenTrackers);
             changed = true;
         }
         if (_util.shouldUseDHT() != useDHT) {
             _config.setProperty(PROP_USE_DHT, Boolean.toString(useDHT));
             if (useDHT)
-                addMessage(_("Enabled DHT."));
+                addMessage(_t("Enabled DHT."));
             else
-                addMessage(_("Disabled DHT."));
+                addMessage(_t("Disabled DHT."));
             if (_util.connected())
-                addMessage(_("DHT change requires tunnel shutdown and reopen"));
+                addMessage(_t("DHT change requires tunnel shutdown and reopen"));
             _util.setUseDHT(useDHT);
             changed = true;
         }
         if (theme != null) {
             if(!theme.equals(_config.getProperty(PROP_THEME))) {
                 _config.setProperty(PROP_THEME, theme);
-                addMessage(_("{0} theme loaded, return to main i2psnark page to view.", theme));
+                addMessage(_t("{0} theme loaded, return to main i2psnark page to view.", theme));
                 changed = true;
             }
         }
@@ -991,7 +1021,7 @@ public class SnarkManager implements CompleteListener {
                 // Data dir changed. this will stop and remove all old torrents, and add the new ones
                 _monitor.interrupt();
         } else {
-            addMessage(_("Configuration unchanged."));
+            addMessage(_t("Configuration unchanged."));
         }
     }
     
@@ -1023,7 +1053,7 @@ public class SnarkManager implements CompleteListener {
         if (ot == null)
             ot = getListConfig(PROP_OPENTRACKERS, DEFAULT_OPENTRACKERS);
         _util.setOpenTrackers(ot);
-        addMessage(_("Open Tracker list changed - torrent restart required to take effect."));
+        addMessage(_t("Open Tracker list changed - torrent restart required to take effect."));
         saveConfig();
     }
 
@@ -1033,7 +1063,7 @@ public class SnarkManager implements CompleteListener {
      */
     public void savePrivateTrackers(List<String> pt) {
         setListConfig(PROP_PRIVATETRACKERS, pt);
-        addMessage(_("Private tracker list changed - affects newly created torrents only."));
+        addMessage(_t("Private tracker list changed - affects newly created torrents only."));
         saveConfig();
     }
 
@@ -1079,12 +1109,12 @@ public class SnarkManager implements CompleteListener {
                 DataHelper.storeProps(_config, _configFile);
             }
         } catch (IOException ioe) {
-            addMessage(_("Unable to save the config to {0}", _configFile.getAbsolutePath()));
+            addMessage(_t("Unable to save the config to {0}", _configFile.getAbsolutePath()));
         }
     }
     
     /** hardcoded for sanity.  perhaps this should be customizable, for people who increase their ulimit, etc. */
-    public static final int MAX_FILES_PER_TORRENT = 512;
+    public static final int MAX_FILES_PER_TORRENT = 999;
     
     /**
      *  Set of canonical .torrent filenames that we are dealing with.
@@ -1160,10 +1190,10 @@ public class SnarkManager implements CompleteListener {
      */
     private void addTorrent(String filename, File baseFile, boolean dontAutoStart, File dataDir) {
         if ((!dontAutoStart) && !_util.connected()) {
-            addMessage(_("Connecting to I2P"));
+            addMessage(_t("Connecting to I2P"));
             boolean ok = _util.connect();
             if (!ok) {
-                addMessage(_("Error connecting to I2P - check your I2CP settings!"));
+                addMessage(_t("Error connecting to I2P - check your I2CP settings!"));
                 return;
             }
         }
@@ -1172,7 +1202,7 @@ public class SnarkManager implements CompleteListener {
             filename = sfile.getCanonicalPath();
         } catch (IOException ioe) {
             _log.error("Unable to add the torrent " + filename, ioe);
-            addMessage(_("Error: Could not add the torrent {0}", filename) + ": " + ioe);
+            addMessage(_t("Error: Could not add the torrent {0}", filename) + ": " + ioe);
             return;
         }
         if (dataDir == null)
@@ -1195,7 +1225,7 @@ public class SnarkManager implements CompleteListener {
                     fis = new FileInputStream(sfile);
                 } catch (IOException ioe) {
                     // catch this here so we don't try do delete it below
-                    addMessage(_("Cannot open \"{0}\"", sfile.getName()) + ": " + ioe.getMessage());
+                    addMessage(_t("Cannot open \"{0}\"", sfile.getName()) + ": " + ioe.getMessage());
                     return;
                 }
 
@@ -1214,53 +1244,59 @@ public class SnarkManager implements CompleteListener {
                     Snark snark = getTorrentByInfoHash(info.getInfoHash());
                     if (snark != null) {
                         // TODO - if the existing one is a magnet, delete it and add the metainfo instead?
-                        addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName()));
+                        addMessage(_t("Torrent with this info hash is already running: {0}", snark.getBaseName()));
                         return;
                     }
 
                     if (!TrackerClient.isValidAnnounce(info.getAnnounce())) {
                         if (info.isPrivate()) {
-                            addMessage(_("ERROR - No I2P trackers in private torrent \"{0}\"", info.getName()));
+                            addMessage(_t("ERROR - No I2P trackers in private torrent \"{0}\"", info.getName()));
                         } else if (!_util.getOpenTrackers().isEmpty()) {
-                            addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
-                            //addMessage(_("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only.", info.getName()));
+                            addMessage(_t("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and DHT only.", info.getName()));
+                            //addMessage(_t("Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers only.", info.getName()));
                         } else if (_util.shouldUseDHT()) {
-                            addMessage(_("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName()));
+                            addMessage(_t("Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will announce to DHT only.", info.getName()));
                         } else {
-                            addMessage(_("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
-                            //addMessage(_("Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent.", info.getName()));
+                            addMessage(_t("Warning - No I2P trackers in \"{0}\", and DHT and open trackers are disabled, you should enable open trackers or DHT before starting the torrent.", info.getName()));
+                            //addMessage(_t("Warning - No I2P Trackers found in \"{0}\". Make sure Open Tracker is enabled before starting this torrent.", info.getName()));
                             dontAutoStart = true;
                         }
                     }
                     String rejectMessage = validateTorrent(info);
                     if (rejectMessage != null) {
-                        sfile.delete();
-                        addMessage(rejectMessage);
-                        return;
-                    } else {
-                        // TODO load saved closest DHT nodes and pass to the Snark ?
-                        // This may take a LONG time
-                        if (baseFile == null)
-                            baseFile = getSavedBaseFile(info.getInfoHash());
-                        if (_log.shouldLog(Log.INFO))
-                            _log.info("New Snark, torrent: " + filename + " base: " + baseFile);
-                        torrent = new Snark(_util, filename, null, -1, null, null, this,
-                                            _peerCoordinatorSet, _connectionAcceptor,
-                                            false, dataDir.getPath(), baseFile);
-                        loadSavedFilePriorities(torrent);
-                        synchronized (_snarks) {
-                            _snarks.put(filename, torrent);
-                        }
+                        throw new IOException(rejectMessage);
+                    }
+
+                    // TODO load saved closest DHT nodes and pass to the Snark ?
+                    // This may take a LONG time
+                    if (baseFile == null)
+                        baseFile = getSavedBaseFile(info.getInfoHash());
+                    if (_log.shouldLog(Log.INFO))
+                        _log.info("New Snark, torrent: " + filename + " base: " + baseFile);
+                    torrent = new Snark(_util, filename, null, -1, null, null, this,
+                                        _peerCoordinatorSet, _connectionAcceptor,
+                                        shouldAutoStart(), dataDir.getPath(), baseFile);
+                    loadSavedFilePriorities(torrent);
+                    synchronized (_snarks) {
+                        _snarks.put(filename, torrent);
                     }
                 } catch (IOException ioe) {
-                    String err = _("Torrent in \"{0}\" is invalid", sfile.getName()) + ": " + ioe.getMessage();
+                    // close before rename/delete for windows
+                    if (fis != null) try { fis.close(); fis = null; } catch (IOException ioe2) {}
+                    String err = _t("Torrent in \"{0}\" is invalid", sfile.toString()) + ": " + ioe.getMessage();
                     addMessage(err);
                     _log.error(err, ioe);
-                    if (sfile.exists())
-                        sfile.delete();
+                    File rename = new File(filename + ".BAD");
+                    if (rename.exists()) {
+                        if (sfile.delete())
+                            addMessage(_t("Torrent file deleted: {0}", sfile.toString()));
+                    } else {
+                        if (FileUtil.rename(sfile, rename))
+                            addMessage(_t("Torrent file moved from {0} to {1}", sfile.toString(), rename.toString()));
+                    }
                     return;
                 } catch (OutOfMemoryError oom) {
-                    addMessage(_("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getMessage());
+                    addMessage(_t("ERROR - Out of memory, cannot create torrent from {0}", sfile.getName()) + ": " + oom.getMessage());
                     return;
                 } finally {
                     if (fis != null) try { fis.close(); } catch (IOException ioe) {}
@@ -1270,11 +1306,21 @@ public class SnarkManager implements CompleteListener {
             return;
         }
         // ok, snark created, now lets start it up or configure it further
-        if (!dontAutoStart && shouldAutoStart()) {
+        Properties config = getConfig(torrent);
+        boolean running;
+        String  prop = config.getProperty(PROP_META_RUNNING);
+        if(prop == null || Boolean.parseBoolean(prop)) {
+            running = true;
+        } else {
+            running = false;
+        }
+        // Were we running last time?
+        String link = linkify(torrent);
+        if (!dontAutoStart && shouldAutoStart() && running) {
             torrent.startTorrent();
-            addMessage(_("Torrent added and started: \"{0}\"", torrent.getBaseName()));
+            addMessageNoEscape(_t("Torrent added and started: {0}", link));
         } else {
-            addMessage(_("Torrent added: \"{0}\"", torrent.getBaseName()));
+            addMessageNoEscape(_t("Torrent added: {0}", link));
         }
     }
     
@@ -1339,28 +1385,28 @@ public class SnarkManager implements CompleteListener {
         synchronized (_snarks) {
             Snark snark = getTorrentByInfoHash(ih);
             if (snark != null) {
-                addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName()));
+                addMessage(_t("Torrent with this info hash is already running: {0}", snark.getBaseName()));
                 return null;
             }
             // Tell the dir monitor not to delete us
             _magnets.add(name);
             if (updateStatus)
-                saveMagnetStatus(ih);
+                saveMagnetStatus(ih, dirPath, trackerURL, name);
             _snarks.put(name, torrent);
         }
         if (autoStart) {
             startTorrent(ih);
-            addMessage(_("Fetching {0}", name));
+            addMessage(_t("Fetching {0}", name));
             DHT dht = _util.getDHT();
             boolean shouldWarn = _util.connected() &&
                                  _util.getOpenTrackers().isEmpty() &&
                                  ((!_util.shouldUseDHT()) || dht == null || dht.size() <= 0);
             if (shouldWarn) {
-                addMessage(_("Open trackers are disabled and we have no DHT peers. " +
+                addMessage(_t("Open trackers are disabled and we have no DHT peers. " +
                              "Fetch of {0} may not succeed until you start another torrent, enable open trackers, or enable DHT.", name));
             }
         } else {
-            addMessage(_("Adding {0}", name));
+            addMessage(_t("Adding {0}", name));
         }
         return torrent;
     }
@@ -1393,7 +1439,7 @@ public class SnarkManager implements CompleteListener {
         synchronized (_snarks) {
             Snark snark = getTorrentByInfoHash(torrent.getInfoHash());
             if (snark != null) {
-                addMessage(_("Download already running: {0}", snark.getBaseName()));
+                addMessage(_t("Download already running: {0}", snark.getBaseName()));
                 return;
             }
             String name = torrent.getName();
@@ -1427,17 +1473,18 @@ public class SnarkManager implements CompleteListener {
         synchronized (_snarks) {
             Snark snark = getTorrentByInfoHash(metainfo.getInfoHash());
             if (snark != null) {
-                addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName()));
+                addMessage(_t("Torrent with this info hash is already running: {0}", snark.getBaseName()));
                 return false;
+            } else {
+                saveTorrentStatus(metainfo, bitfield, null, baseFile, true, 0, true); // no file priorities
             }
-            // so addTorrent won't recheck
-            saveTorrentStatus(metainfo, bitfield, null, baseFile, true, 0); // no file priorities
+            // so addTorrent won't recheck            
             try {
                 locked_writeMetaInfo(metainfo, filename, areFilesPublic());
                 // hold the lock for a long time
                 addTorrent(filename, baseFile, dontAutoStart);
             } catch (IOException ioe) {
-                addMessage(_("Failed to copy torrent file to {0}", filename));
+                addMessage(_t("Failed to copy torrent file to {0}", filename));
                 _log.error("Failed to write torrent file", ioe);
                 return false;
             }
@@ -1463,7 +1510,7 @@ public class SnarkManager implements CompleteListener {
         synchronized (_snarks) {
             boolean success = FileUtil.copy(fromfile.getAbsolutePath(), filename, false);
             if (!success) {
-                addMessage(_("Failed to copy torrent file to {0}", filename));
+                addMessage(_t("Failed to copy torrent file to {0}", filename));
                 _log.error("Failed to write torrent file to " + filename);
                 return;
             }
@@ -1612,6 +1659,25 @@ public class SnarkManager implements CompleteListener {
         }
         return 0;
     }
+
+    /**
+     * Get setting for a torrent from the config file.
+     * @return non-null, rv[0] is added time or 0; rv[1] is completed time or 0
+     * @since 0.9.23
+     */
+    public long[] getSavedAddedAndCompleted(Snark snark) {
+        long[] rv = new long[2];
+        Properties config = getConfig(snark);
+        if (config != null) {
+            try {
+                rv[0] = Long.parseLong(config.getProperty(PROP_META_ADDED));
+            } catch (NumberFormatException nfe) {}
+            try {
+                rv[1] = Long.parseLong(config.getProperty(PROP_META_COMPLETED));
+            } catch (NumberFormatException nfe) {}
+        }
+        return rv;
+    }
     
     /**
      * Save the completion status of a torrent and other data in the config file
@@ -1626,7 +1692,7 @@ public class SnarkManager implements CompleteListener {
             return;
         saveTorrentStatus(meta, storage.getBitField(), storage.getFilePriorities(),
                           storage.getBase(), storage.getPreserveFileNames(),
-                          snark.getUploaded());
+                          snark.getUploaded(), snark.isStopped());
     }
 
     /**
@@ -1636,32 +1702,41 @@ public class SnarkManager implements CompleteListener {
      * The status is either a bitfield converted to Base64 or "." for a completed
      * torrent to save space in the config file and in memory.
      *
+     * @param metainfo non-null
      * @param bitfield non-null
      * @param priorities may be null
      * @param base may be null
      */
     private void saveTorrentStatus(MetaInfo metainfo, BitField bitfield, int[] priorities,
-                                   File base, boolean preserveNames, long uploaded) {
+                                   File base, boolean preserveNames, long uploaded, boolean stopped) {
         synchronized (_configLock) {
-            locked_saveTorrentStatus(metainfo, bitfield, priorities, base, preserveNames, uploaded);
+            locked_saveTorrentStatus(metainfo, bitfield, priorities, base, preserveNames, uploaded, stopped);
         }
     }
 
     private void locked_saveTorrentStatus(MetaInfo metainfo, BitField bitfield, int[] priorities,
-                                          File base, boolean preserveNames, long uploaded) {
+                                          File base, boolean preserveNames, long uploaded, boolean stopped) {
         byte[] ih = metainfo.getInfoHash();
+        Properties config = getConfig(ih);
+        String now = Long.toString(System.currentTimeMillis());
+        config.setProperty(PROP_META_STAMP, now);
+        if (config.getProperty(PROP_META_ADDED) == null)
+            config.setProperty(PROP_META_ADDED, now);
         String bfs;
         if (bitfield.complete()) {
           bfs = ".";
+          if (config.getProperty(PROP_META_COMPLETED) == null)
+              config.setProperty(PROP_META_COMPLETED, now);
         } else {
           byte[] bf = bitfield.getFieldBytes();
           bfs = Base64.encode(bf);
+          config.remove(PROP_META_COMPLETED);
         }
-        Properties config = getConfig(ih);
-        config.setProperty(PROP_META_STAMP, Long.toString(System.currentTimeMillis()));
         config.setProperty(PROP_META_BITFIELD, bfs);
         config.setProperty(PROP_META_PRESERVE_NAMES, Boolean.toString(preserveNames));
         config.setProperty(PROP_META_UPLOADED, Long.toString(uploaded));
+        boolean running = !stopped;
+        config.setProperty(PROP_META_RUNNING, Boolean.toString(running));
         if (base != null)
             config.setProperty(PROP_META_BASE, base.getAbsolutePath());
 
@@ -1690,15 +1765,28 @@ public class SnarkManager implements CompleteListener {
         } else {
             config.remove(PROP_META_PRIORITY);
         }
+        // magnet properties, no longer apply, we have the metainfo
+        config.remove(PROP_META_MAGNET);
+        config.remove(PROP_META_MAGNET_DIR);
+        config.remove(PROP_META_MAGNET_DN);
+        config.remove(PROP_META_MAGNET_TR);
 
         // TODO save closest DHT nodes too
+        locked_saveTorrentStatus(ih, config);
+    }
 
+    /**
+     *  @since 0.9.23
+     */
+    private void locked_saveTorrentStatus(byte[] ih, Properties config) {
         File conf = configFile(_configDir, ih);
         File subdir = conf.getParentFile();
         if (!subdir.exists())
             subdir.mkdirs();
         try {
             DataHelper.storeProps(config, conf);
+            if (_log.shouldInfo())
+                _log.info("Saved config to " + conf);
         } catch (IOException ioe) {
             _log.error("Unable to save the config to " + conf);
         }
@@ -1738,7 +1826,7 @@ public class SnarkManager implements CompleteListener {
         int totalDeleted = 0;
         synchronized (_snarks) {
             for (Snark snark : _snarks.values()) {
-                torrents.add(new SHA1Hash(snark.getMetaInfo().getInfoHash()));
+                torrents.add(new SHA1Hash(snark.getInfoHash()));
             }
             synchronized (_configLock) {
                 for (int i = 0; i < B64.length(); i++) {
@@ -1783,14 +1871,38 @@ public class SnarkManager implements CompleteListener {
     }
     
     /**
-     *  Just remember we have it
+     *  Just remember we have it.
+     *  This used to simply store a line in the config file,
+     *  but now we also save it in its own config file,
+     *  just like other torrents, so we can remember the directory, tracker, etc.
+     *
+     *  @param dir may be null
+     *  @param trackerURL may be null
+     *  @param dn may be null
      *  @since 0.8.4
      */
-    public void saveMagnetStatus(byte[] ih) {
+    public void saveMagnetStatus(byte[] ih, String dir, String trackerURL, String dn) {
+        // i2psnark.config file
         String infohash = Base64.encode(ih);
         infohash = infohash.replace('=', '$');
         _config.setProperty(PROP_META_MAGNET_PREFIX + infohash, ".");
-        saveConfig();
+        // its own config file
+        Properties config = new OrderedProperties();
+        config.setProperty(PROP_META_MAGNET, "true");
+        if (dir != null)
+            config.setProperty(PROP_META_MAGNET_DIR, dir);
+        if (trackerURL != null)
+            config.setProperty(PROP_META_MAGNET_TR, trackerURL);
+        if (dn != null)
+            config.setProperty(PROP_META_MAGNET_DN, dn);
+        String now = Long.toString(System.currentTimeMillis());
+        config.setProperty(PROP_META_ADDED, now);
+        config.setProperty(PROP_META_STAMP, now);
+        // save
+        synchronized (_configLock) {
+            saveConfig();
+            locked_saveTorrentStatus(ih, config);
+        }
     }
     
     /**
@@ -1800,8 +1912,8 @@ public class SnarkManager implements CompleteListener {
     public void removeMagnetStatus(byte[] ih) {
         String infohash = Base64.encode(ih);
         infohash = infohash.replace('=', '$');
-        _config.remove(PROP_META_MAGNET_PREFIX + infohash);
-        saveConfig();
+        if (_config.remove(PROP_META_MAGNET_PREFIX + infohash) != null)
+            saveConfig();
     }
     
     /**
@@ -1812,18 +1924,18 @@ public class SnarkManager implements CompleteListener {
     private String validateTorrent(MetaInfo info) {
         List<List<String>> files = info.getFiles();
         if ( (files != null) && (files.size() > MAX_FILES_PER_TORRENT) ) {
-            return _("Too many files in \"{0}\" ({1}), deleting it!", info.getName(), files.size());
+            return _t("Too many files in \"{0}\" ({1})!", info.getName(), files.size());
         } else if ( (files == null) && (info.getName().endsWith(".torrent")) ) {
-            return _("Torrent file \"{0}\" cannot end in \".torrent\", deleting it!", info.getName());
+            return _t("Torrent file \"{0}\" cannot end in \".torrent\"!", info.getName());
         } else if (info.getPieces() <= 0) {
-            return _("No pieces in \"{0}\",  deleting it!", info.getName());
+            return _t("No pieces in \"{0}\"!", info.getName());
         } else if (info.getPieces() > Storage.MAX_PIECES) {
-            return _("Too many pieces in \"{0}\", limit is {1}, deleting it!", info.getName(), Storage.MAX_PIECES);
+            return _t("Too many pieces in \"{0}\", limit is {1}!", info.getName(), Storage.MAX_PIECES);
         } else if (info.getPieceLength(0) > Storage.MAX_PIECE_SIZE) {
-            return _("Pieces are too large in \"{0}\" ({1}B), deleting it.", info.getName(), DataHelper.formatSize2(info.getPieceLength(0))) + ' ' +
-                   _("Limit is {0}B", DataHelper.formatSize2(Storage.MAX_PIECE_SIZE));
+            return _t("Pieces are too large in \"{0}\" ({1}B)!", info.getName(), DataHelper.formatSize2(info.getPieceLength(0))) + ' ' +
+                   _t("Limit is {0}B", DataHelper.formatSize2(Storage.MAX_PIECE_SIZE));
         } else if (info.getTotalLength() <= 0) {
-            return _("Torrent \"{0}\" has no data, deleting it!", info.getName());
+            return _t("Torrent \"{0}\" has no data!", info.getName());
         } else if (info.getTotalLength() > Storage.MAX_TOTAL_SIZE) {
             System.out.println("torrent info: " + info.toString());
             List<Long> lengths = info.getLengths();
@@ -1831,7 +1943,7 @@ public class SnarkManager implements CompleteListener {
                 for (int i = 0; i < lengths.size(); i++)
                     System.out.println("File " + i + " is " + lengths.get(i) + " long.");
             
-            return _("Torrents larger than {0}B are not supported yet, deleting \"{1}\"", Storage.MAX_TOTAL_SIZE, info.getName());
+            return _t("Torrents larger than {0}B are not supported yet \"{1}\"!", Storage.MAX_TOTAL_SIZE, info.getName());
         } else {
             // ok
             return null;
@@ -1848,7 +1960,7 @@ public class SnarkManager implements CompleteListener {
             filename = sfile.getCanonicalPath();
         } catch (IOException ioe) {
             _log.error("Unable to remove the torrent " + filename, ioe);
-            addMessage(_("Error: Could not remove the torrent {0}", filename) + ": " + ioe.getMessage());
+            addMessage(_t("Error: Could not remove the torrent {0}", filename) + ": " + ioe.getMessage());
             return null;
         }
         int remaining = 0;
@@ -1871,7 +1983,7 @@ public class SnarkManager implements CompleteListener {
             if (shouldRemove)
                 removeTorrentStatus(torrent);
             if (!wasStopped)
-                addMessage(_("Torrent stopped: \"{0}\"", torrent.getBaseName()));
+                addMessageNoEscape(_t("Torrent stopped: {0}", linkify(torrent)));
         }
         return torrent;
     }
@@ -1890,7 +2002,7 @@ public class SnarkManager implements CompleteListener {
         boolean wasStopped = torrent.isStopped();
         torrent.stopTorrent();
         if (!wasStopped)
-            addMessage(_("Torrent stopped: \"{0}\"", torrent.getBaseName()));
+            addMessageNoEscape(_t("Torrent stopped: {0}", linkify(torrent)));
         if (shouldRemove)
             removeTorrentStatus(torrent);
     }
@@ -1910,7 +2022,7 @@ public class SnarkManager implements CompleteListener {
             File torrentFile = new File(filename);
             torrentFile.delete();
         }
-        addMessage(_("Torrent removed: \"{0}\"", torrent.getBaseName()));
+        addMessage(_t("Torrent removed: \"{0}\"", torrent.getBaseName()));
     }
     
     private class DirMonitor implements Runnable {
@@ -1918,7 +2030,7 @@ public class SnarkManager implements CompleteListener {
             // don't bother delaying if auto start is false
             long delay = (60L * 1000) * getStartupDelayMinutes();
             if (delay > 0 && shouldAutoStart()) {
-                addMessage(_("Adding torrents in {0}", DataHelper.formatDuration2(delay)));
+                addMessage(_t("Adding torrents in {0}", DataHelper.formatDuration2(delay)));
                 try { Thread.sleep(delay); } catch (InterruptedException ie) {}
                 // Remove that first message
                 if (_messages.size() == 1)
@@ -1933,13 +2045,15 @@ public class SnarkManager implements CompleteListener {
                 File dir = getDataDir();
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug("Directory Monitor loop over " + dir.getAbsolutePath());
+                boolean ok;
                 try {
                     // Don't let this interfere with .torrent files being added or deleted
                     synchronized (_snarks) {
-                        monitorTorrents(dir);
+                        ok = monitorTorrents(dir);
                     }
                 } catch (Exception e) {
                     _log.error("Error in the DirectoryMonitor", e);
+                    ok = false;
                 }
                 if (doMagnets) {
                     // first run only
@@ -1950,10 +2064,14 @@ public class SnarkManager implements CompleteListener {
                         _log.error("Error in the DirectoryMonitor", e);
                     }
                     if (!_snarks.isEmpty())
-                        addMessage(_("Up bandwidth limit is {0} KBps", _util.getMaxUpBW()));
+                        addMessage(_t("Up bandwidth limit is {0} KBps", _util.getMaxUpBW()));
                     // To fix bug where files were left behind,
                     // but also good for when user removes snarks when i2p is not running
-                    cleanupTorrentStatus();
+                    // Don't run if there was an error, as we would delete the torrent config
+                    // file(s) and we don't want to do that. We'll do the cleanup the next
+                    // time i2psnark starts. See ticket #1658.
+                    if (ok)
+                        cleanupTorrentStatus();
                 }
                 try { Thread.sleep(60*1000); } catch (InterruptedException ie) {}
             }
@@ -1970,14 +2088,8 @@ public class SnarkManager implements CompleteListener {
         Storage storage = snark.getStorage();
         if (meta == null || storage == null)
             return;
-        StringBuilder buf = new StringBuilder(256);
-        String base = DataHelper.escapeHTML(storage.getBaseName());
-        buf.append("<a href=\"").append(_contextPath).append('/').append(base);
-        if (meta.getFiles() != null)
-            buf.append('/');
-        buf.append("\">").append(base).append("</a>");
         if (snark.getDownloaded() > 0)
-            addMessageNoEscape(_("Download finished: {0}", buf.toString())); //  + " (" + _("size: {0}B", DataHelper.formatSize2(len)) + ')');
+            addMessageNoEscape(_t("Download finished: {0}", linkify(snark)));
         updateStatus(snark);
     }
     
@@ -1989,7 +2101,8 @@ public class SnarkManager implements CompleteListener {
         Storage storage = snark.getStorage();
         if (meta != null && storage != null)
             saveTorrentStatus(meta, storage.getBitField(), storage.getFilePriorities(),
-                              storage.getBase(), storage.getPreserveFileNames(), snark.getUploaded());
+                              storage.getBase(), storage.getPreserveFileNames(), snark.getUploaded(), 
+                              snark.isStopped());
     }
     
     /**
@@ -2012,7 +2125,8 @@ public class SnarkManager implements CompleteListener {
                 return null;
             }
             saveTorrentStatus(meta, storage.getBitField(), null,
-                              storage.getBase(), storage.getPreserveFileNames(), 0);
+                              storage.getBase(), storage.getPreserveFileNames(), 0, 
+                              snark.isStopped());
             // temp for addMessage() in case canonical throws
             String name = storage.getBaseName();
             try {
@@ -2030,11 +2144,11 @@ public class SnarkManager implements CompleteListener {
                 }
                 _magnets.remove(snark.getName());
                 removeMagnetStatus(snark.getInfoHash());
-                addMessage(_("Metainfo received for {0}", snark.getName()));
-                addMessage(_("Starting up torrent {0}", storage.getBaseName()));
+                addMessage(_t("Metainfo received for {0}", snark.getName()));
+                addMessageNoEscape(_t("Starting up torrent {0}", linkify(snark)));
                 return name;
             } catch (IOException ioe) {
-                addMessage(_("Failed to copy torrent file to {0}", name));
+                addMessage(_t("Failed to copy torrent file to {0}", name));
                 _log.error("Failed to write torrent file", ioe);
             }
         }
@@ -2046,7 +2160,7 @@ public class SnarkManager implements CompleteListener {
      * @since 0.9
      */
     public void fatal(Snark snark, String error) {
-        addMessage(_("Error on torrent {0}", snark.getName()) + ": " + error);
+        addMessage(_t("Error on torrent {0}", snark.getName()) + ": " + error);
     }
     
     /**
@@ -2065,29 +2179,67 @@ public class SnarkManager implements CompleteListener {
 
     // End Snark.CompleteListeners
 
+    /**
+     * An HTML link to the file if complete and a single file,
+     * to the directory if not complete or not a single file,
+     * or simply the unlinkified name of the snark if a magnet
+     *
+     * @since 0.9.23
+     */
+    private String linkify(Snark snark) {
+        MetaInfo meta = snark.getMetaInfo();
+        Storage storage = snark.getStorage();
+        if (meta == null || storage == null)
+            return DataHelper.escapeHTML(snark.getBaseName());
+        StringBuilder buf = new StringBuilder(256);
+        String base = DataHelper.escapeHTML(storage.getBaseName());
+        buf.append("<a href=\"").append(_contextPath).append('/').append(base);
+        if (meta.getFiles() != null || !storage.complete())
+            buf.append('/');
+        buf.append("\">").append(base).append("</a>");
+        return buf.toString();
+    }
+
     /**
      * Add all magnets from the config file
+     *
      * @since 0.8.4
      */
     private void addMagnets() {
-        for (Object o : _config.keySet()) {
-            String k = (String) o;
+        boolean changed = false;
+        for (Iterator<?> iter = _config.keySet().iterator(); iter.hasNext(); ) {
+            String k = (String) iter.next();
             if (k.startsWith(PROP_META_MAGNET_PREFIX)) {
                 String b64 = k.substring(PROP_META_MAGNET_PREFIX.length());
                 b64 = b64.replace('$', '=');
                 byte[] ih = Base64.decode(b64);
                 // ignore value - TODO put tracker URL in value
-                if (ih != null && ih.length == 20)
-                    addMagnet(_("Magnet") + ' ' + I2PSnarkUtil.toHex(ih), ih, null, false);
-                // else remove from config?
+                if (ih != null && ih.length == 20) {
+                    Properties config = getConfig(ih);
+                    String name = config.getProperty(PROP_META_MAGNET_DN);
+                    if (name == null)
+                        name = _t("Magnet") + ' ' + I2PSnarkUtil.toHex(ih);
+                    String tracker = config.getProperty(PROP_META_MAGNET_TR);
+                    String dir = config.getProperty(PROP_META_MAGNET_DIR);
+                    File dirf = (dir != null) ? (new File(dir)) : null;
+                    addMagnet(name, ih, tracker, false, dirf);
+                } else {
+                    iter.remove();
+                    changed = true;
+                }
             }
         }
+        if (changed)
+            saveConfig();
     }
 
     /**
      *  caller must synchronize on _snarks
+     *
+     *  @return success, false if an error adding any torrent.
      */
-    private void monitorTorrents(File dir) {
+    private boolean monitorTorrents(File dir) {
+        boolean rv = true;
         String fileNames[] = dir.list(TorrentFilenameFilter.instance());
         List<String> foundNames = new ArrayList<String>(0);
         if (fileNames != null) {
@@ -2109,14 +2261,15 @@ public class SnarkManager implements CompleteListener {
                 // already known.  noop
             } else {
                 if (shouldAutoStart() && !_util.connect())
-                    addMessage(_("Unable to connect to I2P!"));
+                    addMessage(_t("Unable to connect to I2P!"));
                 try {
                     // Snark.fatal() throws a RuntimeException
                     // don't let one bad torrent kill the whole loop
                     addTorrent(name, null, !shouldAutoStart());
                 } catch (Exception e) {
-                    addMessage(_("Error: Could not add the torrent {0}", name) + ": " + e);
+                    addMessage(_t("Error: Could not add the torrent {0}", name) + ": " + e);
                     _log.error("Unable to add the torrent " + name, e);
+                    rv = false;
                 }
             }
         }
@@ -2137,20 +2290,21 @@ public class SnarkManager implements CompleteListener {
                 }
             }
         }
+        return rv;
     }
 
     /** translate */
-    private String _(String s) {
+    private String _t(String s) {
         return _util.getString(s);
     }
 
     /** translate */
-    private String _(String s, Object o) {
+    private String _t(String s, Object o) {
         return _util.getString(s, o);
     }
 
     /** translate */
-    private String _(String s, Object o, Object o2) {
+    private String _t(String s, Object o, Object o2) {
         return _util.getString(s, o, o2);
     }
 
@@ -2255,28 +2409,36 @@ public class SnarkManager implements CompleteListener {
     public void startTorrent(byte[] infoHash) {
         for (Snark snark : _snarks.values()) {
             if (DataHelper.eq(infoHash, snark.getInfoHash())) {
-                if (snark.isStarting() || !snark.isStopped()) {
-                    addMessage("Torrent already started");
-                    return;
-                }
-                boolean connected = _util.connected();
-                if ((!connected) && !_util.isConnecting())
-                    addMessage(_("Opening the I2P tunnel"));
-                addMessage(_("Starting up torrent {0}", snark.getBaseName()));
-                if (connected) {
-                    snark.startTorrent();
-                } else {
-                    // mark it for the UI
-                    snark.setStarting();
-                    (new I2PAppThread(new ThreadedStarter(snark), "TorrentStarter", true)).start();
-                    try { Thread.sleep(200); } catch (InterruptedException ie) {}
-                }
+                startTorrent(snark);
                 return;
             }
         }
         addMessage("Torrent not found?");
     }
 
+    /**
+     *  If not connected, thread it, otherwise inline
+     *  @since 0.9.23
+     */
+    public void startTorrent(Snark snark) {
+        if (snark.isStarting() || !snark.isStopped()) {
+            addMessage("Torrent already started");
+            return;
+        }
+        boolean connected = _util.connected();
+        if ((!connected) && !_util.isConnecting())
+            addMessage(_t("Opening the I2P tunnel"));
+        addMessageNoEscape(_t("Starting up torrent {0}", linkify(snark)));
+        if (connected) {
+            snark.startTorrent();
+        } else {
+            // mark it for the UI
+            snark.setStarting();
+            (new I2PAppThread(new ThreadedStarter(snark), "TorrentStarter", true)).start();
+            try { Thread.sleep(200); } catch (InterruptedException ie) {}
+        }
+    }
+
     /**
      *  If not connected, thread it, otherwise inline
      *  @since 0.9.1
@@ -2285,7 +2447,7 @@ public class SnarkManager implements CompleteListener {
         if (_util.connected()) {
             startAll();
         } else {
-            addMessage(_("Opening the I2P tunnel and starting all torrents."));
+            addMessage(_t("Opening the I2P tunnel and starting all torrents."));
             for (Snark snark : _snarks.values()) {
                 // mark it for the UI
                 snark.setStarting();
@@ -2348,7 +2510,7 @@ public class SnarkManager implements CompleteListener {
         for (Snark snark : _snarks.values()) {
             if (!snark.isStopped()) {
                 if (count == 0)
-                    addMessage(_("Stopping all torrents and closing the I2P tunnel."));
+                    addMessage(_t("Stopping all torrents and closing the I2P tunnel."));
                 count++;
                 if (finalShutdown)
                     snark.stopTorrent(true);
@@ -2367,14 +2529,14 @@ public class SnarkManager implements CompleteListener {
                 // Schedule this even for final shutdown, as there's a chance
                 // that it's just this webapp that is stopping.
                 _context.simpleTimer2().addEvent(new Disconnector(), 60*1000);
-                addMessage(_("Closing I2P tunnel after notifying trackers."));
+                addMessage(_t("Closing I2P tunnel after notifying trackers."));
                 if (finalShutdown) {
                     try { Thread.sleep(5*1000); } catch (InterruptedException ie) {}
                 }
             } else {
                 _util.disconnect();
                 _stopping = false;
-                addMessage(_("I2P tunnel closed."));
+                addMessage(_t("I2P tunnel closed."));
             }
         }
     }
@@ -2385,7 +2547,57 @@ public class SnarkManager implements CompleteListener {
             if (_util.connected()) {
                 _util.disconnect();
                 _stopping = false;
-                addMessage(_("I2P tunnel closed."));
+                addMessage(_t("I2P tunnel closed."));
+            }
+        }
+    }
+
+    /**
+     *  Threaded. Torrent must be stopped.
+     *  @since 0.9.23
+     */
+    public void recheckTorrent(Snark snark) {
+        if (snark.isStarting() || !snark.isStopped()) {
+            addMessage("Cannot check " + snark.getBaseName() + ", torrent already started");
+            return;
+        }
+        Storage storage = snark.getStorage();
+        if (storage == null) {
+            addMessage("Cannot check " + snark.getBaseName() + ", no storage");
+            return;
+        }
+        (new I2PAppThread(new ThreadedRechecker(snark), "TorrentRechecker", true)).start();
+        try { Thread.sleep(200); } catch (InterruptedException ie) {}
+    }
+
+    /**
+     *  @since 0.9.23
+     */
+    private class ThreadedRechecker implements Runnable {
+        private final Snark snark;
+        /** must have non-null storage */
+        public ThreadedRechecker(Snark s) { snark = s; }
+        public void run() {
+            try {
+                if (_log.shouldWarn())
+                    _log.warn("Starting recheck of " + snark.getBaseName());
+                boolean changed = snark.getStorage().recheck();
+                if (changed)
+                    updateStatus(snark);
+                if (_log.shouldWarn())
+                    _log.warn("Finished recheck of " + snark.getBaseName() + " changed? " + changed);
+                String link = linkify(snark);
+                if (changed) {
+                    int pieces = snark.getPieces();
+                    double completion = (pieces - snark.getNeeded()) / (double) pieces;
+                    String complete = (new DecimalFormat("0.00%")).format(completion);
+                    addMessageNoEscape(_t("Finished recheck of torrent {0}, now {1} complete", link, complete));
+                } else {
+                    addMessageNoEscape(_t("Finished recheck of torrent {0}, unchanged", link));
+                }
+            } catch (Exception e) {
+                _log.error("Error rechecking " + snark.getBaseName(), e);
+                addMessage(_t("Error checking the torrent {0}", snark.getBaseName()) + ": " + e);
             }
         }
     }
diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java
index 682d6f700cc9254ac78e5374e3ae579ef53d8487..1edf12b5bc963a76a478d2cdbc625ae530eeb5a8 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java
@@ -20,6 +20,7 @@
 
 package org.klomp.snark;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -38,6 +39,8 @@ import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import gnu.getopt.Getopt;
+
 import net.i2p.I2PAppContext;
 import net.i2p.crypto.SHA1;
 import net.i2p.data.ByteArray;
@@ -50,7 +53,7 @@ import net.i2p.util.SystemVersion;
 /**
  * Maintains pieces on disk. Can be used to store and retrieve pieces.
  */
-public class Storage
+public class Storage implements Closeable
 {
   private final MetaInfo metainfo;
   private final List<TorrentFile> _torrentFiles;
@@ -70,11 +73,12 @@ public class Storage
   private boolean changed;
   private volatile boolean _isChecking;
   private final AtomicInteger _allocateCount = new AtomicInteger();
+  private final AtomicInteger _checkProgress = new AtomicInteger();
 
   /** The default piece size. */
   private static final int DEFAULT_PIECE_SIZE = 256*1024;
   /** bigger than this will be rejected */
-  public static final int MAX_PIECE_SIZE = 8*1024*1024;
+  public static final int MAX_PIECE_SIZE = 16*1024*1024;
   /** The maximum number of pieces in a torrent. */
   public static final int MAX_PIECES = 10*1024;
   public static final long MAX_TOTAL_SIZE = MAX_PIECE_SIZE * (long) MAX_PIECES;
@@ -82,6 +86,7 @@ public class Storage
   private static final Map<String, String> _filterNameCache = new ConcurrentHashMap<String, String>();
 
   private static final boolean _isWindows = SystemVersion.isWindows();
+  private static final boolean _isARM = SystemVersion.isARM();
 
   private static final int BUFSIZE = PeerState.PARTSIZE;
   private static final ByteCache _cache = ByteCache.getInstance(16, BUFSIZE);
@@ -122,10 +127,12 @@ public class Storage
    *
    * @param announce may be null
    * @param listener may be null
+   * @param created_by may be null
    * @throws IOException when creating and/or checking files fails.
    */
   public Storage(I2PSnarkUtil util, File baseFile, String announce,
                  List<List<String>> announce_list,
+                 String created_by,
                  boolean privateTorrent, StorageListener listener)
     throws IOException
   {
@@ -194,7 +201,7 @@ public class Storage
     byte[] piece_hashes = fast_digestCreate();
     metainfo = new MetaInfo(announce, baseFile.getName(), null, files,
                             lengthsList, piece_size, piece_hashes, total, privateTorrent,
-                            announce_list);
+                            announce_list, created_by);
 
   }
 
@@ -306,6 +313,18 @@ public class Storage
       return _isChecking;
   }
 
+  /**
+   *  If checking is in progress, return completion 0.0 ... 1.0,
+   *  else return 1.0.
+   *  @since 0.9.23
+   */
+  public double getCheckingProgress() {
+      if (_isChecking)
+          return _checkProgress.get() / (double) pieces;
+      else
+          return 1.0d;
+  }
+
   /**
    *  Disk allocation (ballooning) in progress.
    *  Always false on Windows.
@@ -336,29 +355,28 @@ public class Storage
    *  @return number of bytes remaining; -1 if unknown file
    *  @since 0.7.14
    */
+/****
   public long remaining(int fileIndex) {
       if (fileIndex < 0 || fileIndex >= _torrentFiles.size())
           return -1;
+      if (complete())
+          return 0;
       long bytes = 0;
       for (int i = 0; i < _torrentFiles.size(); i++) {
           TorrentFile tf = _torrentFiles.get(i);
           if (i == fileIndex) {
-              File f = tf.RAFfile;
-              if (complete())
-                  return 0;
-              int psz = piece_size;
               long start = bytes;
               long end = start + tf.length;
-              int pc = (int) (bytes / psz);
+              int pc = (int) (bytes / piece_size);
               long rv = 0;
               if (!bitfield.get(pc))
-                  rv = Math.min(psz - (start % psz), tf.length);
-              for (int j = pc + 1; (((long)j) * psz) < end && j < pieces; j++) {
+                  rv = Math.min(piece_size - (start % piece_size), tf.length);
+              for (int j = pc + 1; (((long)j) * piece_size) < end && j < pieces; j++) {
                   if (!bitfield.get(j)) {
-                      if (((long)(j+1))*psz < end)
-                          rv += psz;
+                      if (((long)(j+1))*piece_size < end)
+                          rv += piece_size;
                       else
-                          rv += end - (((long)j) * psz);
+                          rv += end - (((long)j) * piece_size);
                   }
               }
               return rv;
@@ -367,6 +385,40 @@ public class Storage
       }
       return -1;
   }
+****/
+
+  /**
+   *  For efficiency, calculate remaining bytes for all files at once
+   *
+   *  @return number of bytes remaining for each file, use indexOf() to get index for a file
+   *  @since 0.9.23
+   */
+  public long[] remaining() {
+      long[] rv = new long[_torrentFiles.size()];
+      if (complete())
+          return rv;
+      long bytes = 0;
+      for (int i = 0; i < _torrentFiles.size(); i++) {
+          TorrentFile tf = _torrentFiles.get(i);
+          long start = bytes;
+          long end = start + tf.length;
+          int pc = (int) (bytes / piece_size);
+          long rvi = 0;
+          if (!bitfield.get(pc))
+              rvi = Math.min(piece_size - (start % piece_size), tf.length);
+          for (int j = pc + 1; (((long)j) * piece_size) < end && j < pieces; j++) {
+              if (!bitfield.get(j)) {
+                  if (((long)(j+1))*piece_size < end)
+                      rvi += piece_size;
+                  else
+                      rvi += end - (((long)j) * piece_size);
+              }
+          }
+          rv[i] = rvi;
+          bytes += tf.length;
+      }
+      return rv;
+  }
 
   /**
    *  @param fileIndex as obtained from indexOf
@@ -450,9 +502,8 @@ public class Storage
       int file = 0;
       long pcEnd = -1;
       long fileEnd = _torrentFiles.get(0).length - 1;
-      int psz = piece_size;
       for (int i = 0; i < rv.length; i++) {
-          pcEnd += psz;
+          pcEnd += piece_size;
           int pri = _torrentFiles.get(file).priority;
           while (fileEnd <= pcEnd && file < _torrentFiles.size() - 1) {
               file++;
@@ -496,6 +547,9 @@ public class Storage
   /**
    * Creates (and/or checks) all files from the metainfo file list.
    * Only call this once, and only after the constructor with the metainfo.
+   * Use recheck() to check again later.
+   *
+   * @throws IllegalStateException if called more than once
    */
   public void check() throws IOException
   {
@@ -506,6 +560,9 @@ public class Storage
    * Creates (and/or checks) all files from the metainfo file list.
    * Use a saved bitfield and timestamp from a config file.
    * Only call this once, and only after the constructor with the metainfo.
+   * Use recheck() to check again later.
+   *
+   * @throws IllegalStateException if called more than once
    */
   public void check(long savedTime, BitField savedBitField) throws IOException
   {
@@ -763,6 +820,14 @@ public class Storage
       return rv;
   }
 
+  /**
+   *  Does not include directories.
+   *  @since 0.9.23
+   */
+  public int getFileCount() {
+      return _torrentFiles.size();
+  }
+
   /**
    *  Includes the base for a multi-file torrent.
    *  Sorted bottom-up for easy deletion.
@@ -784,6 +849,24 @@ public class Storage
       return rv;
   }
 
+  /**
+   *  Blocking. Holds lock.
+   *  Recommend running only when stopped.
+   *  Caller should thread.
+   *  Calls listener.setWantedPieces() on completion if anything changed.
+   *
+   *  @return true if anything changed, false otherwise
+   *  @since 0.9.23
+   */
+  public boolean recheck() throws IOException {
+      int previousNeeded = needed;
+      checkCreateFiles(true);
+      boolean changed = previousNeeded != needed;
+      if (listener != null && changed)
+          listener.setWantedPieces(this);
+      return changed;
+  }
+
   /**
    * This is called at the beginning, and at presumed completion,
    * so we have to be careful about locking.
@@ -808,6 +891,7 @@ public class Storage
 
   private void locked_checkCreateFiles(boolean recheck) throws IOException
   {
+    _checkProgress.set(0);
     // Whether we are resuming or not,
     // if any of the files already exists we assume we are resuming.
     boolean resume = false;
@@ -824,13 +908,16 @@ public class Storage
 
     // Make sure all files are available and of correct length
     // The files should all exist as they have been created with zero length by createFilesFromNames()
+    long lengthProgress = 0;
     for (TorrentFile tf : _torrentFiles)
       {
         long length = tf.RAFfile.length();
+        lengthProgress += tf.length;
         if(tf.RAFfile.exists() && length == tf.length)
           {
             if (listener != null)
               listener.storageAllocated(this, length);
+            _checkProgress.set(0);
             resume = true; // XXX Could dynamicly check
           }
         else if (length == 0) {
@@ -842,6 +929,8 @@ public class Storage
                   tf.closeRAF();
               } catch (IOException ioe) {}
           }
+          if (!resume)
+              _checkProgress.set((int) (pieces * lengthProgress / total_length));
         } else {
           String msg = "File '" + tf.name + "' exists, but has wrong length (expected " +
                        tf.length + " but found " + length + ") - repairing corruption";
@@ -850,6 +939,7 @@ public class Storage
           _log.error(msg);
           changed = true;
           resume = true;
+          _checkProgress.set(0);
           _probablyComplete = false; // to force RW
           synchronized(tf) {
               RandomAccessFile raf = tf.checkRAF();
@@ -870,17 +960,16 @@ public class Storage
         long pieceEnd = 0;
         for (int i = 0; i < pieces; i++)
           {
+            _checkProgress.set(i);
             int length = getUncheckedPiece(i, piece);
             boolean correctHash = metainfo.checkPiece(i, piece, 0, length);
             // close as we go so we don't run out of file descriptors
             pieceEnd += length;
             while (fileEnd <= pieceEnd) {
                 TorrentFile tf = _torrentFiles.get(file);
-                synchronized(tf) {
-                    try {
-                        tf.closeRAF();
-                    } catch (IOException ioe) {}
-                }
+                try {
+                    tf.closeRAF();
+                } catch (IOException ioe) {}
                 if (++file >= _torrentFiles.size())
                     break;
                 fileEnd += _torrentFiles.get(file).length;
@@ -896,6 +985,7 @@ public class Storage
           }
       }
 
+    _checkProgress.set(pieces);
     _probablyComplete = complete();
     // close all the files so we don't end up with a zillion open ones;
     // we will reopen as needed
@@ -952,9 +1042,7 @@ public class Storage
     for (TorrentFile tf : _torrentFiles)
       {
         try {
-          synchronized(tf) {
             tf.closeRAF();
-          }
         } catch (IOException ioe) {
             _log.error("Error closing " + tf, ioe);
             // gobble gobble
@@ -1179,17 +1267,15 @@ public class Storage
     return length;
   }
 
-  private static final long RAFCloseDelay = 4*60*1000;
+  private static final long RAF_CLOSE_DELAY = 4*60*1000;
 
   /**
    * Close unused RAFs - call periodically
    */
   public void cleanRAFs() {
-    long cutoff = System.currentTimeMillis() - RAFCloseDelay;
+    long cutoff = System.currentTimeMillis() - RAF_CLOSE_DELAY;
     for (TorrentFile tf : _torrentFiles) {
-      synchronized(tf) {
          tf.closeRAF(cutoff);
-      }
     }
   }
 
@@ -1315,7 +1401,9 @@ public class Storage
           // Windows will zero-fill up to the point of the write, which
           // will make the file fairly unfragmented, on average, at least until
           // near the end where it will get exponentially more fragmented.
-          if (!_isWindows)
+          // Also don't ballon on ARM, as a proxy for solid state disk, where fragmentation doesn't matter too much.
+          // Actual detection of SSD is almost impossible.
+          if (!_isWindows && !_isARM)
               isSparse = true;
       }
 
@@ -1372,18 +1460,44 @@ public class Storage
    *  @since 0.9.4
    */
   public static void main(String[] args) {
-      if (args.length < 1 || args.length > 2) {
-          System.err.println("Usage: Storage file-or-dir [announceURL]");
+      boolean error = false;
+      String created_by = null;
+      String announce = null;
+      Getopt g = new Getopt("Storage", args, "a:c:");
+      try {
+          int c;
+          while ((c = g.getopt()) != -1) {
+            switch (c) {
+              case 'a':
+                  announce = g.getOptarg();
+                  break;
+
+              case 'c':
+                  created_by = g.getOptarg();
+                  break;
+
+              case '?':
+              case ':':
+              default:
+                  error = true;
+                  break;
+            }  // switch
+          } // while
+      } catch (Exception e) {
+          e.printStackTrace();
+          error = true;
+      }
+      if (error || args.length - g.getOptind() != 1) {
+          System.err.println("Usage: Storage [-a announceURL] [-c created-by] file-or-dir");
           System.exit(1);
       }
-      File base = new File(args[0]);
-      String announce = args.length == 2 ? args[1] : null;
+      File base = new File(args[g.getOptind()]);
       I2PAppContext ctx = I2PAppContext.getGlobalContext();
       I2PSnarkUtil util = new I2PSnarkUtil(ctx);
       File file = null;
       FileOutputStream out = null;
       try {
-          Storage storage = new Storage(util, base, announce, null, false, null);
+          Storage storage = new Storage(util, base, announce, null, created_by, false, null);
           MetaInfo meta = storage.getMetaInfo();
           file = new File(storage.getBaseName() + ".torrent");
           out = new FileOutputStream(file);
diff --git a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java
index 0664065fb54277e70c9070478a8d272d5e69b1f1..4fd943c8968c69575325bdd4520523b006c21314 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/bencode/BEValue.java
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Map;
 
 import net.i2p.data.Base64;
+import net.i2p.data.DataHelper;
 
 /**
  * Holds different types that a bencoded byte array can represent.
@@ -208,7 +209,7 @@ public class BEValue
           } else if (bin) {
               buf.append(bs.length).append(" bytes: ").append(Base64.encode(bs));
           } else {
-              buf.append('"').append(new String(bs)).append('"');
+              buf.append('"').append(DataHelper.getUTF8(bs)).append('"');
           }
           valueString = buf.toString();
         } else
diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java
index 3b7b1d99c1f4a5b1a69eeab39870e3ddc902864e..784d8e6bff24fea169c8ea02de67ecfabf1a0fc6 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/dht/DHTTracker.java
@@ -106,6 +106,7 @@ class DHTTracker {
      *  @param noSeeds true if we do not want seeds in the result
      *  @return list or empty list (never null)
      */
+    @SuppressWarnings({"unchecked", "rawtypes"})
     List<Hash> getPeers(InfoHash ih, int max, boolean noSeeds) {
         Peers peers = _torrents.get(ih);
         if (peers == null || max <= 0)
diff --git a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java
index 58e0f39fca73397ccf946974ea77e82f697d011e..0e6da1c22b44da388a2cc28436916be21d46c8cb 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/dht/KRPC.java
@@ -243,6 +243,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      *  @param maxWait how long to wait for each to reply (not total) must be > 0
      *  @param parallel how many outstanding at once (unimplemented, always 1)
      */
+    @SuppressWarnings("unchecked")
     private void explore(NID target, int maxNodes, long maxWait, int parallel) {
         List<NodeInfo> nodes = _knownNodes.findClosest(target, maxNodes);
         if (nodes.isEmpty()) {
@@ -327,6 +328,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      *  @param noSeeds true if we do not want seeds in the result
      *  @return possibly empty (never null)
      */
+    @SuppressWarnings("unchecked")
     public Collection<Hash> getPeersAndAnnounce(byte[] ih, int max, long maxWait,
                                                 int annMax, long annMaxWait,
                                                 boolean isSeed, boolean noSeeds) {
@@ -858,6 +860,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      *  @param repliable true for all but announce
      *  @return null on error
      */
+    @SuppressWarnings("unchecked")
     private ReplyWaiter sendQuery(NodeInfo nInfo, Map<String, Object> map, boolean repliable) {
         if (nInfo.equals(_myNodeInfo))
             throw new IllegalArgumentException("wtf don't send to ourselves");
@@ -907,6 +910,7 @@ public class KRPC implements I2PSessionMuxedListener, DHT {
      * @param toPort the query port, we will increment here
      *  @return success
      */
+    @SuppressWarnings("unchecked")
     private boolean sendResponse(NodeInfo nInfo, MsgID msgID, Map<String, Object> map) {
         if (nInfo.equals(_myNodeInfo))
             throw new IllegalArgumentException("wtf don't send to ourselves");
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/FetchAndAdd.java b/apps/i2psnark/java/src/org/klomp/snark/web/FetchAndAdd.java
index 99e2f62a694c293eb7bfc88d04ff1f56c92e41ee..5537b33f14b74baf9768d3b4294114634df207d2 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/FetchAndAdd.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/FetchAndAdd.java
@@ -77,7 +77,7 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
         _log = ctx.logManager().getLog(FetchAndAdd.class);
         _mgr = mgr;
         _url = url;
-        _name = _("Download torrent file from {0}", url);
+        _name = _t("Download torrent file from {0}", url);
         _dataDir = dataDir;
         byte[] fake = null;
         try {
@@ -90,7 +90,7 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
      *  Set off by startTorrent()
      */
     public void run() {
-        _mgr.addMessageNoEscape(_("Fetching {0}", urlify(_url)));
+        _mgr.addMessageNoEscape(_t("Fetching {0}", urlify(_url)));
         File file = get();
         if (!_isRunning)  // stopped?
             return;
@@ -100,7 +100,7 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
             _mgr.deleteMagnet(this);
             add(file);
         } else {
-            _mgr.addMessageNoEscape(_("Torrent was not retrieved from {0}", urlify(_url)) +
+            _mgr.addMessageNoEscape(_t("Torrent was not retrieved from {0}", urlify(_url)) +
                             ((_failCause != null) ? (": " + DataHelper.stripHTML(_failCause)) : ""));
         }
         if (file != null)
@@ -127,7 +127,7 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
         out.deleteOnExit();
 
         if (!_mgr.util().connected()) {
-            _mgr.addMessage(_("Opening the I2P tunnel"));
+            _mgr.addMessage(_t("Opening the I2P tunnel"));
             if (!_mgr.util().connect())
                 return null;
         }
@@ -154,7 +154,7 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
      *  This Snark may then be deleted.
      */
     private void add(File file) {
-        _mgr.addMessageNoEscape(_("Torrent fetched from {0}", urlify(_url)));
+        _mgr.addMessageNoEscape(_t("Torrent fetched from {0}", urlify(_url)));
         FileInputStream in = null;
         try {
             in = new FileInputStream(file);
@@ -163,7 +163,7 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
             try { in.close(); } catch (IOException ioe) {}
             Snark snark = _mgr.getTorrentByInfoHash(fileInfoHash);
             if (snark != null) {
-                _mgr.addMessage(_("Torrent with this info hash is already running: {0}", snark.getBaseName()));
+                _mgr.addMessage(_t("Torrent with this info hash is already running: {0}", snark.getBaseName()));
                 return;
             }
 
@@ -175,9 +175,9 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
 
             if (torrentFile.exists()) {
                 if (_mgr.getTorrent(canonical) != null)
-                    _mgr.addMessage(_("Torrent already running: {0}", name));
+                    _mgr.addMessage(_t("Torrent already running: {0}", name));
                 else
-                    _mgr.addMessage(_("Torrent already in the queue: {0}", name));
+                    _mgr.addMessage(_t("Torrent already in the queue: {0}", name));
             } else {
                 // This may take a LONG time to create the storage.
                 _mgr.copyAndAddTorrent(file, canonical, _dataDir);
@@ -188,9 +188,9 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
                     throw new IOException("Unknown error - check logs");
             }
         } catch (IOException ioe) {
-            _mgr.addMessageNoEscape(_("Torrent at {0} was not valid", urlify(_url)) + ": " + DataHelper.stripHTML(ioe.getMessage()));
+            _mgr.addMessageNoEscape(_t("Torrent at {0} was not valid", urlify(_url)) + ": " + DataHelper.stripHTML(ioe.getMessage()));
         } catch (OutOfMemoryError oom) {
-            _mgr.addMessageNoEscape(_("ERROR - Out of memory, cannot create torrent from {0}", urlify(_url)) + ": " + DataHelper.stripHTML(oom.getMessage()));
+            _mgr.addMessageNoEscape(_t("ERROR - Out of memory, cannot create torrent from {0}", urlify(_url)) + ": " + DataHelper.stripHTML(oom.getMessage()));
         } finally {
             try { if (in != null) in.close(); } catch (IOException ioe) {}
         }
@@ -345,11 +345,11 @@ public class FetchAndAdd extends Snark implements EepGet.StatusListener, Runnabl
 
     // End of EepGet status listeners
 
-    private String _(String s) {
+    private String _t(String s) {
         return _mgr.util().getString(s);
     }
 
-    private String _(String s, String o) {
+    private String _t(String s, String o) {
         return _mgr.util().getString(s, o);
     }
 
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 03a27c7d8c557ab12afbb99f88e899b75f3e6bbf..b0335f6a8c3ce096535fd12e5854dff009235482 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -18,6 +18,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
+import java.util.TimeZone;
 import java.util.TreeMap;
 
 import javax.servlet.ServletConfig;
@@ -31,6 +32,7 @@ import net.i2p.data.DataHelper;
 import net.i2p.data.Hash;
 import net.i2p.util.Log;
 import net.i2p.util.SecureFile;
+import net.i2p.util.Translate;
 
 import org.klomp.snark.I2PSnarkUtil;
 import org.klomp.snark.MagnetURI;
@@ -265,14 +267,14 @@ public class I2PSnarkServlet extends BasicServlet {
                   "<head><link rel=\"shortcut icon\" href=\"" + _themePath + "favicon.ico\">\n" +
                   "<title>");
         if (_contextName.equals(DEFAULT_NAME))
-            out.write(_("I2PSnark"));
+            out.write(_t("I2PSnark"));
         else
             out.write(_contextName);
         out.write(" - ");
         if (isConfigure)
-            out.write(_("Configuration"));
+            out.write(_t("Configuration"));
         else
-            out.write(_("Anonymous BitTorrent Client"));
+            out.write(_t("Anonymous BitTorrent Client"));
         String peerParam = req.getParameter("p");
         if ("2".equals(peerParam))
             out.write(" | Debug Mode");
@@ -286,7 +288,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 //out.write("<meta http-equiv=\"refresh\" content=\"" + delay + ";/i2psnark/" + peerString + "\">\n");
                 out.write("<script src=\"/js/ajax.js\" type=\"text/javascript\"></script>\n" +
                           "<script type=\"text/javascript\">\n"  +
-                          "var failMessage = \"<div class=\\\"routerdown\\\"><b>" + _("Router is down") + "<\\/b><\\/div>\";\n" +
+                          "var failMessage = \"<div class=\\\"routerdown\\\"><b>" + _t("Router is down") + "<\\/b><\\/div>\";\n" +
                           "function requestAjax1() { ajax(\"" + _contextPath + "/.ajax/xhr1.html" +
                           peerString.replace("&amp;", "&") +  // don't html escape in js
                           "\", \"mainsection\", " + (delay*1000) + "); }\n" +
@@ -303,27 +305,27 @@ public class I2PSnarkServlet extends BasicServlet {
         List<Tracker> sortedTrackers = null;
         if (isConfigure) {
             out.write("<div class=\"snarknavbar\"><a href=\"" + _contextPath + "/\" title=\"");
-            out.write(_("Torrents"));
+            out.write(_t("Torrents"));
             out.write("\" class=\"snarkRefresh\">");
             out.write(toThemeImg("arrow_refresh"));
             out.write("&nbsp;&nbsp;");
             if (_contextName.equals(DEFAULT_NAME))
-                out.write(_("I2PSnark"));
+                out.write(_t("I2PSnark"));
             else
                 out.write(_contextName);
             out.write("</a>");
         } else {
             out.write("<div class=\"snarknavbar\"><a href=\"" + _contextPath + '/' + peerString + "\" title=\"");
-            out.write(_("Refresh page"));
+            out.write(_t("Refresh page"));
             out.write("\" class=\"snarkRefresh\">");
             out.write(toThemeImg("arrow_refresh"));
             out.write("&nbsp;&nbsp;");
             if (_contextName.equals(DEFAULT_NAME))
-                out.write(_("I2PSnark"));
+                out.write(_t("I2PSnark"));
             else
                 out.write(_contextName);
             out.write("</a> <a href=\"http://forum.i2p/viewforum.php?f=21\" class=\"snarkRefresh\" target=\"_blank\">");
-            out.write(_("Forum"));
+            out.write(_t("Forum"));
             out.write("</a>\n");
 
             sortedTrackers = _manager.getSortedTrackers();
@@ -338,7 +340,7 @@ public class I2PSnarkServlet extends BasicServlet {
         out.write("</div>\n");
         String newURL = req.getParameter("newURL");
         if (newURL != null && newURL.trim().length() > 0 && req.getMethod().equals("GET"))
-            _manager.addMessage(_("Click \"Add torrent\" button to fetch torrent"));
+            _manager.addMessage(_t("Click \"Add torrent\" button to fetch torrent"));
         out.write("<div class=\"page\"><div id=\"mainsection\" class=\"mainsection\">");
 
         writeMessages(out, isConfigure, peerString);
@@ -391,7 +393,7 @@ public class I2PSnarkServlet extends BasicServlet {
             else
                 out.write("?");
             out.write("action=Clear&amp;nonce=" + _nonce + "\">");
-            String tx = _("clear messages");
+            String tx = _t("clear messages");
             out.write(toThemeImg("delete", tx, tx));
             out.write("</a>" +
                       "<ul>");
@@ -446,9 +448,9 @@ public class I2PSnarkServlet extends BasicServlet {
             out.write("<a href=\"" + _contextPath + '/' + getQueryString(req, null, null, sort));
             out.write("\">");
         }
-        String tx = _("Status");
+        String tx = _t("Status");
         out.write(toThemeImg("status", tx,
-                             showSort ? _("Sort by {0}", tx)
+                             showSort ? _t("Sort by {0}", tx)
                                       : tx));
         if (showSort)
             out.write("</a>");
@@ -459,13 +461,13 @@ public class I2PSnarkServlet extends BasicServlet {
                 // disable peer view
                 out.write(getQueryString(req, "", null, null));
                 out.write("\">");
-                tx = _("Hide Peers");
+                tx = _t("Hide Peers");
                 out.write(toThemeImg("hidepeers", tx, tx));
             } else {
                 // enable peer view
                 out.write(getQueryString(req, "1", null, null));
                 out.write("\">");
-                tx = _("Show Peers");
+                tx = _t("Show Peers");
                 out.write(toThemeImg("showpeers", tx, tx));
             }
             out.write("</a><br>\n"); 
@@ -488,9 +490,9 @@ public class I2PSnarkServlet extends BasicServlet {
             out.write("<a href=\"" + _contextPath + '/' + getQueryString(req, null, null, sort));
             out.write("\">");
         }
-        tx = _("Torrent");
+        tx = _t("Torrent");
         out.write(toThemeImg("torrent", tx,
-                             showSort ? _("Sort by {0}", (isTypeSort ? _("File type") : tx))
+                             showSort ? _t("Sort by {0}", (isTypeSort ? _t("File type") : tx))
                                       : tx));
         if (showSort)
             out.write("</a>");
@@ -506,10 +508,10 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("\">");
             }
             // Translators: Please keep short or translate as " "
-            tx = _("ETA");
+            tx = _t("ETA");
             out.write(toThemeImg("eta", tx,
-                                 showSort ? _("Sort by {0}", _("Estimated time remaining"))
-                                          : _("Estimated time remaining")));
+                                 showSort ? _t("Sort by {0}", _t("Estimated time remaining"))
+                                          : _t("Estimated time remaining")));
             if (showSort)
                 out.write("</a>");
         }
@@ -532,10 +534,10 @@ public class I2PSnarkServlet extends BasicServlet {
             out.write("\">");
         }
         // Translators: Please keep short or translate as " "
-        tx = _("RX");
+        tx = _t("RX");
         out.write(toThemeImg("head_rx", tx,
-                             showSort ? _("Sort by {0}", (isDlSort ? _("Downloaded") : _("Size")))
-                                      : _("Downloaded")));
+                             showSort ? _t("Sort by {0}", (isDlSort ? _t("Downloaded") : _t("Size")))
+                                      : _t("Downloaded")));
         if (showSort)
             out.write("</a>");
         out.write("</th>\n<th align=\"right\">");
@@ -563,10 +565,10 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("\">");
             }
             // Translators: Please keep short or translate as " "
-            tx = _("TX");
+            tx = _t("TX");
             out.write(toThemeImg("head_tx", tx,
-                                 showSort ? _("Sort by {0}", (nextRatSort ? _("Upload ratio") : _("Uploaded")))
-                                          : _("Uploaded")));
+                                 showSort ? _t("Sort by {0}", (nextRatSort ? _t("Upload ratio") : _t("Uploaded")))
+                                          : _t("Uploaded")));
             if (showSort)
                 out.write("</a>");
         }
@@ -578,10 +580,10 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("\">");
             }
             // Translators: Please keep short or translate as " "
-            tx = _("RX Rate");
+            tx = _t("RX Rate");
             out.write(toThemeImg("head_rxspeed", tx,
-                                 showSort ? _("Sort by {0}", _("Down Rate"))
-                                          : _("Down Rate")));
+                                 showSort ? _t("Sort by {0}", _t("Down Rate"))
+                                          : _t("Down Rate")));
             if (showSort)
                 out.write("</a>");
         }
@@ -593,10 +595,10 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("\">");
             }
             // Translators: Please keep short or translate as " "
-            tx = _("TX Rate");
+            tx = _t("TX Rate");
             out.write(toThemeImg("head_txspeed", tx,
-                                 showSort ? _("Sort by {0}", _("Up Rate"))
-                                          : _("Up Rate")));
+                                 showSort ? _t("Sort by {0}", _t("Up Rate"))
+                                          : _t("Up Rate")));
             if (showSort)
                 out.write("</a>");
         }
@@ -612,9 +614,9 @@ public class I2PSnarkServlet extends BasicServlet {
                 //out.write("<input type=\"image\" name=\"action\" value=\"StopAll\" title=\"");
                 out.write("<input type=\"image\" name=\"action_StopAll\" value=\"foo\" title=\"");
             }
-            out.write(_("Stop all torrents and the I2P tunnel"));
+            out.write(_t("Stop all torrents and the I2P tunnel"));
             out.write("\" src=\"" + _imgPath + "stop_all.png\" alt=\"");
-            out.write(_("Stop All"));
+            out.write(_t("Stop All"));
             out.write("\">");
             if (isDegraded)
                 out.write("</a>");
@@ -626,9 +628,9 @@ public class I2PSnarkServlet extends BasicServlet {
                         out.write("<a href=\"" + _contextPath + "/?action=StartAll&amp;nonce=" + _nonce + "\"><img title=\"");
                     else
                         out.write("<input type=\"image\" name=\"action_StartAll\" value=\"foo\" title=\"");
-                    out.write(_("Start all stopped torrents"));
+                    out.write(_t("Start all stopped torrents"));
                     out.write("\" src=\"" + _imgPath + "start_all.png\" alt=\"");
-                    out.write(_("Start All"));
+                    out.write(_t("Start All"));
                     out.write("\">");
                     if (isDegraded)
                         out.write("</a>");
@@ -640,9 +642,9 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("<a href=\"" + _contextPath + "/?action=StartAll&amp;nonce=" + _nonce + "\"><img title=\"");
             else
                 out.write("<input type=\"image\" name=\"action_StartAll\" value=\"foo\" title=\"");
-            out.write(_("Start all torrents and the I2P tunnel"));
+            out.write(_t("Start all torrents and the I2P tunnel"));
             out.write("\" src=\"" + _imgPath + "start_all.png\" alt=\"");
-            out.write(_("Start All"));
+            out.write(_t("Start All"));
             out.write("\">");
             if (isDegraded)
                 out.write("</a>");
@@ -665,24 +667,13 @@ public class I2PSnarkServlet extends BasicServlet {
             out.write("<tr class=\"snarkTorrentNoneLoaded\">" +
                       "<td class=\"snarkTorrentNoneLoaded\"" +
                       " colspan=\"11\"><i>");
-            out.write(_("No torrents loaded."));
+            out.write(_t("No torrents loaded."));
             out.write("</i></td></tr>\n");
         } else /** if (snarks.size() > 1) */ {
             out.write("<tfoot><tr>\n" +
                       "    <th align=\"left\" colspan=\"6\">");
             out.write("&nbsp;");
-            out.write(_("Dest") + ":");
-            out.write("&nbsp;");
-            String IPString = _manager.util().getOurIPString();
-            if(!IPString.equals("unknown")) {
-                // Only truncate if it's an actual dest
-                IPString = "<i>" + IPString.substring(0, 4) + "</i>";
-            } else {
-                IPString = IPString + ".";
-            }
-            out.write(IPString);
-            out.write("&nbsp;");
-            out.write(_("Totals"));
+            out.write(_t("Totals"));
             out.write(":&nbsp;");
             out.write(ngettext("1 torrent", "{0} torrents", total));
             out.write(", ");
@@ -698,6 +689,17 @@ public class I2PSnarkServlet extends BasicServlet {
                     out.write(", ");
                     out.write(ngettext("1 DHT peer", "{0} DHT peers", dhts));
                 }
+            }
+            String IPString = _manager.util().getOurIPString();
+            if(!IPString.equals("unknown")) {
+                // Only truncate if it's an actual dest
+                out.write(";&nbsp;");
+                out.write(_t("Dest"));
+                out.write(":&nbsp;<tt>");
+                out.write(IPString.substring(0, 4));
+                out.write("</tt>");
+            }
+            if (dht != null) {
                 if (showDebug)
                     out.write(dht.renderStatusHTML());
             }
@@ -820,7 +822,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("<a href=\"" + _contextPath);
                 out.write(getQueryString(req, null, "", null));
                 out.write("\">");
-                out.write(toThemeImg("control_rewind_blue", _("First"), _("First page")));
+                out.write(toThemeImg("control_rewind_blue", _t("First"), _t("First page")));
                 out.write("</a>&nbsp;");
                 int prev = Math.max(0, start - pageSize);
                 //if (prev > 0) {
@@ -830,7 +832,7 @@ public class I2PSnarkServlet extends BasicServlet {
                     String sprev = (prev > 0) ? Integer.toString(prev) : "";
                     out.write(getQueryString(req, null, sprev, null));
                     out.write("\">");
-                    out.write(toThemeImg("control_back_blue", _("Prev"), _("Previous page")));
+                    out.write(toThemeImg("control_back_blue", _t("Prev"), _t("Previous page")));
                     out.write("</a>&nbsp;");
                 }
             } else {
@@ -852,7 +854,7 @@ public class I2PSnarkServlet extends BasicServlet {
                     page = pages;
                 else
                     page = 1 + (start / pageSize);
-                //out.write("&nbsp;" + _("Page {0}", page) + thinsp(noThinsp) + pages + "&nbsp;");
+                //out.write("&nbsp;" + _t("Page {0}", page) + thinsp(noThinsp) + pages + "&nbsp;");
                 out.write("&nbsp;&nbsp;" + page + thinsp(noThinsp) + pages + "&nbsp;&nbsp;");
             }
             if (start + pageSize < total) {
@@ -863,7 +865,7 @@ public class I2PSnarkServlet extends BasicServlet {
                     out.write("&nbsp;<a href=\"" + _contextPath);
                     out.write(getQueryString(req, null, Integer.toString(next), null));
                     out.write("\">");
-                    out.write(toThemeImg("control_play_blue", _("Next"), _("Next page")));
+                    out.write(toThemeImg("control_play_blue", _t("Next"), _t("Next page")));
                     out.write("</a>&nbsp;");
                 }
                 // Last
@@ -871,7 +873,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 out.write("&nbsp;<a href=\"" + _contextPath);
                 out.write(getQueryString(req, null, Integer.toString(last), null));
                 out.write("\">");
-                out.write(toThemeImg("control_fastforward_blue", _("Last"), _("Last page")));
+                out.write(toThemeImg("control_fastforward_blue", _t("Last"), _t("Last page")));
                 out.write("</a>&nbsp;");
             } else {
                 out.write("&nbsp;" +
@@ -917,7 +919,7 @@ public class I2PSnarkServlet extends BasicServlet {
             if ( (newFile != null) && (newFile.trim().length() > 0) )
                 f = new File(newFile.trim());
             if ( (f != null) && (!f.exists()) ) {
-                _manager.addMessage(_("Torrent file {0} does not exist", newFile));
+                _manager.addMessage(_t("Torrent file {0} does not exist", newFile));
             }
             if ( (f != null) && (f.exists()) ) {
                 // NOTE - All this is disabled - load from local file disabled
@@ -928,16 +930,16 @@ public class I2PSnarkServlet extends BasicServlet {
                     
                     if (local.exists()) {
                         if (_manager.getTorrent(canonical) != null)
-                            _manager.addMessage(_("Torrent already running: {0}", newFile));
+                            _manager.addMessage(_t("Torrent already running: {0}", newFile));
                         else
-                            _manager.addMessage(_("Torrent already in the queue: {0}", newFile));
+                            _manager.addMessage(_t("Torrent already in the queue: {0}", newFile));
                     } else {
                         boolean ok = FileUtil.copy(f.getAbsolutePath(), local.getAbsolutePath(), true);
                         if (ok) {
-                            _manager.addMessage(_("Copying torrent to {0}", local.getAbsolutePath()));
+                            _manager.addMessage(_t("Copying torrent to {0}", local.getAbsolutePath()));
                             _manager.addTorrent(canonical);
                         } else {
-                            _manager.addMessage(_("Unable to copy the torrent to {0}", local.getAbsolutePath()) + ' ' + _("from {0}", f.getAbsolutePath()));
+                            _manager.addMessage(_t("Unable to copy the torrent to {0}", local.getAbsolutePath()) + ' ' + _t("from {0}", f.getAbsolutePath()));
                         }
                     }
                 } catch (IOException ioe) {
@@ -953,11 +955,11 @@ public class I2PSnarkServlet extends BasicServlet {
                     if (newDir.length() > 0) {
                         dir = new SecureFile(newDir);
                         if (!dir.isAbsolute()) {
-                            _manager.addMessage(_("Data directory must be an absolute path") + ": " + dir);
+                            _manager.addMessage(_t("Data directory must be an absolute path") + ": " + dir);
                             return;
                         }
                         if (!dir.isDirectory() && !dir.mkdirs()) {
-                            _manager.addMessage(_("Data directory cannot be created") + ": " + dir);
+                            _manager.addMessage(_t("Data directory cannot be created") + ": " + dir);
                             return;
                         }
                         Collection<Snark> snarks = _manager.getTorrents();
@@ -967,7 +969,7 @@ public class I2PSnarkServlet extends BasicServlet {
                                 continue;
                             File sbase = storage.getBase();
                             if (isParentOf(sbase, dir)) {
-                                _manager.addMessage(_("Cannot add torrent {0} inside another torrent: {1}",
+                                _manager.addMessage(_t("Cannot add torrent {0} inside another torrent: {1}",
                                                       dir.getAbsolutePath(), sbase));
                                 return;
                             }
@@ -980,9 +982,15 @@ public class I2PSnarkServlet extends BasicServlet {
                 } else if (newURL.startsWith(MagnetURI.MAGNET) || newURL.startsWith(MagnetURI.MAGGOT)) {
                     addMagnet(newURL, dir);
                 } else if (newURL.length() == 40 && newURL.replaceAll("[a-fA-F0-9]", "").length() == 0) {
+                    // hex
+                    newURL = newURL.toUpperCase(Locale.US);
+                    addMagnet(MagnetURI.MAGNET_FULL + newURL, dir);
+                } else if (newURL.length() == 32 && newURL.replaceAll("[a-zA-Z2-7]", "").length() == 0) {
+                    // b32
+                    newURL = newURL.toUpperCase(Locale.US);
                     addMagnet(MagnetURI.MAGNET_FULL + newURL, dir);
                 } else {
-                    _manager.addMessage(_("Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"",
+                    _manager.addMessage(_t("Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\"",
                                           MagnetURI.MAGNET, MagnetURI.MAGGOT));
                 }
             } else {
@@ -1023,7 +1031,7 @@ public class I2PSnarkServlet extends BasicServlet {
                                 // magnet - remove and delete are the same thing
                                 // Remove not shown on UI so we shouldn't get here
                                 _manager.deleteMagnet(snark);
-                                _manager.addMessage(_("Magnet deleted: {0}", name));
+                                _manager.addMessage(_t("Magnet deleted: {0}", name));
                                 return;
                             }
                             _manager.stopTorrent(snark, true);
@@ -1031,7 +1039,7 @@ public class I2PSnarkServlet extends BasicServlet {
                             // yeah, need to, otherwise it'll get autoadded again (at the moment
                             File f = new File(name);
                             f.delete();
-                            _manager.addMessage(_("Torrent file deleted: {0}", f.getAbsolutePath()));
+                            _manager.addMessage(_t("Torrent file deleted: {0}", f.getAbsolutePath()));
                             break;
                         }
                     }
@@ -1050,15 +1058,15 @@ public class I2PSnarkServlet extends BasicServlet {
                                 // magnet - remove and delete are the same thing
                                 _manager.deleteMagnet(snark);
                                 if (snark instanceof FetchAndAdd)
-                                    _manager.addMessage(_("Download deleted: {0}", name));
+                                    _manager.addMessage(_t("Download deleted: {0}", name));
                                 else
-                                    _manager.addMessage(_("Magnet deleted: {0}", name));
+                                    _manager.addMessage(_t("Magnet deleted: {0}", name));
                                 return;
                             }
                             _manager.stopTorrent(snark, true);
                             File f = new File(name);
                             f.delete();
-                            _manager.addMessage(_("Torrent file deleted: {0}", f.getAbsolutePath()));
+                            _manager.addMessage(_t("Torrent file deleted: {0}", f.getAbsolutePath()));
                             Storage storage = snark.getStorage();
                             if (storage == null)
                                 break;
@@ -1067,18 +1075,18 @@ public class I2PSnarkServlet extends BasicServlet {
                                 for (File df : storage.getFiles()) {
                                     // should be only one
                                     if (df.delete())
-                                        _manager.addMessage(_("Data file deleted: {0}", df.getAbsolutePath()));
+                                        _manager.addMessage(_t("Data file deleted: {0}", df.getAbsolutePath()));
                                     else
-                                        _manager.addMessage(_("Data file could not be deleted: {0}", df.getAbsolutePath()));
+                                        _manager.addMessage(_t("Data file could not be deleted: {0}", df.getAbsolutePath()));
                                 }
                                 break;
                             }
                             // step 1 delete files
                             for (File df : storage.getFiles()) {
                                 if (df.delete()) {
-                                    //_manager.addMessage(_("Data file deleted: {0}", df.getAbsolutePath()));
+                                    //_manager.addMessage(_t("Data file deleted: {0}", df.getAbsolutePath()));
                                 } else {
-                                    _manager.addMessage(_("Data file could not be deleted: {0}", df.getAbsolutePath()));
+                                    _manager.addMessage(_t("Data file could not be deleted: {0}", df.getAbsolutePath()));
                                 }
                             }
                             // step 2 delete dirs bottom-up
@@ -1091,17 +1099,17 @@ public class I2PSnarkServlet extends BasicServlet {
                             for (File df : dirs) {
                                 if (df.delete()) {
                                     ok = true;
-                                    //_manager.addMessage(_("Data dir deleted: {0}", df.getAbsolutePath()));
+                                    //_manager.addMessage(_t("Data dir deleted: {0}", df.getAbsolutePath()));
                                 } else {
                                     ok = false;
-                                    _manager.addMessage(_("Directory could not be deleted: {0}", df.getAbsolutePath()));
+                                    _manager.addMessage(_t("Directory could not be deleted: {0}", df.getAbsolutePath()));
                                     if (_log.shouldLog(Log.WARN))
                                         _log.warn("Could not delete dir " + df);
                                 }
                             }
                             // step 3 message for base (last one)
                             if (ok)
-                                _manager.addMessage(_("Directory deleted: {0}", storage.getBase()));
+                                _manager.addMessage(_t("Directory deleted: {0}", storage.getBase()));
                             break;
                         }
                     }
@@ -1111,6 +1119,7 @@ public class I2PSnarkServlet extends BasicServlet {
             String dataDir = req.getParameter("nofilter_dataDir");
             boolean filesPublic = req.getParameter("filesPublic") != null;
             boolean autoStart = req.getParameter("autoStart") != null;
+            boolean smartSort = req.getParameter("smartSort") != null;
             String seedPct = req.getParameter("seedPct");
             String eepHost = req.getParameter("eepHost");
             String eepPort = req.getParameter("eepPort");
@@ -1126,7 +1135,7 @@ public class I2PSnarkServlet extends BasicServlet {
             boolean useDHT = req.getParameter("useDHT") != null;
             //String openTrackers = req.getParameter("openTrackers");
             String theme = req.getParameter("theme");
-            _manager.updateConfig(dataDir, filesPublic, autoStart, refreshDel, startupDel, pageSize,
+            _manager.updateConfig(dataDir, filesPublic, autoStart, smartSort, refreshDel, startupDel, pageSize,
                                   seedPct, eepHost, eepPort, i2cpHost, i2cpPort, i2cpOpts,
                                   upLimit, upBW, useOpenTrackers, useDHT, theme);
             // update servlet
@@ -1152,18 +1161,18 @@ public class I2PSnarkServlet extends BasicServlet {
                 if (baseFile.exists()) {
                     String torrentName = baseFile.getName();
                     if (torrentName.toLowerCase(Locale.US).endsWith(".torrent")) {
-                        _manager.addMessage(_("Cannot add a torrent ending in \".torrent\": {0}", baseFile.getAbsolutePath()));
+                        _manager.addMessage(_t("Cannot add a torrent ending in \".torrent\": {0}", baseFile.getAbsolutePath()));
                         return;
                     }
                     Snark snark = _manager.getTorrentByBaseName(torrentName);
                     if (snark != null) {
-                        _manager.addMessage(_("Torrent with this name is already running: {0}", torrentName));
+                        _manager.addMessage(_t("Torrent with this name is already running: {0}", torrentName));
                         return;
                     }
                     if (isParentOf(baseFile,_manager.getDataDir()) ||
                         isParentOf(baseFile, _manager.util().getContext().getBaseDir()) ||
                         isParentOf(baseFile, _manager.util().getContext().getConfigDir())) {
-                        _manager.addMessage(_("Cannot add a torrent including an I2P directory: {0}", baseFile.getAbsolutePath()));
+                        _manager.addMessage(_t("Cannot add a torrent including an I2P directory: {0}", baseFile.getAbsolutePath()));
                         return;
                     }
                     Collection<Snark> snarks = _manager.getTorrents();
@@ -1173,12 +1182,12 @@ public class I2PSnarkServlet extends BasicServlet {
                             continue;
                         File sbase = storage.getBase();
                         if (isParentOf(sbase, baseFile)) {
-                            _manager.addMessage(_("Cannot add torrent {0} inside another torrent: {1}",
+                            _manager.addMessage(_t("Cannot add torrent {0} inside another torrent: {1}",
                                                   baseFile.getAbsolutePath(), sbase));
                             return;
                         }
                         if (isParentOf(baseFile, sbase)) {
-                            _manager.addMessage(_("Cannot add torrent {0} including another torrent: {1}",
+                            _manager.addMessage(_t("Cannot add torrent {0} including another torrent: {1}",
                                                   baseFile.getAbsolutePath(), sbase));
                             return;
                         }
@@ -1204,7 +1213,7 @@ public class I2PSnarkServlet extends BasicServlet {
                     if (!backupURLs.isEmpty()) {
                         // BEP 12 - Put primary first, then the others, each as the sole entry in their own list
                         if (announceURL == null) {
-                            _manager.addMessage(_("Error - Cannot include alternate trackers without a primary tracker"));
+                            _manager.addMessage(_t("Error - Cannot include alternate trackers without a primary tracker"));
                             return;
                         }
                         backupURLs.add(0, announceURL);
@@ -1217,7 +1226,7 @@ public class I2PSnarkServlet extends BasicServlet {
                                 hasPublic = true;
                         }
                         if (hasPrivate && hasPublic) {
-                            _manager.addMessage(_("Error - Cannot mix private and public trackers in a torrent"));
+                            _manager.addMessage(_t("Error - Cannot mix private and public trackers in a torrent"));
                             return;
                         }
                         announceList = new ArrayList<List<String>>(backupURLs.size());
@@ -1230,7 +1239,7 @@ public class I2PSnarkServlet extends BasicServlet {
                         // it shouldn't be THAT bad, so keep it in this thread.
                         // TODO thread it for big torrents, perhaps a la FetchAndAdd
                         boolean isPrivate = _manager.getPrivateTrackers().contains(announceURL);
-                        Storage s = new Storage(_manager.util(), baseFile, announceURL, announceList, isPrivate, null);
+                        Storage s = new Storage(_manager.util(), baseFile, announceURL, announceList, null, isPrivate, null);
                         s.close(); // close the files... maybe need a way to pass this Storage to addTorrent rather than starting over
                         MetaInfo info = s.getMetaInfo();
                         File torrentFile = new File(_manager.getDataDir(), s.getBaseName() + ".torrent");
@@ -1239,18 +1248,18 @@ public class I2PSnarkServlet extends BasicServlet {
                         boolean ok = _manager.addTorrent(info, s.getBitField(), torrentFile.getAbsolutePath(), baseFile, true);
                         if (!ok)
                             return;
-                        _manager.addMessage(_("Torrent created for \"{0}\"", baseFile.getName()) + ": " + torrentFile.getAbsolutePath());
+                        _manager.addMessage(_t("Torrent created for \"{0}\"", baseFile.getName()) + ": " + torrentFile.getAbsolutePath());
                         if (announceURL != null && !_manager.util().getOpenTrackers().contains(announceURL))
-                            _manager.addMessage(_("Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"", baseFile.getName()));
+                            _manager.addMessage(_t("Many I2P trackers require you to register new torrents before seeding - please do so before starting \"{0}\"", baseFile.getName()));
                     } catch (IOException ioe) {
-                        _manager.addMessage(_("Error creating a torrent for \"{0}\"", baseFile.getAbsolutePath()) + ": " + ioe);
+                        _manager.addMessage(_t("Error creating a torrent for \"{0}\"", baseFile.getAbsolutePath()) + ": " + ioe);
                         _log.error("Error creating a torrent", ioe);
                     }
                 } else {
-                    _manager.addMessage(_("Cannot create a torrent for the nonexistent data: {0}", baseFile.getAbsolutePath()));
+                    _manager.addMessage(_t("Cannot create a torrent for the nonexistent data: {0}", baseFile.getAbsolutePath()));
                 }
             } else {
-                _manager.addMessage(_("Error creating torrent - you must enter a file or directory"));
+                _manager.addMessage(_t("Error creating torrent - you must enter a file or directory"));
             }
         } else if ("StopAll".equals(action)) {
             _manager.stopAllTorrents(false);
@@ -1281,7 +1290,7 @@ public class I2PSnarkServlet extends BasicServlet {
 
     /** @since 0.9 */
     private void processTrackerForm(String action, HttpServletRequest req) {
-        if (action.equals(_("Delete selected")) || action.equals(_("Save tracker configuration"))) {
+        if (action.equals(_t("Delete selected")) || action.equals(_t("Save tracker configuration"))) {
             boolean changed = false;
             Map<String, Tracker> trackers = _manager.getTrackerMap();
             List<String> removed = new ArrayList<String>();
@@ -1298,7 +1307,7 @@ public class I2PSnarkServlet extends BasicServlet {
                      Tracker t;
                      if ((t = trackers.remove(k)) != null) {
                         removed.add(t.announceURL);
-                        _manager.addMessage(_("Removed") + ": " + DataHelper.stripHTML(k));
+                        _manager.addMessage(_t("Removed") + ": " + DataHelper.stripHTML(k));
                         changed = true;
                      }
                 } else if (k.startsWith("ttype_")) {
@@ -1330,7 +1339,7 @@ public class I2PSnarkServlet extends BasicServlet {
             if (!priv.equals(oldPriv))
                 _manager.savePrivateTrackers(priv);
 
-        } else if (action.equals(_("Add tracker"))) {
+        } else if (action.equals(_t("Add tracker"))) {
             String name = req.getParameter("tname");
             String hurl = req.getParameter("thurl");
             String aurl = req.getParameter("taurl");
@@ -1353,15 +1362,15 @@ public class I2PSnarkServlet extends BasicServlet {
                         _manager.savePrivateTrackers(newPriv);
                     }
                 } else {
-                    _manager.addMessage(_("Enter valid tracker name and URLs"));
+                    _manager.addMessage(_t("Enter valid tracker name and URLs"));
                 }
             } else {
-                _manager.addMessage(_("Enter valid tracker name and URLs"));
+                _manager.addMessage(_t("Enter valid tracker name and URLs"));
             }
-        } else if (action.equals(_("Restore defaults"))) {
+        } else if (action.equals(_t("Restore defaults"))) {
             _manager.setDefaultTrackerMap();
             _manager.saveOpenTrackers(null);
-            _manager.addMessage(_("Restored default trackers"));
+            _manager.addMessage(_t("Restored default trackers"));
         } else {
             _manager.addMessage("Unknown POST action: \"" + action + '\"');
         }
@@ -1394,6 +1403,10 @@ public class I2PSnarkServlet extends BasicServlet {
                     sort = Integer.parseInt(ssort);
                 } catch (NumberFormatException nfe) {}
             }
+            if (_manager.isSmartSortEnabled())
+                Sorters.setPattern(Translate.getLanguage(_manager.util().getContext()));
+            else
+                Sorters.setPattern(null);
             try {
                 Collections.sort(rv, Sorters.getComparator(sort, this));
             } catch (IllegalArgumentException iae) {
@@ -1469,38 +1482,40 @@ public class I2PSnarkServlet extends BasicServlet {
         String rowClass = (row % 2 == 0 ? "snarkTorrentEven" : "snarkTorrentOdd");
         String statusString;
         if (snark.isChecking()) {
-            statusString = toThemeImg("stalled", "", _("Checking")) + "</td>" +
-                           "<td class=\"snarkTorrentStatus\">" + _("Checking");
+            statusString = toThemeImg("stalled", "", _t("Checking")) + "</td>" +
+                           "<td class=\"snarkTorrentStatus\">" + _t("Checking") + ' ' +
+                           (new DecimalFormat("0.00%")).format(snark.getCheckingProgress());
         } else if (snark.isAllocating()) {
-            statusString = toThemeImg("stalled", "", _("Allocating")) + "</td>" +
-                           "<td class=\"snarkTorrentStatus\">" + _("Allocating");
-        } else if (err != null && curPeers == 0) {
+            statusString = toThemeImg("stalled", "", _t("Allocating")) + "</td>" +
+                           "<td class=\"snarkTorrentStatus\">" + _t("Allocating");
+        } else if (err != null && isRunning && curPeers == 0) {
+        //} else if (err != null && curPeers == 0) {
             // Also don't show if seeding... but then we won't see the not-registered error
             //       && remaining != 0 && needed != 0) {
             // let's only show this if we have no peers, otherwise PEX and DHT should bail us out, user doesn't care
             //if (isRunning && curPeers > 0 && !showPeers)
             //    statusString = "<img alt=\"\" border=\"0\" src=\"" + _imgPath + "trackererror.png\" title=\"" + err + "\"></td>" +
-            //                   "<td class=\"snarkTorrentStatus " + rowClass + "\">" + _("Tracker Error") +
+            //                   "<td class=\"snarkTorrentStatus " + rowClass + "\">" + _t("Tracker Error") +
             //                   ": <a href=\"" + uri + "?p=" + Base64.encode(snark.getInfoHash()) + "\">" +
             //                   curPeers + thinsp(noThinsp) +
             //                   ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
             //else if (isRunning)
-            if (isRunning)
+            //if (isRunning) {
                 statusString = toThemeImg("trackererror", "", err) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("Tracker Error") +
+                               "<td class=\"snarkTorrentStatus\">" + _t("Tracker Error") +
                                ": " + curPeers + thinsp(noThinsp) +
                                ngettext("1 peer", "{0} peers", knownPeers);
-            else {
-                if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
-                    err = DataHelper.escapeHTML(err.substring(0, MAX_DISPLAYED_ERROR_LENGTH)) + "&hellip;";
-                else
-                    err = DataHelper.escapeHTML(err);
-                statusString = toThemeImg("trackererror", "", err) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("Tracker Error");
-            }
+            //} else {
+            //    if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
+            //        err = DataHelper.escapeHTML(err.substring(0, MAX_DISPLAYED_ERROR_LENGTH)) + "&hellip;";
+            //    else
+            //        err = DataHelper.escapeHTML(err);
+            //    statusString = toThemeImg("trackererror", "", err) + "</td>" +
+            //                   "<td class=\"snarkTorrentStatus\">" + _t("Tracker Error");
+            //}
         } else if (snark.isStarting()) {
-            statusString = toThemeImg("stalled", "", _("Starting")) + "</td>" +
-                           "<td class=\"snarkTorrentStatus\">" + _("Starting");
+            statusString = toThemeImg("stalled", "", _t("Starting")) + "</td>" +
+                           "<td class=\"snarkTorrentStatus\">" + _t("Starting");
         } else if (remaining == 0 || needed == 0) {  // < 0 means no meta size yet
             // partial complete or seeding
             if (isRunning) {
@@ -1508,11 +1523,11 @@ public class I2PSnarkServlet extends BasicServlet {
                 String txt;
                 if (remaining == 0) {
                     img = "seeding";
-                    txt = _("Seeding");
+                    txt = _t("Seeding");
                 } else {
                     // partial
                     img = "complete";
-                    txt = _("Complete");
+                    txt = _t("Complete");
                 }
                 if (curPeers > 0 && !showPeers)
                     statusString = toThemeImg(img, "", txt) + "</td>" +
@@ -1526,42 +1541,42 @@ public class I2PSnarkServlet extends BasicServlet {
                                ": " + curPeers + thinsp(noThinsp) +
                                ngettext("1 peer", "{0} peers", knownPeers);
             } else {
-                statusString = toThemeImg("complete", "", _("Complete")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("Complete");
+                statusString = toThemeImg("complete", "", _t("Complete")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("Complete");
             }
         } else {
             if (isRunning && curPeers > 0 && downBps > 0 && !showPeers)
-                statusString = toThemeImg("downloading", "", _("OK")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("OK") +
+                statusString = toThemeImg("downloading", "", _t("OK")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("OK") +
                                ": <a href=\"" + uri + getQueryString(req, Base64.encode(snark.getInfoHash()), null, null) + "\">" +
                                curPeers + thinsp(noThinsp) +
                                ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
             else if (isRunning && curPeers > 0 && downBps > 0)
-                statusString = toThemeImg("downloading", "", _("OK")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("OK") +
+                statusString = toThemeImg("downloading", "", _t("OK")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("OK") +
                                ": " + curPeers + thinsp(noThinsp) +
                                ngettext("1 peer", "{0} peers", knownPeers);
             else if (isRunning && curPeers > 0 && !showPeers)
-                statusString = toThemeImg("stalled", "", _("Stalled")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("Stalled") +
+                statusString = toThemeImg("stalled", "", _t("Stalled")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("Stalled") +
                                ": <a href=\"" + uri + getQueryString(req, Base64.encode(snark.getInfoHash()), null, null) + "\">" +
                                curPeers + thinsp(noThinsp) +
                                ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
             else if (isRunning && curPeers > 0)
-                statusString = toThemeImg("stalled", "", _("Stalled")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("Stalled") +
+                statusString = toThemeImg("stalled", "", _t("Stalled")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("Stalled") +
                                ": " + curPeers + thinsp(noThinsp) +
                                ngettext("1 peer", "{0} peers", knownPeers);
             else if (isRunning && knownPeers > 0)
-                statusString = toThemeImg("nopeers", "", _("No Peers")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("No Peers") +
+                statusString = toThemeImg("nopeers", "", _t("No Peers")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("No Peers") +
                                ": 0" + thinsp(noThinsp) + knownPeers ;
             else if (isRunning)
-                statusString = toThemeImg("nopeers", "", _("No Peers")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("No Peers");
+                statusString = toThemeImg("nopeers", "", _t("No Peers")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("No Peers");
             else
-                statusString = toThemeImg("stopped", "", _("Stopped")) + "</td>" +
-                               "<td class=\"snarkTorrentStatus\">" + _("Stopped");
+                statusString = toThemeImg("stopped", "", _t("Stopped")) + "</td>" +
+                               "<td class=\"snarkTorrentStatus\">" + _t("Stopped");
         }
         
         out.write("<tr class=\"" + rowClass + "\">");
@@ -1590,7 +1605,7 @@ public class I2PSnarkServlet extends BasicServlet {
             // gets us to the details page instead of the file.
             StringBuilder buf = new StringBuilder(128);
             buf.append("<a href=\"").append(encodedBaseName)
-               .append("/\" title=\"").append(_("Torrent details"))
+               .append("/\" title=\"").append(_t("Torrent details"))
                .append("\">");
             out.write(buf.toString());
         }
@@ -1625,9 +1640,9 @@ public class I2PSnarkServlet extends BasicServlet {
                 buf.append('/');
             buf.append("\" title=\"");
             if (isMultiFile)
-                buf.append(_("View files"));
+                buf.append(_t("View files"));
             else
-                buf.append(_("Open file"));
+                buf.append(_t("Open file"));
             buf.append("\">");
             out.write(buf.toString());
         }
@@ -1679,9 +1694,9 @@ public class I2PSnarkServlet extends BasicServlet {
                           getQueryString(req, "", null, null).replace("?", "&amp;") + "\"><img title=\"");
             else
                 out.write("<input type=\"image\" name=\"action_Stop_" + b64 + "\" value=\"foo\" title=\"");
-            out.write(_("Stop the torrent"));
+            out.write(_t("Stop the torrent"));
             out.write("\" src=\"" + _imgPath + "stop.png\" alt=\"");
-            out.write(_("Stop"));
+            out.write(_t("Stop"));
             out.write("\">");
             if (isDegraded)
                 out.write("</a>");
@@ -1694,9 +1709,9 @@ public class I2PSnarkServlet extends BasicServlet {
                               getQueryString(req, "", null, null).replace("?", "&amp;") + "\"><img title=\"");
                 else
                     out.write("<input type=\"image\" name=\"action_Start_" + b64 + "\" value=\"foo\" title=\"");
-                out.write(_("Start the torrent"));
+                out.write(_t("Start the torrent"));
                 out.write("\" src=\"" + _imgPath + "start.png\" alt=\"");
-                out.write(_("Start"));
+                out.write(_t("Start"));
                 out.write("\">");
                 if (isDegraded)
                     out.write("</a>");
@@ -1709,16 +1724,16 @@ public class I2PSnarkServlet extends BasicServlet {
                               getQueryString(req, "", null, null).replace("?", "&amp;") + "\"><img title=\"");
                 else
                     out.write("<input type=\"image\" name=\"action_Remove_" + b64 + "\" value=\"foo\" title=\"");
-                out.write(_("Remove the torrent from the active list, deleting the .torrent file"));
+                out.write(_t("Remove the torrent from the active list, deleting the .torrent file"));
                 out.write("\" onclick=\"if (!confirm('");
                 // Can't figure out how to escape double quotes inside the onclick string.
                 // Single quotes in translate strings with parameters must be doubled.
                 // Then the remaining single quote must be escaped
-                out.write(_("Are you sure you want to delete the file \\''{0}\\'' (downloaded data will not be deleted) ?",
+                out.write(_t("Are you sure you want to delete the file \\''{0}\\'' (downloaded data will not be deleted) ?",
                             escapeJSString(snark.getName())));
                 out.write("')) { return false; }\"");
                 out.write(" src=\"" + _imgPath + "remove.png\" alt=\"");
-                out.write(_("Remove"));
+                out.write(_t("Remove"));
                 out.write("\">");
                 if (isDegraded)
                     out.write("</a>");
@@ -1731,16 +1746,16 @@ public class I2PSnarkServlet extends BasicServlet {
                           getQueryString(req, "", null, null).replace("?", "&amp;") + "\"><img title=\"");
             else
                 out.write("<input type=\"image\" name=\"action_Delete_" + b64 + "\" value=\"foo\" title=\"");
-            out.write(_("Delete the .torrent file and the associated data file(s)"));
+            out.write(_t("Delete the .torrent file and the associated data file(s)"));
             out.write("\" onclick=\"if (!confirm('");
             // Can't figure out how to escape double quotes inside the onclick string.
             // Single quotes in translate strings with parameters must be doubled.
             // Then the remaining single quote must be escaped
-            out.write(_("Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?",
+            out.write(_t("Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded data?",
                         escapeJSString(fullBasename)));
             out.write("')) { return false; }\"");
             out.write(" src=\"" + _imgPath + "delete.png\" alt=\"");
-            out.write(_("Delete"));
+            out.write(_t("Delete"));
             out.write("\">");
             if (isDegraded)
                 out.write("</a>");
@@ -1760,7 +1775,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 String ch = pid != null ? pid.toString().substring(0, 4) : "????";
                 String client;
                 if ("AwMD".equals(ch))
-                    client = _("I2PSnark");
+                    client = _t("I2PSnark");
                 else if ("BFJT".equals(ch))
                     client = "I2PRufus";
                 else if ("TTMt".equals(ch))
@@ -1776,7 +1791,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 else if ("LUtU".equals(ch))
                     client = "KTorrent" + getAzVersion(pid.getID());
                 else
-                    client = _("Unknown") + " (" + ch + ')';
+                    client = _t("Unknown") + " (" + ch + ')';
                 out.write(client + "&nbsp;&nbsp;<tt>" + peer.toString().substring(5, 9)+ "</tt>");
                 if (showDebug)
                     out.write(" inactive " + (peer.getInactiveTime() / 1000) + "s");
@@ -1788,7 +1803,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 if (isValid) {
                     pct = (float) (100.0 * peer.completed() / meta.getPieces());
                     if (pct >= 100.0)
-                        out.write(_("Seed"));
+                        out.write(_t("Seed"));
                     else {
                         String ps = String.valueOf(pct);
                         if (ps.length() > 5)
@@ -1811,9 +1826,9 @@ public class I2PSnarkServlet extends BasicServlet {
                     } else {
                         out.write("<span class=\"choked\"><a title=\"");
                         if (!peer.isInteresting())
-                            out.write(_("Uninteresting (The peer has no pieces we need)"));
+                            out.write(_t("Uninteresting (The peer has no pieces we need)"));
                         else
-                            out.write(_("Choked (The peer is not allowing us to request pieces)"));
+                            out.write(_t("Choked (The peer is not allowing us to request pieces)"));
                         out.write("\">");
                         out.write(formatSize(peer.getDownloadRate()) + "ps</a></span>");
                     }
@@ -1833,9 +1848,9 @@ public class I2PSnarkServlet extends BasicServlet {
                     } else {
                         out.write("<span class=\"choked\"><a title=\"");
                         if (!peer.isInterested())
-                            out.write(_("Uninterested (We have no pieces the peer needs)"));
+                            out.write(_t("Uninterested (We have no pieces the peer needs)"));
                         else
-                            out.write(_("Choking (We are not allowing the peer to request pieces)"));
+                            out.write(_t("Choking (We are not allowing the peer to request pieces)"));
                         out.write("\">");
                         out.write(formatSize(peer.getUploadRate()) + "ps</a></span>");
                     }
@@ -1951,7 +1966,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 StringBuilder buf = new StringBuilder(128);
                 buf.append("<a href=\"").append(baseURL).append("details.php?dllist=1&amp;filelist=1&amp;info_hash=")
                    .append(TrackerClient.urlencode(infohash))
-                   .append("\" title=\"").append(_("Details at {0} tracker", name)).append("\" target=\"_blank\">");
+                   .append("\" title=\"").append(_t("Details at {0} tracker", name)).append("\" target=\"_blank\">");
                 return buf.toString();
             }
         }
@@ -1968,7 +1983,7 @@ public class I2PSnarkServlet extends BasicServlet {
         if (linkUrl != null) {
             StringBuilder buf = new StringBuilder(128);
             buf.append(linkUrl);
-            toThemeImg(buf, "details", _("Info"), "");
+            toThemeImg(buf, "details", _t("Info"), "");
             buf.append("</a>");
             return buf.toString();
         }
@@ -2041,31 +2056,31 @@ public class I2PSnarkServlet extends BasicServlet {
         out.write("<div class=\"addtorrentsection\"><span class=\"snarkConfigTitle\">");
         out.write(toThemeImg("add"));
         out.write(' ');
-        out.write(_("Add Torrent"));
+        out.write(_t("Add Torrent"));
 
         out.write("</span><hr>\n<table border=\"0\"><tr><td>");
-        out.write(_("From URL"));
+        out.write(_t("From URL"));
         out.write(":<td><input type=\"text\" name=\"nofilter_newURL\" size=\"85\" value=\"" + newURL + "\" spellcheck=\"false\"");
         out.write(" title=\"");
-        out.write(_("Enter the torrent file download URL (I2P only), magnet link, maggot link, or info hash"));
+        out.write(_t("Enter the torrent file download URL (I2P only), magnet link, maggot link, or info hash"));
         out.write("\"> \n");
         // not supporting from file at the moment, since the file name passed isn't always absolute (so it may not resolve)
         //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>");
         out.write("<input type=\"submit\" class=\"add\" value=\"");
-        out.write(_("Add torrent"));
+        out.write(_t("Add torrent"));
         out.write("\" name=\"foo\" ><br>\n" +
 
                   "<tr><td>");
-        out.write(_("Data dir"));
+        out.write(_t("Data dir"));
         out.write(":<td><input type=\"text\" name=\"nofilter_newDir\" size=\"85\" value=\"\" spellcheck=\"false\"");
         out.write(" title=\"");
-        out.write(_("Enter the directory to save the data in (default {0})", _manager.getDataDir().getAbsolutePath()));
+        out.write(_t("Enter the directory to save the data in (default {0})", _manager.getDataDir().getAbsolutePath()));
         out.write("\"></td></tr>\n");
 
         out.write("<tr><td>&nbsp;<td><span class=\"snarkAddInfo\">");
-        out.write(_("You can also copy .torrent files to: {0}.", "<code>" + _manager.getDataDir().getAbsolutePath() + "</code>"));
+        out.write(_t("You can also copy .torrent files to: {0}.", "<code>" + _manager.getDataDir().getAbsolutePath() + "</code>"));
         out.write("\n");
-        out.write(_("Removing a .torrent will cause it to stop."));
+        out.write(_t("Removing a .torrent will cause it to stop."));
         out.write("<br></span></table>\n");
         out.write("</div></form></div>");  
     }
@@ -2078,24 +2093,24 @@ public class I2PSnarkServlet extends BasicServlet {
         out.write("<span class=\"snarkConfigTitle\">");
         out.write(toThemeImg("create"));
         out.write(' ');
-        out.write(_("Create Torrent"));
+        out.write(_t("Create Torrent"));
         out.write("</span><hr>\n<table border=\"0\"><tr><td>");
         //out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
-        out.write(_("Data to seed"));
+        out.write(_t("Data to seed"));
         out.write(":<td>"
                   + "<input type=\"text\" name=\"nofilter_baseFile\" size=\"85\" value=\""
                   + "\" spellcheck=\"false\" title=\"");
-        out.write(_("File or directory to seed (full path or within the directory {0} )",
+        out.write(_t("File or directory to seed (full path or within the directory {0} )",
                     _manager.getDataDir().getAbsolutePath() + File.separatorChar));
         out.write("\" ><tr><td>\n");
-        out.write(_("Trackers"));
+        out.write(_t("Trackers"));
         out.write(":<td><table style=\"width: 30%;\"><tr><td></td><td align=\"center\">");
-        out.write(_("Primary"));
+        out.write(_t("Primary"));
         out.write("</td><td align=\"center\">");
-        out.write(_("Alternates"));
+        out.write(_t("Alternates"));
         out.write("</td><td rowspan=\"0\">" +
                   " <input type=\"submit\" class=\"create\" value=\"");
-        out.write(_("Create torrent"));
+        out.write(_t("Create torrent"));
         out.write("\" name=\"foo\" >" +
                   "</td></tr>\n");
         for (Tracker t : sortedTrackers) {
@@ -2113,16 +2128,16 @@ public class I2PSnarkServlet extends BasicServlet {
             out.write("\" value=\"foo\"></td></tr>\n");
         }
         out.write("<tr><td><i>");
-        out.write(_("none"));
+        out.write(_t("none"));
         out.write("</i></td><td align=\"center\"><input type=\"radio\" name=\"announceURL\" value=\"none\"");
         if (_lastAnnounceURL == null)
             out.write(" checked");
         out.write("></td><td></td></tr></table>\n");
         // make the user add a tracker on the config form now
-        //out.write(_("or"));
+        //out.write(_t("or"));
         //out.write("&nbsp;<input type=\"text\" name=\"announceURLOther\" size=\"57\" value=\"http://\" " +
         //          "title=\"");
-        //out.write(_("Specify custom tracker announce URL"));
+        //out.write(_t("Specify custom tracker announce URL"));
         //out.write("\" > " +
         out.write("</td></tr>" +
                   "</table>\n" +
@@ -2135,6 +2150,7 @@ public class I2PSnarkServlet extends BasicServlet {
         String dataDir = _manager.getDataDir().getAbsolutePath();
         boolean filesPublic = _manager.areFilesPublic();
         boolean autoStart = _manager.shouldAutoStart();
+        boolean smartSort = _manager.isSmartSortEnabled();
         boolean useOpenTrackers = _manager.util().shouldUseOpenTrackers();
         //String openTrackers = _manager.util().getOpenTrackerString();
         boolean useDHT = _manager.util().shouldUseDHT();
@@ -2146,32 +2162,40 @@ public class I2PSnarkServlet extends BasicServlet {
         out.write("<span class=\"snarkConfigTitle\">");
         out.write(toThemeImg("config"));
         out.write(' ');
-        out.write(_("Configuration"));
+        out.write(_t("Configuration"));
         out.write("</span><hr>\n"   +
                   "<table border=\"0\"><tr><td>");
 
-        out.write(_("Data directory"));
+        out.write(_t("Data directory"));
         out.write(": <td><input name=\"nofilter_dataDir\" size=\"80\" value=\"" +
                   DataHelper.escapeHTML(dataDir) + "\" spellcheck=\"false\"></td>\n" +
 
                   "<tr><td>");
-        out.write(_("Files readable by all"));
+        out.write(_t("Files readable by all"));
         out.write(": <td><input type=\"checkbox\" class=\"optbox\" name=\"filesPublic\" value=\"true\" " 
                   + (filesPublic ? "checked " : "") 
                   + "title=\"");
-        out.write(_("If checked, other users may access the downloaded files"));
+        out.write(_t("If checked, other users may access the downloaded files"));
         out.write("\" >" +
 
                   "<tr><td>");
-        out.write(_("Auto start torrents"));
+        out.write(_t("Auto start torrents"));
         out.write(": <td><input type=\"checkbox\" class=\"optbox\" name=\"autoStart\" value=\"true\" " 
                   + (autoStart ? "checked " : "") 
                   + "title=\"");
-        out.write(_("If checked, automatically start torrents that are added"));
+        out.write(_t("If checked, automatically start torrents that are added"));
         out.write("\" >" +
 
                   "<tr><td>");
-        out.write(_("Theme"));
+        out.write(_t("Smart torrent sorting"));
+        out.write(": <td><input type=\"checkbox\" class=\"optbox\" name=\"smartSort\" value=\"true\" " 
+                  + (smartSort ? "checked " : "") 
+                  + "title=\"");
+        out.write(_t("If checked, ignore words such as 'the' when sorting"));
+        out.write("\" >" +
+
+                  "<tr><td>");
+        out.write(_t("Theme"));
         out.write(": <td><select name='theme'>");
         String theme = _manager.getTheme();
         String[] themes = _manager.getThemes();
@@ -2185,7 +2209,7 @@ public class I2PSnarkServlet extends BasicServlet {
         out.write("</select>\n" +
 
                   "<tr><td>");
-        out.write(_("Refresh time"));
+        out.write(_t("Refresh time"));
         out.write(": <td><select name=\"refreshDelay\">");
         int delay = _manager.getRefreshDelaySeconds();
         for (int i = 0; i < times.length; i++) {
@@ -2198,21 +2222,21 @@ public class I2PSnarkServlet extends BasicServlet {
             if (times[i] > 0)
                 out.write(DataHelper.formatDuration2(times[i] * 1000));
             else
-                out.write(_("Never"));
+                out.write(_t("Never"));
             out.write("</option>\n");
         }
         out.write("</select><br>" +
 
                   "<tr><td>");
-        out.write(_("Startup delay"));
+        out.write(_t("Startup delay"));
         out.write(": <td><input name=\"startupDelay\" size=\"4\" class=\"r\" value=\"" + _manager.util().getStartupDelay() + "\"> ");
-        out.write(_("minutes"));
+        out.write(_t("minutes"));
         out.write("<br>\n" +
 
                   "<tr><td>");
-        out.write(_("Page size"));
+        out.write(_t("Page size"));
         out.write(": <td><input name=\"pageSize\" size=\"4\" maxlength=\"6\" class=\"r\" value=\"" + _manager.getPageSize() + "\"> ");
-        out.write(_("torrents"));
+        out.write(_t("torrents"));
         out.write("<br>\n"); 
 
 
@@ -2236,39 +2260,39 @@ public class I2PSnarkServlet extends BasicServlet {
         out.write("</select><br>\n");
 */
         out.write("<tr><td>");
-        out.write(_("Total uploader limit"));
+        out.write(_t("Total uploader limit"));
         out.write(": <td><input type=\"text\" name=\"upLimit\" class=\"r\" value=\""
                   + _manager.util().getMaxUploaders() + "\" size=\"4\" maxlength=\"3\" > ");
-        out.write(_("peers"));
+        out.write(_t("peers"));
         out.write("<br>\n" +
 
                   "<tr><td>");
-        out.write(_("Up bandwidth limit"));
+        out.write(_t("Up bandwidth limit"));
         out.write(": <td><input type=\"text\" name=\"upBW\" class=\"r\" value=\""
                   + _manager.util().getMaxUpBW() + "\" size=\"4\" maxlength=\"4\" > KBps <i>");
-        out.write(_("Half available bandwidth recommended."));
+        out.write(_t("Half available bandwidth recommended."));
         out.write(" [<a href=\"/config.jsp\" target=\"blank\">");
-        out.write(_("View or change router bandwidth"));
+        out.write(_t("View or change router bandwidth"));
         out.write("</a>]</i><br>\n" +
         
                   "<tr><td>");
-        out.write(_("Use open trackers also"));
+        out.write(_t("Use open trackers also"));
         out.write(": <td><input type=\"checkbox\" class=\"optbox\" name=\"useOpenTrackers\" value=\"true\" " 
                   + (useOpenTrackers ? "checked " : "") 
                   + "title=\"");
-        out.write(_("If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"));
+        out.write(_t("If checked, announce torrents to open trackers as well as the tracker listed in the torrent file"));
         out.write("\" ></td></tr>\n" +
         
                   "<tr><td>");
-        out.write(_("Enable DHT"));
+        out.write(_t("Enable DHT"));
         out.write(": <td><input type=\"checkbox\" class=\"optbox\" name=\"useDHT\" value=\"true\" " 
                   + (useDHT ? "checked " : "") 
                   + "title=\"");
-        out.write(_("If checked, use DHT"));
+        out.write(_t("If checked, use DHT"));
         out.write("\" ></td></tr>\n");
 
         //          "<tr><td>");
-        //out.write(_("Open tracker announce URLs"));
+        //out.write(_t("Open tracker announce URLs"));
         //out.write(": <td><input type=\"text\" name=\"openTrackers\" value=\""
         //          + openTrackers + "\" size=\"50\" ><br>\n");
 
@@ -2280,13 +2304,13 @@ public class I2PSnarkServlet extends BasicServlet {
 
         Map<String, String> options = new TreeMap<String, String>(_manager.util().getI2CPOptions());
         out.write("<tr><td>");
-        out.write(_("Inbound Settings"));
+        out.write(_t("Inbound Settings"));
         out.write(":<td>");
         out.write(renderOptions(1, 10, 3, options.remove("inbound.quantity"), "inbound.quantity", TUNNEL));
         out.write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
         out.write(renderOptions(0, 4, 3, options.remove("inbound.length"), "inbound.length", HOP));
         out.write("<tr><td>");
-        out.write(_("Outbound Settings"));
+        out.write(_t("Outbound Settings"));
         out.write(":<td>");
         out.write(renderOptions(1, 10, 3, options.remove("outbound.quantity"), "outbound.quantity", TUNNEL));
         out.write("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;");
@@ -2294,12 +2318,12 @@ public class I2PSnarkServlet extends BasicServlet {
 
         if (!_context.isRouterContext()) {
             out.write("<tr><td>");
-            out.write(_("I2CP host"));
+            out.write(_t("I2CP host"));
             out.write(": <td><input type=\"text\" name=\"i2cpHost\" value=\"" 
                       + _manager.util().getI2CPHost() + "\" size=\"15\" > " +
 
                       "<tr><td>");
-            out.write(_("I2CP port"));
+            out.write(_t("I2CP port"));
             out.write(": <td><input type=\"text\" name=\"i2cpPort\" class=\"r\" value=\"" +
                       + _manager.util().getI2CPPort() + "\" size=\"5\" maxlength=\"5\" > <br>\n");
         }
@@ -2314,12 +2338,12 @@ public class I2PSnarkServlet extends BasicServlet {
             opts.append(key).append('=').append(val).append(' ');
         }
         out.write("<tr><td>");
-        out.write(_("I2CP options"));
+        out.write(_t("I2CP options"));
         out.write(": <td><textarea name=\"i2cpOpts\" cols=\"60\" rows=\"1\" wrap=\"off\" spellcheck=\"false\" >"
                   + opts.toString() + "</textarea><br>\n" +
                   "<tr><td colspan=\"2\">&nbsp;\n" +  // spacer
                   "<tr><td>&nbsp;<td><input type=\"submit\" class=\"accept\" value=\"");
-        out.write(_("Save configuration"));
+        out.write(_t("Save configuration"));
         out.write("\" name=\"foo\" >\n" +
                   "<tr><td colspan=\"2\">&nbsp;\n" +  // spacer
                   "</table></div></div></form>");
@@ -2334,22 +2358,22 @@ public class I2PSnarkServlet extends BasicServlet {
         buf.append("<span class=\"snarkConfigTitle\">");
         toThemeImg(buf, "config");
         buf.append(' ');
-        buf.append(_("Trackers"));
+        buf.append(_t("Trackers"));
         buf.append("</span><hr>\n"   +
                    "<table class=\"trackerconfig\"><tr><th>")
-           //.append(_("Remove"))
+           //.append(_t("Remove"))
            .append("</th><th>")
-           .append(_("Name"))
+           .append(_t("Name"))
            .append("</th><th>")
-           .append(_("Website URL"))
+           .append(_t("Website URL"))
            .append("</th><th>")
-           .append(_("Standard"))
+           .append(_t("Standard"))
            .append("</th><th>")
-           .append(_("Open"))
+           .append(_t("Open"))
            .append("</th><th>")
-           .append(_("Private"))
+           .append(_t("Private"))
            .append("</th><th>")
-           .append(_("Announce URL"))
+           .append(_t("Announce URL"))
            .append("</th></tr>\n");
         List<String> openTrackers = _manager.util().getOpenTrackers();
         List<String> privateTrackers = _manager.getPrivateTrackers();
@@ -2361,7 +2385,7 @@ public class I2PSnarkServlet extends BasicServlet {
             boolean isKnownOpen = _manager.util().isKnownOpenTracker(t.announceURL);
             boolean isOpen = isKnownOpen || openTrackers.contains(t.announceURL);
             buf.append("<tr><td><input type=\"checkbox\" class=\"optbox\" name=\"delete_")
-               .append(name).append("\" title=\"").append(_("Delete")).append("\">" +
+               .append(name).append("\" title=\"").append(_t("Delete")).append("\">" +
                        "</td><td>").append(name)
                .append("</td><td>").append(urlify(homeURL, 35))
                .append("</td><td><input type=\"radio\" class=\"optbox\" value=\"0\" name=\"ttype_")
@@ -2393,7 +2417,7 @@ public class I2PSnarkServlet extends BasicServlet {
                .append("</td></tr>\n");
         }
         buf.append("<tr><td><b>")
-           .append(_("Add")).append(":</b></td>" +
+           .append(_t("Add")).append(":</b></td>" +
                    "<td><input type=\"text\" class=\"trackername\" name=\"tname\" spellcheck=\"false\"></td>" +
                    "<td><input type=\"text\" class=\"trackerhome\" name=\"thurl\" spellcheck=\"false\"></td>" +
                    "<td><input type=\"radio\" class=\"optbox\" value=\"0\" name=\"add_tracker_type\" checked=\"checked\"></td>" +
@@ -2402,12 +2426,12 @@ public class I2PSnarkServlet extends BasicServlet {
                    "<td><input type=\"text\" class=\"trackerannounce\" name=\"taurl\" spellcheck=\"false\"></td></tr>\n" +
                    "<tr><td colspan=\"7\">&nbsp;</td></tr>\n" +  // spacer
                    "<tr><td colspan=\"2\"></td><td colspan=\"5\">\n" +
-                   "<input type=\"submit\" name=\"taction\" class=\"default\" value=\"").append(_("Add tracker")).append("\">\n" +
-                   "<input type=\"submit\" name=\"taction\" class=\"delete\" value=\"").append(_("Delete selected")).append("\">\n" +
-                   "<input type=\"submit\" name=\"taction\" class=\"add\" value=\"").append(_("Add tracker")).append("\">\n" +
-                   "<input type=\"submit\" name=\"taction\" class=\"accept\" value=\"").append(_("Save tracker configuration")).append("\">\n" +
-                   // "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" +
-                   "<input type=\"submit\" name=\"taction\" class=\"reload\" value=\"").append(_("Restore defaults")).append("\">\n" +
+                   "<input type=\"submit\" name=\"taction\" class=\"default\" value=\"").append(_t("Add tracker")).append("\">\n" +
+                   "<input type=\"submit\" name=\"taction\" class=\"delete\" value=\"").append(_t("Delete selected")).append("\">\n" +
+                   "<input type=\"submit\" name=\"taction\" class=\"add\" value=\"").append(_t("Add tracker")).append("\">\n" +
+                   "<input type=\"submit\" name=\"taction\" class=\"accept\" value=\"").append(_t("Save tracker configuration")).append("\">\n" +
+                   // "<input type=\"reset\" class=\"cancel\" value=\"").append(_t("Cancel")).append("\">\n" +
+                   "<input type=\"submit\" name=\"taction\" class=\"reload\" value=\"").append(_t("Restore defaults")).append("\">\n" +
                    "</td></tr>" +
                    "<tr><td colspan=\"7\">&nbsp;</td></tr>\n" +  // spacer
                    "</table></div></div></form>\n");
@@ -2419,7 +2443,7 @@ public class I2PSnarkServlet extends BasicServlet {
                   "<span class=\"snarkConfigTitle\"><a href=\"configure\">");
         out.write(toThemeImg("config"));
         out.write(' ');
-        out.write(_("Configuration"));
+        out.write(_t("Configuration"));
         out.write("</a></span></span></div>\n");
     }
 
@@ -2436,7 +2460,7 @@ public class I2PSnarkServlet extends BasicServlet {
             String trackerURL = magnet.getTrackerURL();
             _manager.addMagnet(name, ih, trackerURL, true, dataDir);
         } catch (IllegalArgumentException iae) {
-            _manager.addMessage(_("Invalid magnet URL {0}", url));
+            _manager.addMessage(_t("Invalid magnet URL {0}", url));
         }
     }
 
@@ -2471,17 +2495,17 @@ public class I2PSnarkServlet extends BasicServlet {
     }
 
     /** translate */
-    private String _(String s) {
+    private String _t(String s) {
         return _manager.util().getString(s);
     }
 
     /** translate */
-    private String _(String s, Object o) {
+    private String _t(String s, Object o) {
         return _manager.util().getString(s, o);
     }
 
     /** translate */
-    private String _(String s, Object o, Object o2) {
+    private String _t(String s, Object o, Object o2) {
         return _manager.util().getString(s, o, o2);
     }
 
@@ -2611,10 +2635,21 @@ public class I2PSnarkServlet extends BasicServlet {
             String[] val = postParams.get("nonce");
             if (val != null) {
                 String nonce = val[0];
-                if (String.valueOf(_nonce).equals(nonce))
-                    savePriorities(snark, postParams);
-                else
+                if (String.valueOf(_nonce).equals(nonce)) {
+                    if (postParams.get("savepri") != null) {
+                        savePriorities(snark, postParams);
+                    } else if (postParams.get("stop") != null) {
+                        _manager.stopTorrent(snark, false);
+                    } else if (postParams.get("start") != null) {
+                        _manager.startTorrent(snark);
+                    } else if (postParams.get("recheck") != null) {
+                        _manager.recheckTorrent(snark);
+                    } else {
+                        _manager.addMessage("Unknown command");
+                    }
+                } else {
                     _manager.addMessage("Please retry form submission (bad nonce)");
+                }
             }
             return null;
         }
@@ -2637,6 +2672,7 @@ public class I2PSnarkServlet extends BasicServlet {
             r = new File("");
         }
 
+        boolean showStopStart = snark != null;
         boolean showPriority = snark != null && snark.getStorage() != null && !snark.getStorage().complete() &&
                                r.isDirectory();
 
@@ -2645,7 +2681,7 @@ public class I2PSnarkServlet extends BasicServlet {
         if (title.endsWith("/"))
             title = title.substring(0, title.length() - 1);
         String directory = title;
-        title = _("Torrent") + ": " + DataHelper.escapeHTML(title);
+        title = _t("Torrent") + ": " + DataHelper.escapeHTML(title);
         buf.append(title);
         buf.append("</TITLE>\n").append(HEADER_A).append(_themePath).append(HEADER_B)
             .append("<link rel=\"shortcut icon\" href=\"" + _themePath + "favicon.ico\">\n");
@@ -2659,14 +2695,15 @@ public class I2PSnarkServlet extends BasicServlet {
         toThemeImg(buf, "arrow_refresh");
         buf.append("&nbsp;&nbsp;");
         if (_contextName.equals(DEFAULT_NAME))
-            buf.append(_("I2PSnark"));
+            buf.append(_t("I2PSnark"));
         else
             buf.append(_contextName);
         buf.append("</a></div></center>\n");
         
         if (parent)  // always true
             buf.append("<div class=\"page\"><div class=\"mainsection\">");
-        if (showPriority) {
+        // for stop/start/check
+        if (showStopStart || showPriority) {
             buf.append("<form action=\"").append(base).append("\" method=\"POST\">\n");
             buf.append("<input type=\"hidden\" name=\"nonce\" value=\"").append(_nonce).append("\" >\n");
             if (sortParam != null) {
@@ -2678,7 +2715,7 @@ public class I2PSnarkServlet extends BasicServlet {
             // first table - torrent info
             buf.append("<table class=\"snarkTorrentInfo\">\n");
             buf.append("<tr><th><b>")
-               .append(_("Torrent"))
+               .append(_t("Torrent"))
                .append(":</b> ")
                .append(DataHelper.escapeHTML(snark.getBaseName()))
                .append("</th></tr>\n");
@@ -2688,7 +2725,7 @@ public class I2PSnarkServlet extends BasicServlet {
             buf.append("<tr><td>");
             toThemeImg(buf, "file");
             buf.append("&nbsp;<b>")
-               .append(_("Torrent file"))
+               .append(_t("Torrent file"))
                .append(":</b> <a href=\"").append(_contextPath).append('/').append(baseName).append("\">")
                .append(DataHelper.escapeHTML(fullPath))
                .append("</a></td></tr>\n");
@@ -2696,7 +2733,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 buf.append("<tr><td>");
                 toThemeImg(buf, "file");
                 buf.append("&nbsp;<b>")
-                   .append(_("Data location"))
+                   .append(_t("Data location"))
                    .append(":</b> ")
                    .append(DataHelper.escapeHTML(snark.getStorage().getBase().getPath()))
                    .append("</td></tr>\n");
@@ -2705,7 +2742,7 @@ public class I2PSnarkServlet extends BasicServlet {
             buf.append("<tr><td>");
             toThemeImg(buf, "details");
             buf.append("&nbsp;<b>")
-               .append(_("Info hash"))
+               .append(_t("Info hash"))
                .append(":</b> ")
                .append(hex.toUpperCase(Locale.US))
                .append("</td></tr>\n");
@@ -2724,16 +2761,16 @@ public class I2PSnarkServlet extends BasicServlet {
                         buf.append(trackerLink);
                     else
                         toThemeImg(buf, "details");
-                    buf.append(" <b>").append(_("Primary Tracker")).append(":</b> ");
+                    buf.append(" <b>").append(_t("Primary Tracker")).append(":</b> ");
                     buf.append(getShortTrackerLink(announce, snark.getInfoHash()));
                     buf.append("</td></tr>");
                 }
                 List<List<String>> alist = meta.getAnnounceList();
-                if (alist != null) {
+                if (alist != null && !alist.isEmpty()) {
                     buf.append("<tr><td>");
                     toThemeImg(buf, "details");
                     buf.append(" <b>")
-                       .append(_("Tracker List")).append(":</b> ");
+                       .append(_t("Tracker List")).append(":</b> ");
                     for (List<String> alist2 : alist) {
                         buf.append('[');
                         boolean more = false;
@@ -2746,43 +2783,66 @@ public class I2PSnarkServlet extends BasicServlet {
                         }
                         buf.append("] ");
                     }
-                    buf.append("</td></tr>");
+                    buf.append("</td></tr>\n");
                 }
             }
 
             if (meta != null) {
                 String com = meta.getComment();
-                if (com != null) {
+                if (com != null && com.length() > 0) {
                     if (com.length() > 1024)
                         com = com.substring(0, 1024);
                     buf.append("<tr><td>");
                     toThemeImg(buf, "details");
                     buf.append(" <b>")
-                       .append(_("Comment")).append(":</b> ")
+                       .append(_t("Comment")).append(":</b> ")
                        .append(DataHelper.stripHTML(com))
                        .append("</td></tr>\n");
                 }
                 long dat = meta.getCreationDate();
+                SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                String systemTimeZone = _context.getProperty("i2p.systemTimeZone");
+                if (systemTimeZone != null)
+                    fmt.setTimeZone(TimeZone.getTimeZone(systemTimeZone));
                 if (dat > 0) {
-                    String date = (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date(dat));
+                    String date = fmt.format(new Date(dat));
                     buf.append("<tr><td>");
                     toThemeImg(buf, "details");
                     buf.append(" <b>")
-                       .append(_("Created")).append(":</b> ")
-                       .append(date).append(" UTC")
+                       .append(_t("Created")).append(":</b> ")
+                       .append(date)
                        .append("</td></tr>\n");
                 }
                 String cby = meta.getCreatedBy();
-                if (cby != null) {
+                if (cby != null && cby.length() > 0) {
                     if (cby.length() > 128)
                         cby = com.substring(0, 128);
                     buf.append("<tr><td>");
                     toThemeImg(buf, "details");
                     buf.append(" <b>")
-                       .append(_("Created By")).append(":</b> ")
+                       .append(_t("Created By")).append(":</b> ")
                        .append(DataHelper.stripHTML(cby))
                        .append("</td></tr>\n");
                 }
+                long[] dates = _manager.getSavedAddedAndCompleted(snark);
+                if (dates[0] > 0) {
+                    String date = fmt.format(new Date(dates[0]));
+                    buf.append("<tr><td>");
+                    toThemeImg(buf, "details");
+                    buf.append(" <b>")
+                       .append(_t("Added")).append(":</b> ")
+                       .append(date)
+                       .append("</td></tr>\n");
+                }
+                if (dates[1] > 0) {
+                    String date = fmt.format(new Date(dates[1]));
+                    buf.append("<tr><td>");
+                    toThemeImg(buf, "details");
+                    buf.append(" <b>")
+                       .append(_t("Completed")).append(":</b> ")
+                       .append(date)
+                       .append("</td></tr>\n");
+                }
             }
 
             if (meta == null || !meta.isPrivate()) {
@@ -2791,7 +2851,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 if (announce != null)
                     buf.append("&amp;tr=").append(announce);
                 buf.append("\">")
-                   .append(toImg("magnet", _("Magnet link")))
+                   .append(toImg("magnet", _t("Magnet link")))
                    .append("</a> <b>Magnet:</b> <a href=\"")
                    .append(MagnetURI.MAGNET_FULL).append(hex);
                 if (announce != null)
@@ -2804,18 +2864,18 @@ public class I2PSnarkServlet extends BasicServlet {
                    .append("</td></tr>\n");
             } else {
                 buf.append("<tr><td>")
-                   .append(_("Private torrent"))
+                   .append(_t("Private torrent"))
                    .append("</td></tr>\n");
             }
 
             // We don't have the hash of the torrent file
-            //buf.append("<tr><td>").append(_("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">")
+            //buf.append("<tr><td>").append(_t("Maggot link")).append(": <a href=\"").append(MAGGOT).append(hex).append(':').append(hex).append("\">")
             //   .append(MAGGOT).append(hex).append(':').append(hex).append("</a></td></tr>");
 
             buf.append("<tr><td>");
             toThemeImg(buf, "size");
             buf.append("&nbsp;<b>")
-               .append(_("Size"))
+               .append(_t("Size"))
                .append(":</b> ")
                .append(formatSize(snark.getTotalLength()));
             int pieces = snark.getPieces();
@@ -2824,16 +2884,16 @@ public class I2PSnarkServlet extends BasicServlet {
             toThemeImg(buf, "head_rx");
             buf.append("&nbsp;<b>");
             if (completion < 1.0)
-                buf.append(_("Completion"))
+                buf.append(_t("Completion"))
                    .append(":</b> ")
                    .append((new DecimalFormat("0.00%")).format(completion));
             else
-                buf.append(_("Complete")).append("</b>");
+                buf.append(_t("Complete")).append("</b>");
             // up ratio
             buf.append("&nbsp;");
             toThemeImg(buf, "head_tx");
             buf.append("&nbsp;<b>")
-               .append(_("Upload ratio"))
+               .append(_t("Upload ratio"))
                .append(":</b> ");
             long uploaded = snark.getUploaded();
             if (uploaded > 0) {
@@ -2853,7 +2913,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 buf.append("&nbsp;");
                 toThemeImg(buf, "head_rx");
                 buf.append("&nbsp;<b>")
-                   .append(_("Remaining"))
+                   .append(_t("Remaining"))
                    .append(":</b> ")
                    .append(formatSize(needed));
             }
@@ -2863,24 +2923,54 @@ public class I2PSnarkServlet extends BasicServlet {
                 buf.append("&nbsp;");
                 toThemeImg(buf, "file");
                 buf.append("&nbsp;<b>")
-                   .append(_("Files"))
+                   .append(_t("Files"))
                    .append(":</b> ")
                    .append(fileCount);
             }
             buf.append("&nbsp;");
             toThemeImg(buf, "file");
             buf.append("&nbsp;<b>")
-               .append(_("Pieces"))
+               .append(_t("Pieces"))
                .append(":</b> ")
                .append(pieces);
             buf.append("&nbsp;");
             toThemeImg(buf, "file");
             buf.append("&nbsp;<b>")
-               .append(_("Piece size"))
+               .append(_t("Piece size"))
                .append(":</b> ")
                .append(formatSize(snark.getPieceLength(0)))
                .append("</td></tr>\n");
+
+            // buttons
+            if (showStopStart) {
+                buf.append("<tr><td>");
+                toThemeImg(buf, "file");
+                if (snark.isChecking()) {
+                    buf.append("&nbsp;<b>").append(_t("Checking")).append("&hellip; ")
+                       .append((new DecimalFormat("0.00%")).format(snark.getCheckingProgress()))
+                       .append("&nbsp;&nbsp;&nbsp;<a href=\"").append(base).append("\">")
+                       .append(_t("Refresh page for results")).append("</a>");
+                } else if (snark.isStarting()) {
+                    buf.append("&nbsp;<b>").append(_t("Starting")).append("&hellip;</b>");
+                } else if (snark.isAllocating()) {
+                    buf.append("&nbsp;<b>").append(_t("Allocating")).append("&hellip;</b>");
+                } else {
+                    boolean isRunning = !snark.isStopped();
+                    buf.append(" <input type=\"submit\" value=\"");
+                    if (isRunning)
+                        buf.append(_t("Stop")).append("\" name=\"stop\" class=\"stoptorrent\">\n");
+                    else
+                        buf.append(_t("Start")).append("\" name=\"start\" class=\"starttorrent\">\n");
+                    buf.append("&nbsp;&nbsp;&nbsp;<input type=\"submit\" name=\"recheck\" value=\"").append(_t("Force Recheck"));
+                    if (isRunning)
+                        buf.append("\" class=\"disabled\" disabled=\"disabled\">\n");
+                    else
+                        buf.append("\" class=\"reload\">\n");
+                }
+                buf.append("</td></tr>\n");
+            }
         } else {
+            // snark == null
             // shouldn't happen
             buf.append("<tr><th>Not found<br>resource=\"").append(r.toString())
                .append("\"<br>base=\"").append(base)
@@ -2911,8 +3001,10 @@ public class I2PSnarkServlet extends BasicServlet {
 
         Storage storage = snark != null ? snark.getStorage() : null;
         List<Sorters.FileAndIndex> fileList = new ArrayList<Sorters.FileAndIndex>(ls.length);
+        // precompute remaining for all files for efficiency
+        long[] remainingArray = (storage != null) ? storage.remaining() : null;
         for (int i = 0; i < ls.length; i++) {
-            fileList.add(new Sorters.FileAndIndex(ls[i], storage));
+            fileList.add(new Sorters.FileAndIndex(ls[i], storage, remainingArray));
         }
 
         boolean showSort = fileList.size() > 1;
@@ -2930,7 +3022,7 @@ public class I2PSnarkServlet extends BasicServlet {
         buf.append("<table class=\"snarkDirInfo\"><thead>\n");
         buf.append("<tr>\n")
            .append("<th colspan=2>");
-        String tx = _("Directory");
+        String tx = _t("Directory");
         // cycle through sort by name or type
         String sort;
         boolean isTypeSort = false;
@@ -2950,7 +3042,7 @@ public class I2PSnarkServlet extends BasicServlet {
                .append(getQueryString(sort)).append("\">");
         }
         toThemeImg(buf, "file", tx,
-                   showSort ? _("Sort by {0}", (isTypeSort ? _("File type") : _("Name")))
+                   showSort ? _t("Sort by {0}", (isTypeSort ? _t("File type") : _t("Name")))
                             : tx + ": " + directory);
         if (showSort)
             buf.append("</a>");
@@ -2965,9 +3057,9 @@ public class I2PSnarkServlet extends BasicServlet {
             buf.append("<a href=\"").append(base)
                .append(getQueryString(sort)).append("\">");
         }
-        tx = _("Size");
+        tx = _t("Size");
         toThemeImg(buf, "size", tx,
-                   showSort ? _("Sort by {0}", tx) : tx);
+                   showSort ? _t("Sort by {0}", tx) : tx);
         if (showSort)
             buf.append("</a>");
         buf.append("</th>\n<th class=\"headerstatus\">");
@@ -2977,9 +3069,9 @@ public class I2PSnarkServlet extends BasicServlet {
             buf.append("<a href=\"").append(base)
                .append(getQueryString(sort)).append("\">");
         }
-        tx = _("Status");
+        tx = _t("Status");
         toThemeImg(buf, "status", tx,
-                   showRemainingSort ? _("Sort by {0}", _("Remaining")) : tx);
+                   showRemainingSort ? _t("Sort by {0}", _t("Remaining")) : tx);
         if (showRemainingSort)
             buf.append("</a>");
         if (showPriority) {
@@ -2989,9 +3081,9 @@ public class I2PSnarkServlet extends BasicServlet {
                 buf.append("<a href=\"").append(base)
                    .append(getQueryString(sort)).append("\">");
             }
-            tx = _("Priority");
+            tx = _t("Priority");
             toThemeImg(buf, "priority", tx,
-                       showSort ? _("Sort by {0}", tx) : tx);
+                       showSort ? _t("Sort by {0}", tx) : tx);
             if (showSort)
                 buf.append("</a>");
         }
@@ -3001,7 +3093,7 @@ public class I2PSnarkServlet extends BasicServlet {
         buf.append("\">");
         toThemeImg(buf, "up");
         buf.append(' ')
-           .append(_("Up to higher level directory"))
+           .append(_t("Up to higher level directory"))
            .append("</A></td></tr>\n");
 
 
@@ -3030,21 +3122,21 @@ public class I2PSnarkServlet extends BasicServlet {
             int priority = 0;
             if (fai.isDirectory) {
                 complete = true;
-                //status = toImg("tick") + ' ' + _("Directory");
+                //status = toImg("tick") + ' ' + _t("Directory");
             } else {
                 if (snark == null || snark.getStorage() == null) {
                     // Assume complete, perhaps he removed a completed torrent but kept a bookmark
                     complete = true;
-                    status = toImg("cancel") + ' ' + _("Torrent not found?");
+                    status = toImg("cancel") + ' ' + _t("Torrent not found?");
                 } else {
 
                             long remaining = fai.remaining;
                             if (remaining < 0) {
                                 complete = true;
-                                status = toImg("cancel") + ' ' + _("File not found in torrent?");
+                                status = toImg("cancel") + ' ' + _t("File not found in torrent?");
                             } else if (remaining == 0 || length <= 0) {
                                 complete = true;
-                                status = toImg("tick") + ' ' + _("Complete");
+                                status = toImg("tick") + ' ' + _t("Complete");
                             } else {
                                 priority = fai.priority;
                                 if (priority < 0)
@@ -3054,8 +3146,8 @@ public class I2PSnarkServlet extends BasicServlet {
                                 else
                                     status = toImg("clock_red");
                                 status += " " +
-                                         (100 * (length - remaining) / length) + "% " + _("complete") +
-                                         " (" + DataHelper.formatSize2(remaining) + "B " + _("remaining") + ")";
+                                         (100 * (length - remaining) / length) + "% " + _t("complete") +
+                                         " (" + DataHelper.formatSize2(remaining) + "B " + _t("remaining") + ")";
                             }
 
                 }
@@ -3077,7 +3169,7 @@ public class I2PSnarkServlet extends BasicServlet {
                     buf.append("<img alt=\"\" border=\"0\" class=\"thumb\" src=\"")
                        .append(path).append("\"></a>");
                 } else {
-                    buf.append(toImg(icon, _("Open"))).append("</a>");
+                    buf.append(toImg(icon, _t("Open"))).append("</a>");
                 }
             } else {
                 buf.append(toImg(icon));
@@ -3101,17 +3193,17 @@ public class I2PSnarkServlet extends BasicServlet {
                     buf.append("\n<input type=\"radio\" onclick=\"priorityclicked();\" class=\"prihigh\" value=\"5\" name=\"pri.").append(fileIndex).append("\" ");
                     if (priority > 0)
                         buf.append("checked=\"checked\"");
-                    buf.append('>').append(_("High"));
+                    buf.append('>').append(_t("High"));
 
                     buf.append("\n<input type=\"radio\" onclick=\"priorityclicked();\" class=\"prinorm\" value=\"0\" name=\"pri.").append(fileIndex).append("\" ");
                     if (priority == 0)
                         buf.append("checked=\"checked\"");
-                    buf.append('>').append(_("Normal"));
+                    buf.append('>').append(_t("Normal"));
 
                     buf.append("\n<input type=\"radio\" onclick=\"priorityclicked();\" class=\"priskip\" value=\"-9\" name=\"pri.").append(fileIndex).append("\" ");
                     if (priority < 0)
                         buf.append("checked=\"checked\"");
-                    buf.append('>').append(_("Skip"));
+                    buf.append('>').append(_t("Skip"));
                     showSaveButton = true;
                 }
                 buf.append("</td>");
@@ -3121,17 +3213,18 @@ public class I2PSnarkServlet extends BasicServlet {
         if (showSaveButton) {
             buf.append("<thead><tr><th colspan=\"4\">&nbsp;</th><th class=\"headerpriority\">" +
                        "<a class=\"control\" id=\"setallhigh\" href=\"javascript:void(null);\" onclick=\"setallhigh();\">")
-               .append(toImg("clock_red")).append(_("Set all high")).append("</a>\n" +
+               .append(toImg("clock_red")).append(_t("Set all high")).append("</a>\n" +
                        "<a class=\"control\" id=\"setallnorm\" href=\"javascript:void(null);\" onclick=\"setallnorm();\">")
-               .append(toImg("clock")).append(_("Set all normal")).append("</a>\n" +
+               .append(toImg("clock")).append(_t("Set all normal")).append("</a>\n" +
                        "<a class=\"control\" id=\"setallskip\" href=\"javascript:void(null);\" onclick=\"setallskip();\">")
-               .append(toImg("cancel")).append(_("Skip all")).append("</a>\n" +
-                       "<br><br><input type=\"submit\" class=\"accept\" value=\"").append(_("Save priorities"))
+               .append(toImg("cancel")).append(_t("Skip all")).append("</a>\n" +
+                       "<br><br><input type=\"submit\" class=\"accept\" value=\"").append(_t("Save priorities"))
                .append("\" name=\"savepri\" >\n" +
                        "</th></tr></thead>\n");
         }
         buf.append("</table>\n");
-        if (showPriority)
+        // for stop/start/check
+        if (showStopStart || showPriority)
             buf.append("</form>");
         buf.append("</div></div></BODY></HTML>\n");
 
@@ -3202,7 +3295,7 @@ public class I2PSnarkServlet extends BasicServlet {
                 icon = "itoopie_xxsm";
             else
                 icon = "compress";
-        } else if (mime.equals("application/x-gtar") ||
+        } else if (mime.equals("application/x-gtar") || mime.equals("application/x-xz") ||
                  mime.equals("application/compress") || mime.equals("application/gzip") ||
                  mime.equals("application/x-7z-compressed") || mime.equals("application/x-rar-compressed") ||
                  mime.equals("application/x-tar") || mime.equals("application/x-bzip2"))
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/Sorters.java b/apps/i2psnark/java/src/org/klomp/snark/web/Sorters.java
index 3b71cf3f1ca8124bdd2d9f5d7ca6d4118906c763..964e6d80d2d33820a8576d6c3d3840515b833845 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/Sorters.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/Sorters.java
@@ -6,6 +6,8 @@ import java.text.Collator;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Locale;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.klomp.snark.MetaInfo;
 import org.klomp.snark.Snark;
@@ -18,6 +20,13 @@ import org.klomp.snark.Storage;
  */
 class Sorters {
 
+    /**
+     * See below
+     */
+    private static final Pattern PATTERN_DE, PATTERN_EN, PATTERN_ES, PATTERN_FR,
+                                 PATTERN_IT, PATTERN_NL, PATTERN_PT;
+    private static Pattern _pattern;
+
     /**
      *  Negative is reverse
      *
@@ -113,8 +122,8 @@ class Sorters {
 
 
     /**
-     *  Sort alphabetically in current locale, ignore case, ignore leading "the "
-     *  (I guess this is worth it, a lot of torrents start with "The "
+     *  Sort alphabetically in current locale, ignore case, ignore leading
+     *  articles such as "the" if the pattern is set by setPattern()
      *  @since 0.7.14
      */
     private static class TorrentNameComparator implements Comparator<Snark>, Serializable {
@@ -130,13 +139,16 @@ class Sorters {
             if (l.getStorage() != null && r.getStorage() == null)
                 return 1;
             String ls = l.getBaseName();
-            String llc = ls.toLowerCase(Locale.US);
-            if (llc.startsWith("the ") || llc.startsWith("the.") || llc.startsWith("the_"))
-                ls = ls.substring(4);
             String rs = r.getBaseName();
-            String rlc = rs.toLowerCase(Locale.US);
-            if (rlc.startsWith("the ") || rlc.startsWith("the.") || rlc.startsWith("the_"))
-                rs = rs.substring(4);
+            Pattern p = _pattern;
+            if (p != null) {
+                Matcher m = p.matcher(ls);
+                if (m.matches())
+                    ls = ls.substring(m.group(1).length());
+                m = p.matcher(rs);
+                if (m.matches())
+                    rs = rs.substring(m.group(1).length());
+            }
             return Collator.getInstance().compare(ls, rs);
         }
     }
@@ -356,13 +368,14 @@ class Sorters {
 
         /**
          *  @param storage may be null
+         *  @param remainingArray precomputed, non-null iff storage is non-null
          */
-        public FileAndIndex(File file, Storage storage) {
+        public FileAndIndex(File file, Storage storage, long[] remainingArray) {
             this.file = file;
             index = storage != null ? storage.indexOf(file) : -1;
             if (index >= 0) {
                 isDirectory = false;
-                remaining = storage.remaining(index);
+                remaining = remainingArray[index];
                 priority = storage.getPriority(index);
             } else {
                 isDirectory = file.isDirectory();
@@ -527,4 +540,104 @@ class Sorters {
             return r.priority - l.priority;
         }
     }
+
+    /*
+     *  Match an indefinite or definite article in the language,
+     *  followed by one or more whitespace, '.', or '_'.
+     *  Does not match "partitive" articles.
+     *
+     *  https://en.wikipedia.org/wiki/Article_%28grammar%29
+     *  http://www.loc.gov/marc/bibliographic/bdapndxf.html
+     */
+    static {
+        PATTERN_DE = Pattern.compile(
+            // can't make the non-capturing innner group work
+            //"^((?:" +
+            "^((" +
+            "der|die|das|des|dem|den|ein|eine|einer|eines|einem|einen" +
+            ")[\\s\\._]+).*",
+            Pattern.CASE_INSENSITIVE);
+        PATTERN_EN = Pattern.compile(
+            "^((" +
+            "a|an|the" +
+            ")[\\s\\._]+).*",
+            Pattern.CASE_INSENSITIVE);
+        PATTERN_ES = Pattern.compile(
+            "^((" +
+            "el|la|lo|los|las|un|una|unos|unas" +
+            ")[\\s\\._]+).*",
+            Pattern.CASE_INSENSITIVE);
+        PATTERN_FR = Pattern.compile(
+            // note l' doesn't require whitespace after
+            "^(l'|((" +
+            "le|la|les|un|une|des" +
+            ")[\\s\\._]+)).*",
+            Pattern.CASE_INSENSITIVE);
+        PATTERN_IT = Pattern.compile(
+            // note l' and un' don't require whitespace after
+            "^(l'|un'|((" +
+            "il|lo|la|i|gli|le|uno|una|un" +
+            ")[\\s\\._]+)).*",
+            Pattern.CASE_INSENSITIVE);
+        PATTERN_NL = Pattern.compile(
+            "^((" +
+            "de|het|het'n|een|een'n" +
+            ")[\\s\\._]+).*",
+            Pattern.CASE_INSENSITIVE);
+        PATTERN_PT = Pattern.compile(
+            "^((" +
+            "o|a|os|as|um|uma|uns|umas" +
+            ")[\\s\\._]+).*",
+            Pattern.CASE_INSENSITIVE);
+    }
+
+    /**
+     * Sets static field, oh well
+     * @param lang null for none
+     * @since 0.9.23
+     */
+    public static void setPattern(String lang) {
+        Pattern p;
+        if (lang == null)
+            p = null;
+        else if (lang.equals("de"))
+            p = PATTERN_DE;
+        else if (lang.equals("en"))
+            p = PATTERN_EN;
+        else if (lang.equals("es"))
+            p = PATTERN_ES;
+        else if (lang.equals("fr"))
+            p = PATTERN_FR;
+        else if (lang.equals("it"))
+            p = PATTERN_IT;
+        else if (lang.equals("nl"))
+            p = PATTERN_NL;
+        else if (lang.equals("pt"))
+            p = PATTERN_PT;
+        else
+            p = null;
+        _pattern = p;
+    }
+
+/****
+    public static final void main(String[] args) {
+        if (args.length != 2) {
+            System.out.println("Usage: Sorters lang 'string'");
+            System.exit(1);
+        }
+        String lang = args[0];
+        setPattern(lang);
+        if (_pattern == null) {
+            System.out.println("Unsupported " + lang);
+            System.exit(1);
+        }
+        String s = args[1];
+        Matcher m = _pattern.matcher(s);
+        if (m.matches()) {
+            System.out.println("Match is \"" + m.group(1) + '"');
+        } else {
+            System.out.println("No match for \"" + s + '"');
+        }
+    }
+****/
 }
diff --git a/apps/i2psnark/locale/messages_ar.po b/apps/i2psnark/locale/messages_ar.po
index 9d37a395af5f4ee2dfbd8054f424c5960f905edf..502c69b90fd807dd1052dd5502b44ffb209228f3 100644
--- a/apps/i2psnark/locale/messages_ar.po
+++ b/apps/i2psnark/locale/messages_ar.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Arabic (http://www.transifex.com/projects/p/I2P/language/ar/)\n"
 "MIME-Version: 1.0\n"
@@ -20,227 +20,227 @@ msgstr ""
 "Language: ar\n"
 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "تم قفل النفق"
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "تم تغببر مجموع حد الرفع الى {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "اقل حد الرفع الى {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "حولت سرعة الرفع الى {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "اقل سرعة رفع هي{0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "تغير تأخير البداية الى {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "سيتم تفعيل التغيير بعد اعادة التشغيل"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "فك الاتصال"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr " تغيرت الاعدادات الى {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "فشل في الاتصال بالاعدادات الجديدة، سيتم الرجوع الى الاعدادات القديمة"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "فشل في اعادة الاتصال بالاعدادات القديمة!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "اتصال بوجهة جديدة"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "اعادة التشغيل \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "تشغيل عند البداية"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "الغاء التشغيل عند البداية"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "تفعيل open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "الغاء تفعيل open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} تم تحميل التيمة  ارجع الى صفحة للمشاهدة i2psnark."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "لم تتغير الاعدادات"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "تغيير open trackers - يجب اعادة تشغيل التورنت لتفعيل التغيير."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "فشل في حفظ الاعدادات {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "جاري الاتصال بشبكة I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "فشل في الاتصال ب I2P - تخقق من اعدادات I2CP !"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "خطأ: فشل في اضافة التورنت {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "فشل في فتح \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "تورنت بهذه المعلومات مشغل: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -248,34 +248,34 @@ msgid ""
 "torrent."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "تورنت في \"{0}\"غير صحيح"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "خطأ - لا توجد ذاكرة كافية، لا يمكن انشاء تورنت {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "تم اضافة وتشغيل التورنت: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "تمت اضافة: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "يحمل {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -283,132 +283,132 @@ msgid ""
 "DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "اضافة {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "فشل في نسخ التورنت الى {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "ملفات كثيرة في  \"{0}\" ({1}) تم حذف"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "ملف التورنت \"{0}\" لا يمكنه الانتهاء ب \".torrent\", سيتم حذفه!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "ﻻ أجزاء في \"{0}\",  حذف!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "الأجزاء كبيرة في \"{0}\" ({1}B), حذف."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "حدود {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "تورنت أكبر من {0}B غير مدعومة سيحذف \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "خطأ: ﻻيمكن حذف التورنت {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "تورنت متوقف: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "تورنت محذوف: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "اضف تورنت في {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "انتهى التحميل: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "بداية التورنت {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "فشل في اضافة I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "فتح النفق واطلاق جميع التورنت"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "توقيف جميع التورنت و قفل النفق I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr ""
@@ -456,14 +456,14 @@ msgstr "تورنت غير صحيح {0} "
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark برنامج تورنت"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "اعدادات"
 
@@ -496,135 +496,135 @@ msgid "clear messages"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "الحالة"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "اخفاء النظائر"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "أظهر النظائر"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "تورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "تقدير للوقت الباقي"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "محمل"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "الحجم"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "رفع"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "معدل التحميل"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "توقيف جمبع التورنت و النفق I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "توقيف الجمبع"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "شغل الجمبع"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "شغل جمبع التورنت و النفق I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "لم يحمل تورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "مجموع"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
@@ -635,7 +635,7 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
@@ -646,7 +646,7 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
@@ -657,203 +657,207 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "تم حذف ملف مغناطيس: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "تم خذف ملف التورنت: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "خذف ملف البيانات: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "فشل في حذف الملف: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "تم انشاء تورنت لـ \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "العديد من trackers يطلبون تسجيل التورنت قبل مشاركتها، قم بذلك قبل البداية {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "فشل في انشاء تورنت لـ \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "لا يمكن انشاء تورنت لبيانات غير موجودة: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "فشل في انشاء تورنت - عليك اختيار ملف أو مجلد"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr ""
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Tracker خطأ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
@@ -864,366 +868,366 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "بشارك"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "اكتمل"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "موافق"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "متوقف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "لا بوجد نظائر"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "متوقف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "تفاصيل التورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "أظهر الملفات"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "فتح ملف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "قف التورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "قف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "ابدأ التورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "ابدأ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "حذف التورنت من القائمة، حذف ملف .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "حذف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "خذف ملف التورنت و الملفات المرتبطة به"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "هل أنت متأكد من حذف التورنت \\''{0}\\'' وجمبع البيانات المحملة؟"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "حذف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "غير معروف"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "شارك"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "غير مهم (النظير لا يحتوي على اجزاء نحتاجها)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "مشكلة (لا يمكن الحصول على اجزاء الملف من النظائر)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "تفاصيل حول {0} tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "معلومات"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "أضف تورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "من عنوان"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "أضف تورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "يمكن ايضا .نقل ملفات تورنت الى: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "سيتم القاف التورنت عند حذف الملف torrent."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "أنشئ تورنت"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "البيانات المشاركة"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "أنشئ تورنت"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "مجلد البيانات"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "اذا تم تفعيل، يقوم بتشغيل التورنت تلقائيا عند اضافته"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "تيمة"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "تأخر البداية"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "دقائق"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "اقصى حد للرفع"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "النظائر"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "اقصى حد لسرعة الاتصال"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "ينصح باستعمال نصف سرعة الشبكة"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "أظهر أو غير سرعة الموجه"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "استعمال open trackers ايضا"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "اعدادت الاتصال الداخلي"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "اعدادت الاتصال الخارجي"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "حفظ الاعدادات"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "فتح"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "غنوان مغناطيس غير صحيح {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
@@ -1234,7 +1238,7 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
@@ -1245,119 +1249,119 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "وصلة مغناطيس"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "انتهاء"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "الملفات"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "القطع"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "حجم القطعة"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "المجلد"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "الأولوية"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "تورنت غير موجود؟"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "الملف غير موجود في التورنت؟"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "اكتمل"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "عالي"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "عادي"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "تجاوز"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "حفظ الأولويات"
diff --git a/apps/i2psnark/locale/messages_cs.po b/apps/i2psnark/locale/messages_cs.po
index bd68b90867ed90a37a13b7a7907b1ac1257d7586..c2690f07f9448cdaa6b366e2857a12a3af38905b 100644
--- a/apps/i2psnark/locale/messages_cs.po
+++ b/apps/i2psnark/locale/messages_cs.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Czech (http://www.transifex.com/projects/p/I2P/language/cs/)\n"
 "MIME-Version: 1.0\n"
@@ -20,227 +20,227 @@ msgstr ""
 "Language: cs\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr "Neběží žádné další torrenty."
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P tunel uzavřen."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Celkový limit sdílečů změněn na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Nejmenší celkový limit sdílečů je {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Horní BW limit změněn na {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Nejmenší horní limit přenosové rychlist je {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Prodleva při startu změněna na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Doba aktualizace stavu (refresh time) změněna na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Aktualizace stavu vypnuta"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Změny I2CP a tunelu se projeví až po zastavení všech torrentů"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Nastavení (options) I2CP změněno na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Odpojuji se od starého I2CP cíle"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Nastavení (settings) I2CP změněno na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Nemůžu se připojit s novým nastavením I2CP, vracím se k předhozímu."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Nemohu se opětovně připojit ani s předchozím nastavením!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Opětovně připojeno k novému I2CP cíli"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP listener restartován pro \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Nové soubory budou veřejně přístupné"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Nové soubory nebudou veřejně přístupné"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Automatické spuštění zapnuto"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Automatické spuštění vypnuto"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Zapnuto automatické spuštění"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Otevřené trackery vypnuty - aby se změna projevila je nutné restartovat všechny torrenty"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT povoleno."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT zakázáno."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "Téma {0} bylo nahráno, přejděte prosím na hlavní stránku i2snark"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Nastavení nebylo změněno."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Seznam otevřených trackerů změněn - aby se změna projevila je nutné restartovat všechny torrenty"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Nemůžu uložit soubor s nastavením do souboru {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Připojuji se k I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Při připojování k I2P nastala chyba, zkontrolujte prosím nastavení I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Chyba: nepodařilo se přidat torrent {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Nejde otevřít \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent s tímto infohašišem již běží: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -248,34 +248,34 @@ msgid ""
 "torrent."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent v \"{0}\" je chybný"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "CHYBA - nedostatek paměti, nemohu vytvořit torrent z {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent přidán a spuštěn: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent přidán:  \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Získávám {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -283,132 +283,132 @@ msgid ""
 "DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Přídávám {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Chyba: nepodařilo se zkopírovat soubor torrentu do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "V \"{0}\" ({1}) je příliš mnoho souborů, mažu je!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Jméno souboru torrentu \"{0}\" nemůže končit na \".torrent\", mažu ho!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "\"{0}\" neobsahuje žádné části, mažu to!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Příliš mnoho částí v \"{0}\", maximum je {1}, mažu to!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent zastaven: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent smazán: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Stahování dokončeno: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr ""
@@ -456,14 +456,14 @@ msgstr ""
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr ""
 
@@ -496,135 +496,135 @@ msgid "clear messages"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Status"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Skrýt peery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Ukázat peery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
@@ -632,7 +632,7 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
@@ -640,7 +640,7 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
@@ -648,203 +648,207 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent vytvořen pro \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Přidat tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr ""
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
@@ -852,366 +856,366 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr ""
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr ""
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Neznámý"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Přidat torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Z URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Přidat torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Můžete také zkopírovat .torrent soubory do: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Vytvořit torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Hlavní"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Vytvořit torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Vzhled"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr ""
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
@@ -1219,7 +1223,7 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
@@ -1227,119 +1231,119 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr ""
diff --git a/apps/i2psnark/locale/messages_de.po b/apps/i2psnark/locale/messages_de.po
index f5cfc3624932859e145bddafe0b19e5e2cd1a514..dcdd0cb115b2755991278be422c08cf0660ac15c 100644
--- a/apps/i2psnark/locale/messages_de.po
+++ b/apps/i2psnark/locale/messages_de.po
@@ -12,7 +12,7 @@
 # Ettore Atalan <atalanttore@googlemail.com>, 2014
 # foo <foo@bar>, 2009
 # SteinQuadrat, 2013
-# Lars Schimmer <echelon@i2pmail.org>, 2014
+# Lars Schimmer <echelon@i2pmail.org>, 2014-2015
 # Max Muster <scr53875@soisz.com>, 2014
 # mixxy, 2011
 # nextloop <ga25day@mytum.de>, 2013
@@ -22,10 +22,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-03-07 12:54+0000\n"
-"Last-Translator: blabla <blabla@trash-mail.com>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/de/)\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-08-21 21:02+0000\n"
+"Last-Translator: Lars Schimmer <echelon@i2pmail.org>\n"
+"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -37,222 +37,222 @@ msgid "No more torrents running."
 msgstr "Keine weiteren Torrents laufen."
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P-Tunnel geschlossen."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Gesamthochladerbegrenzung geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Minimale Gesamthochladerbegrenzung ist {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Hochladebandbreitenbegrenzung geändert auf {0}kbyte/s."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Minimale Hochladebandbreitenbegrenzung ist {0} kbyte/s."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Startverzögerung geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Aktualisierungsrate geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Aktualisierung deaktiviert"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Seitengröße geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Datenverzeichnis muss ein absoluter Pfad sein"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Datenverzeichnis nicht vorhanden"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Kein Verzeichnis"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Unlesbar"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Datenverzeichnis geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Änderungen an I2CP und am Tunnel werden nach dem Stoppen aller Torrents wirksam"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "I2CP-Optionen geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Altes I2CP-Ziel wird getrennt"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "I2CP-Einstellungen geändert auf {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Verbinden mit den neuen Einstellungen nicht möglich, benutze wieder die alten I2CP-Einstellungen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Verbinden mit den alten Einstellungen nicht möglich!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Verbunden auf dem neuem I2CP-Ziel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP-Lauscher neu gestartet für \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Neu Dateien werden allgemein lesbar sein."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Neue Dateien werden nicht allgemein lesbar sein."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Autostart wird aktiviert"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Autostart wird deaktiviert"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "OpenTracker aktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "OpenTracker deaktiviert - Um dies anzuwenden, müssen die Torrents neu gestartet werden."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT aktiviert."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT deaktiviert."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "DHT-Änderungen erfordern das Anhalten und erneutes Öffnen des Tunnels"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} Theme geladen. Gehen Sie zurück zur Hauptseite von i2psnark, um die Änderungen zu sehen!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Konfiguration nicht geändert."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "OpenTracker-Liste geändert - Um dies anzuwenden, müssen die Torrents neu gestartet werden"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Liste privater Tracker geändert - betrifft nur neu erstellte Torrents."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Konnte Konfiguration nicht in {0} speichern"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Verbinde mit I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Fehler beim Verbinden mit I2P - Überprüfen Sie Ihre I2CP-Einstellungen!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Fehler: Konnte den Torrent \"{0}\" nicht hinzufügen"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Kann \"{0}\" nicht öffnen"
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent mit diesem Infohash läuft schon: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "FEHLER - Keine I2P-Tracker im privaten Torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Warnung - Keine I2P-Tracker in \"{0}\", es wird nur bei I2P-OpenTrackern und mittels DHT bekanntgeben"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Warnung - Keine I2P-Tracker in \"{0}\" und OpenTrackers sind deaktiviert. Bekanntgabe erfolgt nur mittels DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -260,34 +260,34 @@ msgid ""
 "torrent."
 msgstr "Warnung - Keine I2P-Tracker in \"{0}\", und DHT und OpenTrackers sind deaktiviert. Sie sollten DHT oder OpenTrackers vor dem Starten des Torrents aktivieren."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent in \"{0}\" ist nicht gültig"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "FEHLER - Unzureichender Arbeitsspeicher, kann keinen Torrent von {0} erstellen."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent hinzugefügt und gestartet: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent hinzugefügt: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "{0} wird abgerufen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -295,128 +295,128 @@ msgid ""
 "DHT."
 msgstr "Das Verwenden von OpenTrackern ist deaktiviert und wir haben keine DHT-Gegenstellen. Das Abrufen von {0} könnte scheitern, sofern Sie keinen anderen Torrent starten. Aktivieren Sie OpenTracker oder DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "{0} wird hinzugefügt"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Herunterladen läuft bereits: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Fehler beim Kopieren der Torrentdatei nach {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Zu viele Dateien in  \"{0}\" ({1}), wird gelöscht! "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrentdatei \"{0}\" darf nicht auf '.torrent' enden, wird gelöscht!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Keine Teile in \"{0}\", wird gelöscht!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Zu viele Teile in  \"{0}\", das Limit sind {1}, werden gelöscht!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Teile in \"{0}\" sind zu groß ({1}B), werden gelöscht!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Limit ist \"{0}\"Bytes"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrent \"{0}\" enthält keine Daten und wird gelöscht!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrents größer als \"{0}\"Bytes werden nicht unterstützt, \"{1}\" wird gelöscht."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Fehler: Konnte den Torrent \"{0}\" nicht entfernen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent gestoppt: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent entfernt: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Torrents in {0} werden hinzugefügt"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Hochladebandbreitenbegrenzung ist {0} KByte/s."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Herunterladen abgeschlossen: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo für {0} erhalten"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Torrent {0} wird gestartet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Fehler bei Torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Konnte keine Verbindung zu I2P herstellen!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "I2P-Tunnel wird geöffnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Den I2P-Tunnel öffnen und alle Torrents starten."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Alle Torrents stoppen und den I2P-Tunnel schließen."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Der I2P-Tunnel wird nach Benachrichtigung der Tracker geschlossen."
 
@@ -468,14 +468,14 @@ msgstr "Torrent in {0} war nicht gültig"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Konfiguration"
 
@@ -508,844 +508,848 @@ msgid "clear messages"
 msgstr "Nachrichten löschen"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Status"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Sortieren nach {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Teilnehmer ausblenden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Teilnehmer einblenden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Dateityp"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "ETA"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Geschätzte verbleibende Zeit"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr " Empf."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Heruntergeladen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Größe"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr " Send."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Hochladeverhältnis"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Hochgeladen"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "Übertragungsrate für den Empfang"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Herunterladegeschwindigkeit"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "Übertragungsrate fürs Senden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Hochladegeschwindigkeit"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Alle Torrents und den I2P-Tunnel stoppen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Alle stoppen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Alle gestoppten Torrents fortsetzen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Alle starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Alle Torrents und den I2P-Tunnel starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Keine Torrents geladen."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Gesamt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 Torrent"
 msgstr[1] "{0} Torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 verbundener Teilnehmer"
 msgstr[1] "{0} verbundene Teilnehmer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 DHT-Gegenstelle"
 msgstr[1] "{0} DHT-Gegenstellen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "Ziel"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Erste"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Erste Seite"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Vorherige"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Vorherige Seite"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Nächste"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Nächste Seite"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Letzte"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Letzte Seite"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "Datenverzeichnis kann nicht erstellt werden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "Kann den Torrent {0} nicht hinzufügen, da dieser in einem anderen Torrent ist: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Ungültige URL - muss mit \"http://\", \"{0}\" oder \"{1}\" anfangen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnetlink gelöscht: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Torrentdatei gelöscht: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Download gelöscht: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Datendatei gelöscht: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Daten konnten nicht gelöscht werden: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Das Verzeichnis {0} konnte nicht gelöscht werden."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Verzeichnis gelöscht: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "Kann keinen Torrent mit der Endung \".torrent\" hinzufügen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Torrent mit diesem Namen ist schon aktiv: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "Kann keinen Torrent hinzufügen, der das I2P Verzeichnis beinhaltet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "Kann den Torrent {0} nicht hinzufügen, da dieser den Torrent {1} enthält."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Fehler - Einfügen alternativer Tracker ohne primären Tracker nicht möglich"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Fehler - Mischen von privaten und öffentlichen Trackern in einem Torrent nicht möglich"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent erstellt für \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Viele I2P-Tracker erfordern eine Registrierung, bevor der Torrent verteilt wird. Bitte tun Sie dies vor dem Start von \"{0}\"!"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Fehler beim Erstellen eines Torrents für \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Kann keinen Torrent für nicht existente vorhandene erstellen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Fehler beim Erstellen des Torrents - Sie müssen eine Datei oder ein Verzeichnis angeben."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Ausgewählte löschen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Trackerkonfiguration speichern"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Entfernt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Tracker hinzufügen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Geben Sie einen gültigen Tracker-Namen und die URLs ein"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Auf Standardeinstellungen zurücksetzen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Auf Standard-Tracker zurückgesetzt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Überprüfe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Reserviere"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Trackerfehler"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 Teilnehmer"
 msgstr[1] "{0} Teilnehmern"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Verteile"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Vollständig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Stillstand"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Keine Teilnehmer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Gestoppt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Details"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Dateien ansehen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Datei öffnen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Torrent stoppen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Stopp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Torrent starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Start"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Entfernt den Torrent von der aktiven Liste und löscht die .torrent-Datei"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Sind Sie sicher, dass Sie die Datei  \\''{0}\\'' löschen möchten (Heruntergeladene Daten werden nicht gelöscht)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Entfernen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Löscht die .torrent-Datei und (die) dazugehörige Datendatei(en)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Sind Sie sicher, dass Sie die Torrentdatei \\''{0}\\'' und alle heruntergeladenen Daten löschen wollen?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Löschen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Unbekannt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Quelle"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Uninteressant (Der Teilnehmer hat keine Teile, die wir benötigen)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Gedrosselt (Der Teilnehmer hat uns nicht erlaubt, Teile anzufordern)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Uninteressiert (Wir haben keine Teile, die der Teilnehmer benötigt)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Gedrosselt (Wir erlauben dem Teilnehmer nicht, Teile anzufordern)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Details beim Tracker {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Torrent hinzufügen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Von URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Geben Sie die URL zum Herunterladen einer Torrentdatei (I2P-Link), einen Magnet-Link, einen Maggot-Link oder einen Info-Hash ein!"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Füge Torrent hinzu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Datenverzeichnis"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Geben Sie das Verzeichnis zum Speichern der Daten ein (Standardeinstellung {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Alternativ können Sie die .torrent-Dateien auch nach {0} kopieren."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Das Entfernen der .torrent-Datei stoppt den jeweiligen Torrent."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Torrent erstellen"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Daten zum Verteilen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Datei oder Verzeichnis zum Verteilen (Gesamter Pfad oder aus dem Verzeichnis {0} )"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primär"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternativen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Torrent erstellen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "keiner"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Datenverzeichnis"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Dateien von allen lesbar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Wenn abgehakt, können andere Benutzer auf die heruntergeladenen Dateien zugreifen."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Torrents automatisch starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Wenn abgehakt, werden hinzugefügte Torrents automatisch gestartet."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Aufmachung"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Aktualisierungsintervall"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Nie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Startverzögerung"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "Minuten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Seitengröße"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "Torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Gesamtlimit an Hochladern"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "Teilnehmer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Bandbreitenbegrenzung beim Hochladen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Halbe verfügbare Bandbreite wird empfohlen."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Routerbandbreite ansehen oder ändern"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Auch OpenTracker verwenden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Wenn abgehakt, wird der Torrent neben dem in der Torrentdatei angegebenen Tracker auch bei den OpenTrackern bekanntgegeben."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "DHT aktivieren"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Wenn abgehakt, wird DHT verwendet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Einstellungen eingehend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Einstellungen ausgehend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP-Host"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP-Port"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "I2CP-Optionen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Einstellungen speichern"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Name"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "Webseiten-URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Standard"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Offen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Ankündigungs-URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Hinzufügen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Ungültige Magnet-URL {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 Zwischenstation"
 msgstr[1] "{0} Zwischenstationen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 Tunnel"
 msgstr[1] "{0} Tunnel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Torrentdatei"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Datenadresse"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Info-Hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Primärer Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Tracker-Liste"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Kommentar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Erstellt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Erstellt von"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnetlink"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Privater Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Fortschritt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Verbleibend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Dateien"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Stücke"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Stückgröße"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Verzeichnis"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Priorität"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Eine Hierarchie nach oben"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrentdatei nicht gefunden?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Datei nicht gefunden im Torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "vollständig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "verbleibend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Hoch"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Ãœberspringen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Alle auf hoch festlegen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Alle auf normal festlegen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Alle überspringen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Prioritäten speichern"
diff --git a/apps/i2psnark/locale/messages_en.po b/apps/i2psnark/locale/messages_en.po
index eac186185140044493cca11cb4948fe5f026d20f..e34056fedef3307a953d898cbdef13a0acabc26b 100644
--- a/apps/i2psnark/locale/messages_en.po
+++ b/apps/i2psnark/locale/messages_en.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P i2psnark\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
+"POT-Creation-Date: 2015-07-17 01:33+0000\n"
 "PO-Revision-Date: 2010-06-15 14:09+0100\n"
 "Last-Translator: duck <duck@mail.i2p>\n"
 "Language-Team: duck <duck@mail.i2p>\n"
@@ -23,383 +23,383 @@ msgid "No more torrents running."
 msgstr ""
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2376
-#: ../java/src/org/klomp/snark/SnarkManager.java:2387
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr ""
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:2080
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:771
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:773
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:785
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:787
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:799
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:810
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:812
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:828
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:837
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:839
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:841
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:843
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:848
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:903
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:907
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:913
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:915
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:920
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:924
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:926
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:933
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:947
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:949
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:956
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:958
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:964
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:966
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:973
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:975
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:977
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:984
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:994
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1026
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1036
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1082
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1163
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1166
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1175
-#: ../java/src/org/klomp/snark/SnarkManager.java:2117
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr ""
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1198
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr ""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1217
-#: ../java/src/org/klomp/snark/SnarkManager.java:1342
-#: ../java/src/org/klomp/snark/SnarkManager.java:1430
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1223
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1225
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and "
 "DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1228
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1230
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
 "disabled, you should enable open trackers or DHT before starting the torrent."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1256
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1263
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1275
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1277
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1353
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1359
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
 "succeed until you start another torrent, enable open trackers, or enable DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1363
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1396
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1440
-#: ../java/src/org/klomp/snark/SnarkManager.java:1466
-#: ../java/src/org/klomp/snark/SnarkManager.java:2036
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1815
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1817
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1819
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1821
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1823
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1826
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1834
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1851
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1874
-#: ../java/src/org/klomp/snark/SnarkManager.java:1893
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1913
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1921
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1953
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1979
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2032
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2033
-#: ../java/src/org/klomp/snark/SnarkManager.java:2264
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2048
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2111
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2263
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2287
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2350
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2369
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr ""
 
@@ -451,14 +451,14 @@ msgstr ""
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1751
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2650
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2137
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr ""
 
@@ -491,842 +491,846 @@ msgid "clear messages"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2941
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2636
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2806
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1143
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1154
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1234
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2395
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1347
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr ""
 
-#. "<input type=\"reset\" class=\"cancel\" value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2398
+#. "<input type=\"reset\" class=\"cancel\" value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1526
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1531
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1542
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1518
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3035
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1523
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1581
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1618
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1700
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr ""
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1705
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1709
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr ""
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1804
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1824
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1826
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2032
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2038
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or "
 "info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2054
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2069
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr ""
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\" value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2076
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2079
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2325
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2083
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2086
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2104
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2141
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2146
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2150
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2176
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2189
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2203
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2227
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2230
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2234
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2243
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2247
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed "
 "in the torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2271
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2277
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2285
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2290
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2305
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2310
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2340
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2384
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2427
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr ""
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2435
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2696
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2715
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2749
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2759
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2770
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2795
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2861
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2921
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3032
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3045
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3092
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3102
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3116
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3117
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr ""
diff --git a/apps/i2psnark/locale/messages_es.po b/apps/i2psnark/locale/messages_es.po
index 337bdad1de9d81a636be01f4d2248f1624eacfa7..c7a293fd0408747162bf80567755816ca204f565 100644
--- a/apps/i2psnark/locale/messages_es.po
+++ b/apps/i2psnark/locale/messages_es.po
@@ -14,15 +14,15 @@
 # mixxy, 2011
 # punkibastardo <punkibastardo@gmail.com>, 2011, 2012
 # punkibastardo <punkibastardo@gmail.com>, 2011
-# strel, 2013-2014
+# strel, 2013-2015
 # Trolly, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-02-23 21:33+0000\n"
-"Last-Translator: blabla <blabla@trash-mail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:57+0000\n"
+"Last-Translator: strel\n"
 "Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -35,222 +35,222 @@ msgid "No more torrents running."
 msgstr "No hay más torrents intercambiandose."
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Túnel I2P cerrado."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Enlace magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "El límite total de usuarios subiendo ha cambiado a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "El límite mínimo total de usuarios subiendo es {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "El límite de ancho de banda de subida cambió a {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "El límite mínimo de ancho de banda de subida es {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "El retardo en el arranque cambió a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Hora de actualización cambiado a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Actualización deshabilitada"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Tamaño de página cambiado a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "La carpeta de datos tiene que ser una ruta absoluta"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "La carpeta de datos no existe"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "No es una carpeta"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "No se pudo leer"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Carpeta de datos cambiada a {0} "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Los cambios de I2CP (protocolo cliente I2P) y túnel serán efectivos después de detener todos los torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Opciones I2CP cambiadas a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Desconectando destino I2CP antiguo"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Preferencias de I2CP cambiadas a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "No se pudo conectar usando las nuevas preferencias de I2CP (protocolo cliente I2P), volviendo a las antiguas"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "¡No se pudo reconectar usando las preferencias antiguas!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Reconectado con el nuevo destino I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "El escuchador de I2CP se reinició para \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Los ficheros nuevos serán públicamente legibles"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Los ficheros nuevos no serán públicamente legibles"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Arranque automático activado"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Arranque automático desactivado"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Trackers (rastreadores) abiertos activados - requiere reiniciar el torrent para que sea efectivo."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Trackers (rastreadores) abiertos desactivados - requiere reiniciar el torrent para que sea efectivo."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT habilitada."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT deshabilitada."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Cambiar la DHT (tabla de hash distribuida) requiere cerrar el túnel y volver a abrirlo"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "Tema {0} cargado, vuelva a la página principal de i2psnark para verlo"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "La configuración no cambió."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "La lista de trackers (rastreadores) abiertos cambió - requiere reiniciar el torrent para que sea efectiva."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "La lista de trackers (rastreadores) privados cambió - afactará sólo a los torrents creados a partir de ahora."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "No se pudo guardar la configuración en {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Conectando a I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Error al conectar a I2P - ¡compruebe sus preferencias de I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Error: No se pudo añadir el torrent {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "No se pudo abrir \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Ya hay un torrent con esta información de hash (identificador criptográfico): {0}."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "ERROR - No hay trackers I2P en el torrent privado \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", sólo se anunciará a trackers abiertos I2P y a la DHT (tabla de hash distribuida)."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", y los trackers abiertos están deshabilitados. Sólo se anunciará a la DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -258,34 +258,34 @@ msgid ""
 "torrent."
 msgstr "Advertencia - No hay trackers (rastreadores) I2P en \"{0}\", y la DHT (tabla de hash distribuida) y los trackers abiertos están deshabilitados, debe habilitar los trackers abiertos o la DHT antes de iniciar el torrent."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "El torrent en \"{0}\" no es válido."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "ERROR - Sin memoria disponible, no se pudo crear un torrent a partir de {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent añadido e iniciado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent añadido: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Obteniendo {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -293,128 +293,128 @@ msgid ""
 "DHT."
 msgstr "Los rastreadores abiertos están desactivados y no hay pares DHT. Es posible que no se puedan obtener para {0}  hasta que no inicie otro torrent, active los rastreadores abiertos o active la DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Añadiendo {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Descarga ya en marcha: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "No se pudo copiar el fichero torrent a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Hay demasiados ficheros en \"{0}\" ({1}), ¡borrándolos!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "El fichero torrent \"{0}\" no puede terminar en \".torrent\". ¡borrándolo!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "No hay partes en \"{0}\", ¡borrándolo!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Hay demasiadas partes en \"{0}\", el límite es {1}, ¡borrándolo!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Las partes en \"{0}\" ({1}Bytes) son demasiado grandes, ¡borrándolas!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "El límite es de \"{0}\"Bytes"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "El torrent \"{0}\" no contiene datos, ¡borrándolo!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Los torrents mayores de \"{0}\"Bytes aún no están soportados, borrando \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Error: No se pudo eliminar el torrent \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent detenido: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent eliminado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Añadiendo torrents en {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "El limite de ancho de banda de subida es {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Descarga finalizada: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo recibida para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Iniciando el torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Error en el torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "¡No se pudo conectar con I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Abriendo el túnel I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Abriendo el túnel I2P e iniciando todos los torrents ..."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Deteniendo todos los torrents y cerrando el túnel I2P."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Cerrando túnel I2P después de avisar a los trackers"
 
@@ -466,14 +466,14 @@ msgstr "El torrent en {0} no era válido"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Configuración"
 
@@ -506,844 +506,848 @@ msgid "clear messages"
 msgstr "eliminar mensajes"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Estado"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Ordenado por {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Ocultar pares ('peers')"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Mostrar pares ('peers')"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Tipo de fichero"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "Llegada"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Tiempo restante estimado"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "Receptor"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Descargado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Tamaño"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "Transmisor"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Tasa de subida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Subido"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "Tasa de descarga"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Tasa de descarga"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "Tasa de subida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Tasa de subida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Detener todos los torrents y el túnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Detener todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Iniciar todos los torrents parados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Iniciar todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Iniciar todos los torrents y el túnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "No hay torrents cargados."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totales"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 par conectado"
 msgstr[1] "{0} pares conectados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 par DHT"
 msgstr[1] "{0} pares DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "Dest"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Primera"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Primera página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Anterior"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Página anterior"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Siguiente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Página siguiente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Última"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Última página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "No se pudo crear el directorio de datos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "No puede añadir un torrent {0} dentro de otro torrent: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "URL no válida: debe comenzar con \"http://\", \"{0}\", o \"{1}\"."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet borrado: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Fichero torrent borrado: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Descarga borrada: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Fichero de datos borrado: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "No se pudo borrar el fichero de datos: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "No se pudo borrar la carpeta {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Carpeta borrada: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "No se pudo añadir un torrent que acaba en \".torrent\": {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Un torrent con este nombre ya está intercambiandose: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "No puede añadir un torrent que incluye un directorio I2P: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "No puede añadir un torrent {0} que incluye otro torrent: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Error - No se pueden incluir trackers alternativos sin un tracker principal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Error - No se pueden mezclar trackers privados y públicos en un torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent creado para \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Muchos trackers (rastreadores) I2P requieren que registre los nuevos torrents antes del seeding (sembrado) - por favor hágalo antes de iniciar \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Error al crear un torrent para \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "No se pudo crear un torrent para los datos inexistentes: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Error al crear torrent - ha de introducir un fichero o carpeta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Borrar seleccionados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Guardar configuración de tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Eliminado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Añadir tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Introduzca nombre y URLs de tracker (rastreador) válidos"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Restaurar predeterminados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Trackers (rastreadores) predeterminados restaurados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Comprobando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Asignando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Error del tracker (rastreador)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 par"
 msgstr[1] "{0} pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Iniciando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Sembrando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "Bien"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Estancado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Sin pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Detenido"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Detalles del torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Ver ficheros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Abrir fichero"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Detener el torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Detener"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Iniciar el torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Iniciar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Eliminar el torrent de la lista de torrents activos, borrando el fichero .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "¿Está seguro de que quiere borrar el fichero \\''{0}\\'' (los datos descargados no serán borrados)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Eliminar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Borrar el fichero .torrent y el(los) ficheros(s) de datos asociado(s)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "¿Está seguro de que quiere borrar el torrent \\''{0}\\'' y todos los datos descargados correspondientes?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Borrar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Desconocido"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Semilla (seed)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Sin interés (el par no tiene las partes que necesitamos)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Restringido (el par no nos está permitiendo solicitar partes)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "No interesado (no tenemos las partes que el par precisa)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Restringiendo (no estamos permitiendo al par solicitar partes)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detalles en el tracker (rastreador) {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Información"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Añadir torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Desde la URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Introduzca URL de descarga del fichero torrent (sólo I2P), enlace magnet, enlace maggot, o información de hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Añadir torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Dir de datos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Introduzca el directorio en el que guardar los datos (por defecto {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "También puede copiar ficheros .torrent a: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Eliminar un fichero .torrent provocará que se detengan sus transferencias."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Crear un torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Datos a sembrar ('seed')"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Fichero o directorio a sembrar (seed) (ruta completa o dentro del directorio {0} ) "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Principal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternativos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Crear torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "ninguno"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Carpeta de datos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Ficheros legibles por todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Si está marcada, otros usuarios pueden acceder a los ficheros descargados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Auto iniciar torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Si está marcado, iniciará automáticamente los torrents se añadan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Tema"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Hora de actualización"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Nunca"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Retardo al arrancar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minutos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Tamaño de página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Límite total de usuarios subiendo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Límite de velocidad de subida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Se recomienda la mitad del ancho de banda disponible."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Mostrar o cambiar ancho de banda del router (enrutador)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Usar también trackers (rastreadores) abiertos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Si está marcado, anuncia los torrents a los trackers (rastreadores) abiertos así como a los listados en el fichero torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Habilitar DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Si está marcada, usar DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Preferencias de entrada"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Preferencias de salida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Anfitrión I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Puerto I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Opciones de I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Guardar configuración"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Nombre"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL del sitio web"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Estándar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Abrir"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "URL de anunciamientos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Añadir"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "URL de magnet no válida: {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 salto"
 msgstr[1] "{0} saltos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 túnel"
 msgstr[1] "{0} túneles"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Fichero torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Ubicación de los datos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Información de hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Tracker principal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Lista de trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Comentario"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Creado en"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Creado por"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Enlace de magnet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Torrent privado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Finalización"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Restante"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Ficheros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Partes"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Tamaño de las partes"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Carpeta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioridad"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Subir a la carpeta del siguiente nivel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "¿No se encotró el fichero torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "¿No se encontró el fichero en el torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "restante"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Alta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Saltar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Configurar todos a alto "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Configurar todos a normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Omitir todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Guardar prioridades"
diff --git a/apps/i2psnark/locale/messages_fr.po b/apps/i2psnark/locale/messages_fr.po
index 08437ba71cbefcb23e48831b489ddc22e5991389..c8987da9ad591b819e7cb9682483a2c0d49af191 100644
--- a/apps/i2psnark/locale/messages_fr.po
+++ b/apps/i2psnark/locale/messages_fr.po
@@ -12,14 +12,14 @@
 # Boxoa590, 2012
 # jackjack <root@waka.site40.net>, 2011
 # syl_, 2015
-# Towinet, 2013-2014
+# Towinet, 2013-2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-03-01 02:59+0000\n"
-"Last-Translator: syl_\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-22 09:07+0000\n"
+"Last-Translator: Towinet\n"
 "Language-Team: French (http://www.transifex.com/projects/p/I2P/language/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -32,222 +32,222 @@ msgid "No more torrents running."
 msgstr "Il n'y a plus de torrents en fonctionnement."
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Tunnel I2P fermé."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Limite totale uploaders modifiée à : {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "La limite de nombre minimal d''uploaders est {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Limite d’envoi modifiée à : {0} ko/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "La limite minimale d’envoi est {0} ko/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Délai de démarrage modifié à {0} minutes"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Temps de rafraîchissement changé pour {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Rafraîchissement  désactivé"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Taille de la page changée pour {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Répertoire des données doit être un chemin absolu"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Répertoire de données n'existe pas"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Pas un répertoire"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Illisible"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Répertoire des données changé pour {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Les modifications sur I2CP et les tunnels seront pris en compte après avoir arrêté tous les torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Options  I2CP changées pour {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Déconnexion des anciennes destination I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Les paramètres I2CP ont été changés à {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Impossible de se connecter avec les nouveaux paramètres, retour à l'ancienne configuration I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Impossible de se reconnecter avec les anciens paramètres!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Reconnexion sur la nouvelle destination I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "Écouteur I2CP redémarré pour \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Les nouveaux fichiers seront publiquement lisibles"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Les nouveaux fichiers ne seront pas publiquement lisibles"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Démarrage automatique activé"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Démarrage automatique désactivé"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Trackers ouverts activés - redémarrage des torrents requis pour prise en compte."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Trackers ouverts désactivés - redémarrage des torrents requis pour prise en compte."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT activée."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT désactivée."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Le changement DHT nécessite la fermeture puis réouverture du tunnel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "Thème {0}  chargé, revenez à la page d''accueil d''i2psnark pour voir comme il est beau !"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Aucun changement de configuration."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Liste des trackers ouverts modifiée - redémarrage des torrents requis pour prise en compte"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Liste tracker privé modifiée - affecte seulement les torrents nouvellement créés."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Impossible de sauvegarder la configuration vers {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Connexion à I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Erreur de connexion à I2P - Vérifiez vos paramètres I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Erreur : Impossible d’ajouter le torrent : {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Impossible d’ouvrir: \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Un torrent avec cette empreinte est déjà actif: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "ERREUR - Pas de trackers I2P dans le torrent privé \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Avertissement - Pas de trackers I2P dans \"{0}\", vais annoncer aux trackers I2P ouverts et DHT seulement."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Avertissement - Pas de trackers I2P dans \"{0}\", et les trackers ouverts sont désactivés, vais annoncer à DHT seulement."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -255,34 +255,34 @@ msgid ""
 "torrent."
 msgstr "Avertissement - Pas de trackers I2P dans \"{0}\", et DHT et les trackers ouverts sont désactivés, vous devriez activer les trackers ouverts ou DHT avant de démarrer le torrent."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Le torrent dans \"{0}\" est invalide"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "ERREUR - Mémoire insuffisante, impossible de créer le torrent depuis {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent ajouté et démarré: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent ajouté: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Envoi {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -290,128 +290,128 @@ msgid ""
 "DHT."
 msgstr "Les trackers ouverts sont désactivés et nous n''avons pas de pairs DHT. La recherche de {0} pourrait ne pas réussir jusqu''à ce que vous démarriez un autre torrent, activiez trackers ouverts, ou activeiz DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Ajout {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Téléchargements déjà en cours: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Impossible de copier le torrent vers {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Trop de fichiers dans \"{0}\" ({1}), suppression! "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Le fichier torrent \"{0}\" ne peut pas se terminer par \".torrent\", suppression!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Pas de tronçon dans \"{0}\", suppression!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Trop de tronçons dans \"{0}\" , la limite est {1}, suppression!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Les tronçons sont trop larges dans \"{0}\" ({1}B), suppression."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "La limite est de \"{0}\"octets"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Le fichier torrent \"{0}\" n'a pas de données, suppression!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Les torrents dont la taille est supérieure à \"{0}\"octets ne sont pas encore supportés, suppression \"{1}\"."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Erreur: Impossible de supprimer le torrent \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent arrêté: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent supprimé: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Ajout des torrents dans {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Limite bande passante haute est {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Téléchargement terminé: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo reçue pour {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Démarrage du torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Erreur sur torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Impossible de se connecter à I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Ouverture du tunnel I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Ouverture du tunnel I2P et démarrage de tous les torrents."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Arrêt de tous les torrents et fermeture du tunnel I2P."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Fermeture du tunnel I2P après notification aux trackers."
 
@@ -463,14 +463,14 @@ msgstr "Le torrent {0} est invalide"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Configuration"
 
@@ -503,844 +503,848 @@ msgid "clear messages"
 msgstr "nettoyer messages"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "État"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Trier par {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Cacher les pairs"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Afficher les pairs"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Type de fichier"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "Temps"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Temps restant estimé"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "Reçu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Téléchargé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Taille"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "Envoyé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Ratio en upload"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Envoyé"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "Taux RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Taux de téléchargement"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "Taux TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Taux d'envoi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Arrêter tous les torrents et le tunnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Arrêter tout"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Démarrer tous les torrents arrêtés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Démarrer tout"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Démarrer tous les torrents et le tunnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Aucun torrent chargé."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totaux"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "{0} torrent"
 msgstr[1] "{0} torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "{0} pair connecté"
 msgstr[1] "{0} pairs connectés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 pair DHT"
 msgstr[1] "{0} pairs DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "Dest"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Premier"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Première page"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Préc"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Page suivante"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Suivant"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Page suivante"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Dernier"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Dernière page"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "Le répertoire données ne peut pas être créé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "Ne peut pas ajouter le torrent {0} à l'intérieur d'un autre torrent: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "URL incorrecte - elle doit débuter par \"http://\", \"{0}\", ou \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet supprimé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Fichier torrent effacé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Téléchargement effacé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Fichier de données effacé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Le fichier de données ne peut être effacé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Le répertoire n''a pas pu être effacé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Répertoire effacé: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "Ne peut pas ajouter un torrent se terminant par \".torrent\": {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Un torrent avec ce nom est déjà en cours: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "Ne peut pas ajouter un torrent incluant un dossier d''I2P: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "Ne peut pas ajouter le torrent {0} incluant un autre torrent: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Erreur - Ne peut pas inclure de trackers trackers alternatifs sans un tracker primaire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Erreur - Ne peut pas mixer dans un torrent trackers public et privés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent créé pour \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "De nombreux trackers I2P nécessitent d’enregistrer les nouveaux torrents avant de seeder - faites-le avant de démarrer \"{0}\"!"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Erreur de création du torrent pour \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Impossible de créer un torrent pour des données inexistantes: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Erreur de création du torrent - vous devez saisir un fichier ou un répertoire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Effacer les sélectionnés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Sauvegarder la configuration du tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Retiré"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Ajout tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Entrez nom de tracker valide et URLs"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Restaurer les paramètres d'origine"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Restaurer les trackers d'origine"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Vérification"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Allocation"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Erreur du tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} pair"
 msgstr[1] "{0} pairs"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Démarrage"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Seed en cours"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Complet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Figé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Pas de pair"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Arrêté"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Détails du torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Voir les fichiers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Ouvrir fichier"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Arrêter le torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Arrêter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Démarrer le torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Démarrer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Enlever le torrent de la liste active, suprression du fichier .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Êtes-vous sûr que vous voulez supprimer le fichier \\''{0}\\'' (les données téléchargées ne seront pas supprimées) ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Enlever"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Supprimer le fichier .torrent et le(s) fichier(s) de données associé(s)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Êtes-vous certain de vouloir supprimer le torrent \\''{0}\\'' ainsi que toutes les données téléchargées ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Supprimer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Inconnu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Aucun intérêt (le pair n'a aucun tronçon utile)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "bridé (le pair ne nous permet pas de demander des tronçons)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Pas intéressé (aucun tronçon utile au pair)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "bridage (nous ne permettons pas au pair de demander un tronçon)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Détails au tracker {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Ajouter torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Depuis l'URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Entrez l'URL de téléchargement du fichier torrent (I2P seulement), lien magnet, lien maggot, or l'info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Ajouter torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Répertoire données"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Saisissez le répertoire où sauvegarder les données par défaut (default {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Vous pouvez aussi copier les fichiers .torrent vers {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "La suppression d'un fichier .torrent entraîne l'arrêt du torrent."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Créer torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Données à seeder"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Fichier ou dossier à seeder (chemin complet ou dans le dossier {0} )"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primaire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternatifs"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Créer torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "aucun"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Répertoire de données"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Fichiers lisibles par tous"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Si coché, les autres utilisateurs pourront accéder aux fichiers téléchargés."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Démarrer automatiquement les torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Si coché, les torrents démarreront automatiquement lors de l'ajout"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Thème"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Temps de rafraîchissement "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Jamais"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Délais de démarrage"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minutes"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Taille page"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Limite totale d'envoi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "pairs"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Limite de bande passante en envoi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "La moitié de la bande passante est recommandée."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Consulter ou modifier la bande passante du routeur"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Utiliser également les trackers ouverts"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Si coché, les torrents seront annoncés vers les open trackers ainsi que vers les trackers indiqués dans le fichier torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Active DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Si coché, utilise DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Paramètres entrants"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Paramètres sortants"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Hôte I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Port I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Options I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Sauvegarder la configuration"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Nom"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL du site web"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Standard"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Ouvrir le fichier"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Annoncer URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Ajout"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "URL magnet {0} incorrecte"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "{0} saut"
 msgstr[1] "{0} sauts"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "{0} tunnel"
 msgstr[1] "{0} tunnels"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Fichier torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Emplacement donnée"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Info hachage"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Tracker primaire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Liste tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Commentaire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Créé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Créé par"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Lien magnet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Torrent privé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Finalisation"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Restant"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Fichiers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Tronçons"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Taille des tronçons"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Répertoire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Priorité"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Vers le répertoire parent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent non trouvé?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Fichier non trouvé dans le torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "complet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "restant"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Haut"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Ignorer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Mettre tous à haute"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Mettre tous à normale"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Tout sauter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Sauvegarder les priorités"
diff --git a/apps/i2psnark/locale/messages_hu.po b/apps/i2psnark/locale/messages_hu.po
index d5a03b354258ebba4f87e45ac98cdec26b58e1f6..6710e744eede7da7bb81db6c7151b3ec45a6b2e1 100644
--- a/apps/i2psnark/locale/messages_hu.po
+++ b/apps/i2psnark/locale/messages_hu.po
@@ -5,12 +5,13 @@
 # 
 # Translators:
 # omgitsadalek <mihalymokus76@gmail.com>, 2013
+# benewfy <benewfy@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Hungarian (http://www.transifex.com/projects/p/I2P/language/hu/)\n"
 "MIME-Version: 1.0\n"
@@ -19,227 +20,227 @@ msgstr ""
 "Language: hu\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
-msgstr ""
+msgstr "Nincs több futó torrent."
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P alagút lezárva."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Mágnes"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Teljes feltöltők korlátja megváltoztatva a következőre: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Teljes feltöltők minimum korlátja a következő: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Feltöltési sávszélesség korlátja megváltoztatva a következőre: {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "A minimum feltöltési sávszélesség korlátja {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Késleltetés indításkor megváltoztatva a következőre: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Frissítési idő a következőre változott: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Frissítés kikapcsolva"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Az I2CP-re és alagutakra vonatkozó változtatások az összes torrent leállítása után lépnek érvénybe"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "I2CP opciók a következőre lettek változtatva: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Lekapcsolódás a régi I2CP célállomásról"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "I2CP beállítások a következőre változtak: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Sikertelen kapcsolódás az új beállításokat használva, visszatérés a régi I2CP beállításokhoz"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Sikertelen újrakapcsolódás a régi beállításokat használva!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Újracsatlakozva az új I2CP célállomásra"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP figyelő újraindítva a következőhöz: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Az új fájlok nyilvánosan olvashatók lesznek"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Az új fájlok nyilvánosan nem lesznek olvashatók"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Automatikus indítás engedélyezve"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Automatikus indítás kikapcsolva"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Nyílt követők (tracker) engedélyezve - az érvénybe lépéshez a torrent újraindítása szükséges."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Nyílt követők (tracker) kikapcsolva - az érvénybe lépéshez a torrent újraindítása szükséges."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT engedélyezve."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT letiltva."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} téma betöltve, megtekintéséhez térj vissza az i2psnark főoldalára."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Beállítások nem lettek megváltoztatva."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Nyílt Követők (tracker) listája megváltozott - az érvénybe lépéshez a torrent újraindítása szükséges."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Megváltozott a privát tracker lista - csak az újonnan létrehozott torrentekre vonatkozik."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Nem sikerült a beállítások mentése a következőre: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Kapcsolódás az I2P-hez"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Hiba az I2P-hez való csatlakozáskor - ellenőrizd az I2CP beállításait!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Hiba: a következő torrent hozzáadása sikertelen: {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "\"{0}\" megnyitása sikertelen"
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "A torrent már fut ezzel az infó hash-el: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "HIBA - Nincsenek I2P követők (trackerek) a következő privát torrentben: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -247,34 +248,34 @@ msgid ""
 "torrent."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Érvénytelen torrent a következőben: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "HIBA - nincs több memória, torrent létrehozása sikertelen a következőből: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent hozzáadva és elindítva: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent hozzáadva: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Leszedés: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -282,132 +283,132 @@ msgid ""
 "DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "{0} Hozzáadása"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Futó letöltés: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Nem sikerült a torrent fájl másolása a következőre: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Túl sok fájl a következőben: \"{0}\" ({1}), törlésre kerül!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrent fájl \"{0}\" nem végződhet így: \".torrent\", törlésre kerül!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Nincsenek részek a következőben: \"{0}\", törlésre kerül!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Túl sok rész a következőben: \"{0}\", a határ {1}, törlésre kerül!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "A részek túl nagyok a következőben: \"{0}\" ({1}B), törlésre kerül."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "A határ {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "\"{0}\" torrent nem tartalmaz adatot, törlésre kerül!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Nincsenek támogatva torrentek, melyek nagyobbak, mint {0}B, \"{1}\" törlésre kerül"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Hiba: a következő torrent eltávolítása sikertelen: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent leállítva: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent eltávolítva: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Torrentek hozzáadása a következőben: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Feltöltési sebesség korlát {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "A letöltés befejeződött: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainformáció letöltve a következőhöz: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "{0} torrent indítása"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Hiba a következő torrenten: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Sikertelen csatlakozás az I2P-hez!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Az I2P alagút megnyitása"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Az I2P alagút megnyitás, minden torrent indítás alatt."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Az összes torrent leállítás és az I2P alagút lezárás alatt."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr ""
@@ -455,14 +456,14 @@ msgstr "Érvénytelen torrent a következő helyen: {0}"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Beállítások"
 
@@ -495,844 +496,848 @@ msgid "clear messages"
 msgstr "üzenetek törlése"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Állapot"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Társak Elrejtése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Társak Megjelenítése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "BIE"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Becsült hátralévő idő"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "Be"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Letöltött"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Méret"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "Ki"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Feltöltött"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Letöltési Sebesség"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Feltöltési Sebesség"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Minden torrent és az I2P alagút leállítása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Mindet Leállít"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Mind Indítása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Minden torrent és az I2P alagút indítása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Egy torrent sem került betöltésre."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Összesen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 csatlakozott társ"
 msgstr[1] "{0} csatlakzott társ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Érvénytelen URL: \"http://\", \"{0}\", vagy \"{1}\" kell kezdődnie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Mágnes észlelve: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Torrent fájl törölve: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Letöltés törölve: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Adatfájl törölve: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Adatfájl törlése nem sikerült: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Könyvtár nem törölhető: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Könyvtár törölve: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent létrehozva a következőnek: \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Sok I2P követő (tracker) megköveteli az új torrentek regisztrációját táplálás (seed) előtt - kérlek, regisztrálj, mielőtt elindítod a következőt:  \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Hiba történt a torrent létrehozásakor  \"{0}\" számára"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Nem sikerült torrent létrehozása, nemlétező adat: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Hiba a torrent létrehozásakor - Fájl vagy könyvtár megadása kötelező"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Kijelöltek törlése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Eltávolítva"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Követő (tracker) hozzáadása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Adj meg érvényes követő (tracker) nevet és URL címeket"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Alapértelmezések visszaállítása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Alapértelmezett követők (trackerek) visszaállítva"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Ellenőrzés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Helyfoglalás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Követő (tracker) Hiba"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 társ"
 msgstr[1] "{0} társ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Indítás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Táplálás (seeding)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Kész"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "Rendben"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Beragadt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Nincsenek Társak"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Leállítva"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Torrent részletek"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Fájlok megtekintése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Fájl megnyitása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Torrent leállítása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Leállítás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Torrent indítása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Indítás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Torrent eltávolítása az aktív listáról, a .torrent fájl törlésével"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Eltávolítás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr ".torrent fájl törlése a hozzá tartozó adatfájlokkal együtt"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Biztos, hogy törlöd a következő torrentet és az összes letöltött adatot: \\''{0}\\'' ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Törlés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Ismeretlen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Táplálás (Seed)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Érdektelen (társ nem rendelkezik számunkra szükséges részekkel)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Eltömődött (a társ nem engedi részek igénylését)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Érdektelen (nem rendelkezünk a társak számára szükséges részekkel)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Eltömődött (a társak számára a részek igénylése nem engedélyezett)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Részletek a következő követőn (tracker): {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Infó"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Torrent Hozzáadása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "URL címről"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Add meg a torrent fájl letöltési URL-jét (csak I2P), mágnes linket, maggot linket vagy infó hash-t"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Torrent hozzáadása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Másolhatsz .torrent fájlokat a következőhöz is: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "A .torrent fájl eltávolításával meg fog állni."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Torrent létrehozása"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Adat táplálásra (seed)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Követők (trackerek)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Torrent létrehozása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Adatkönyvtár"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Mindenki által olvasható fájlok"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Ha be van jelölve, más felhasználók is elérhetik a letöltött fájlokat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Ha be van jelölve, a hozzáadott torrentek automatikusan elindulnak"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Téma"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Idő frissítése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Soha"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Indítási késleltetés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "perc"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Teljes feltöltők korlát"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "társak"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Feltöltési sávszélesség korlát"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "A rendelkezésre álló sávszélesség fele javasolt."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "A router sávszélesség megtekintése vagy megváltoztatása"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Nyílt követőket (tracker) is használjon"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Ha be van jelölve, bejelenti a torrenteket a nyílt követőkre (tracker) és torrent fájlban feltüntetett követőre is"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "DHT engedélyezése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Bejövő Beállítások"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Kimenő Beállítások"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP hoszt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP port"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "I2CP opciók"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Beállítások mentése"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Név"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "Weboldal URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Megnyitás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privát"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Bejelentési URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Hozzáadás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Érvénytelen mágnes URL {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 ugrás"
 msgstr[1] "{0} ugrás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 alagút"
 msgstr[1] "{0} alagút"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Torrent fájl"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Mágnes link"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Privát torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Befejezés"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Hátralévő"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Fájlok"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Részek"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Rész méret"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Könyvtár"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioritás"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Vissza a felsőbb szintű könyvtárba"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent nem található?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "File nem található a torrentben?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "kész"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "hátralévő"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Magas"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normál"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Kihagy"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Tulajdonságok mentése"
diff --git a/apps/i2psnark/locale/messages_it.po b/apps/i2psnark/locale/messages_it.po
index 150d39fc1f05d963e7a6d4c91f6e423cc058dd9d..e0315ca1941b3e7ab26aab3e2b59049a6a8140c6 100644
--- a/apps/i2psnark/locale/messages_it.po
+++ b/apps/i2psnark/locale/messages_it.po
@@ -14,8 +14,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/it/)\n"
 "MIME-Version: 1.0\n"
@@ -24,227 +24,227 @@ msgstr ""
 "Language: it\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Tunnel I2P chiuso."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Limite del totale di uploaders modificato a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Il minimo limite del totale di uploaders è {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Il minimo limite della banda in up modificato a {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Il minimo limite della banda in up è {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Ritardo startup modificato a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Tempo di aggiornamento cambiato in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Aggiornamento disabilitato"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Dimensione pagina cambiata a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "La cartella dei dati deve essere un percorso assoluto"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "La cartella dei dati non esiste"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Non è una cartella"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Illeggibile"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Cartella dei dati cambiata a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "I cambiamenti di tunnel ed I2CP saranno effettivi dopo aver fermato tutti i torrent "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Opzioni I2CP modificate in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "La vecchia destinazione I2CP è in disconnessione"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Impostazioni I2CP cambiate a {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Impossibile connettersi con le nuove impostazioni, ritorno alle vecchie impostazioni I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Impossibile riconnettersi con le vecchie impostazioni!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Riconnesso sulla nuova destinazione I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "Listener I2CP riavviato per \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "I nuovi file saranno visibili pubblicamente"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "I nuovi file non saranno visibili pubblicamente"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Autostart abilitato"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Autostart disabilitato"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Tracker aperti abilitati - è richiesto il riavvio dei torrent perchè la modifica abbia effetto."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Tracker aperti disabilitati - è richiesto il riavvio dei torrent perchè la modifica abbia effetto."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "Abilita DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "Disabilita DHT"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "La modifica DHT richiede il riavvio dei tunnel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} tema caricato, ritornare alla pagina i2psnark principale per vederlo."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Configurazione non modificata."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Lista dei tracker aperti modificata - è richiesto il riavvio dei torrent perchè la modifica abbia effetto."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Elenco tracker privati modificato - solo per i nuovi torrent creati."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Impossibile salvare la configurazione su {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "In connessione a I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Errore nella connessione a I2P - controlla le tue impostazioni I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Errore: Non è stato possibile aggiungere il torrent {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Impossibile aprire \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Un torrent con questo info hash è già attivo: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "ERRORE - Nessun tracker I2P nel torrent privato \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Attenzione - No i2P trackers entranti (in) \"{0}\", sarà richiesto alla rete i2P di aprire solamente trackers e peers DHT"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Attenzione - No i2P trackers entranti (in) \"{0}\", l'apertura di trackers è disabilitata e sarà richiesto di aprire solo peers DHT"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -252,34 +252,34 @@ msgid ""
 "torrent."
 msgstr "Attenzione - No i2P trackers entranti (in) \"{0}\", l'apertura di trackers e client DHT sono disabilitati. Dovresti, prima di far partire un torrent, abilitare l'apertura di trackers o peers DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Il torrent in \"{0}\" non è valido"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "ERRORE - Memoria piena, impossibile creare torrent da {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent aggounto e avviato: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent aggiunto: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Recupero di {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -287,132 +287,132 @@ msgid ""
 "DHT."
 msgstr "I trackers aperti sono disabilitati e non ci sono peers DHT. Il recupero {0} potrebbe non riuscire fino a che non fai partire un altro torrent, abiliti i trackers aperti o abiliti il DHT. "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "{0} in aggiunta"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Download già attivo: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Fallimento nella copia del file torrent su {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Troppi file in \"{0}\" ({1}), in rimozione!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Il file torrent \"{0}\" non può finire in \".torrent\", in rimozione!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Non ci sono pezzi in \"{0}\", in rimozione!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Troppi pezzi in \"{0}\", il limite è {1}, in rimozione!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "I pezzi sono troppo larghi in \"{0}\" ({1}B), in rimozione."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Il limite è {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Il torrent \"{0}\" non ha dati, in rimozione!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrent più grandi di {0}B non sono ancora supportati, \"{1}\" in rimozione"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Errore: Non è stato possibile rimuovere il torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent fermato: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent rimosso: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Torrent in aggiunta in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "La banda di Upload massima è {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Download completato: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo ricevute per {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Avvio del torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Errore sul torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Impossibile connettersi a I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Apertura tunnel I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Avvio di tutti i torrent e apertura del tunnel I2P in corso. "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Stop di tutti i torrent e chiusura del tunnel I2P in corso."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Chiusura tunnel I2P dopo la notifica ai trackers."
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Trackers non validi {0} - abilitare i trackers aperti o il DHT?"
@@ -460,14 +460,14 @@ msgstr "Il torrent a {0} non è stato valido"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Configurazione"
 
@@ -500,844 +500,848 @@ msgid "clear messages"
 msgstr "pulisci messaggi"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Stato"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Nascondi Peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Mostra Peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "ETA"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Stima del tempo rimanente"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Scaricato"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Dimensione"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Inviato"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "Velocità Ricezione (RX) "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Tasso di Download"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "Velocità Trasmissione (TX)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Tasso di Upload"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Ferma tutti i torrent e il tunnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Ferma Tutto"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Avvia tutti i torrent fermati"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Avvia Tutti"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Avvia tutti i torrent e il tunnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Nessun torrent caricato."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totali"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 peer connesso"
 msgstr[1] "{0} peer connessi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "uno: 1 DHT peer"
 msgstr[1] "altri: {0} DHT peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Primo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Prima pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Ind"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Pagina precedente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Avanti"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Pagina successiva"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Ultimo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Ultima pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "URL non valido: Deve cominciare con \"http://\", \"{0}\", o \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet eliminato: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "File torrent eliminato: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Downloads cancellati: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "File di dati eliminato: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Non è stato possibile eliminare il file di dati: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "La Cartella non può essere cancellata: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Cartella cancellata: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Errore - Impossibile includere tracker alternativi senza un tracker primario"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Errore - Impossibile fare un mix di tracker privati e pubblici in un torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent creato per \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Molti tracker I2P ti richiedono di registrare nuovi torrent prima del seeding - per cortesia fallo, prima di avviare \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Errore nella creazione di un torrent per \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Impossibile creare un torrent per i dati nonesistenti: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Errore nella creazione del torrent - devi inserire un file o una directory"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Elimina selezionati"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Salva configurazione tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Rimosso"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Aggiungi tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Inserisci nome e URL validi per il tracker"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Ripristina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Ripristina tracker di default"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Controllo (Check)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Allocando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Errore del Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 peer"
 msgstr[1] "{0} peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "In partenza"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Seeding"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "In Stallo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Nessun Peer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Fermato"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Dettagli torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Vedi files"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Apri file"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Ferma il torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Ferma"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Avvia il torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Avvia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Rimuovi il torrent dalla lista attiva eliminando il file .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Sei sicuro di voler cancellare il file \\\"{0}\\\" (i dati scaricati non verranno cancellati)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Rimuovi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Elimina il file .torrent e i file dati associati"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Sei sicuro di voler eliminare il torrent \\\"{0}\\\" e tutti i dati scaricati?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Elimina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Sconosciuto"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Non interessante (Il peer non ha pezzi di nostro interesse)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Soffocato (Il peer non ci sta permettendo di richiedere pezzi)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Non interessato (Non abbiamo pezzi di interesse per il peer)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Soffocando (Non stiamo permettendo al peer di richiedere pezzi)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Dettagli al tracker {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Aggiungi Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Da URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Inserisci l'URL del file torrent da scaricare (solo I2P), link magnet, link maggot o info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Aggiungi torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Puoi anche copiare files .torrent su: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Rimuovere un .torrent lo fermerà."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Crea Torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Dati da mandare in seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primario"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternativi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Crea torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "nessuno"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Directory dati"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "File visibili da tutti"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Se selezionato, gli altri utenti potrebbero accedere ai file scaricati"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Se selezionato, avvia automaticamente torrent che vengono aggiunti"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Tema"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Tempo di aggiornamento"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Mai"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Ritardo di avvio"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minuti"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Dimensione pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Limite di uploader totale"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Limite di banda in upload"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Raccomandata metà della banda disponibile."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Vedi o cambia la banda del router"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Usa anche tracker aperti"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Se selezionato, annuncia i torrent sia a tracker aperti che ai tracker elencati nel file torrent "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Abilita DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Se selezionato, usa DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Impostazioni d'Entrata"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Impostazioni d'Uscita"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Host I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Porta I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Opzioni I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Salva configurazione"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Nome"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL Sitoweb"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Apri"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privato"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "URL Announce"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Aggiungi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Magnet URL {0} non valido"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 hop"
 msgstr[1] "{0} hop"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 tunnel"
 msgstr[1] "{0} tunnel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "File torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Tracker primario"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Elenco dei tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Commento"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Creato"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Creato da"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Link magnet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Torrent privato"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Completamento"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Rimanente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Files"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Pezzi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Dimensione pezzo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Cartella"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Priorità"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Fino a cartella di livello superiore"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent non trovato?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "File non trovato nel torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "rimanente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Alto"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normale"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Salta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Salva priorità "
diff --git a/apps/i2psnark/locale/messages_nb.po b/apps/i2psnark/locale/messages_nb.po
index 2592898687b03c1f17daa9dcc4e7e9da85e20ce2..43d9111cc28eae6a6f5f5fedd42c9a3108f11208 100644
--- a/apps/i2psnark/locale/messages_nb.po
+++ b/apps/i2psnark/locale/messages_nb.po
@@ -9,8 +9,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/I2P/language/nb/)\n"
 "MIME-Version: 1.0\n"
@@ -19,227 +19,227 @@ msgstr ""
 "Language: nb\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P tunnelen lukket."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Total opplaster grense satt til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Minimum total opplaster grense er {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Opp båndbredde endret til {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Minimum opp båndbredde grense er {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Oppstart utsettelse sett til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Oppdaterings tid endret til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Oppdatering skrudd av"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "I2CP og tunnel endringer vil ta effekt etter sopping av alle torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "I2CP instillinger endret til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Frakobler fra gammel I2CP destinasjon"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "I2CP instillinger endret til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Umulig å få tilkobling med de nye instillingene, går tilbake til de gamle I2CP instillingene"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Umulig å koble seg til på nytt med gammle instillinger!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Gjentilkobler på den nye I2CP destinasjonen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP lytter omstartet for \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Nye filer vil bli lesbar for alle"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Nye filer vil ikke bli lesbar for alle"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Autostart er skrudd på"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Autostart er avslått"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Skru på åpne trackers - krever torrent omstart for å ta effekt."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Skru av åpne trackers - krever torrent omstart for å ta effekt."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT skrudd på"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT skrudd av"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "DHT endring krever tunnel avslutting og gjennåpning"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} tema lastet, returner til hovedsiden for i2psnart for å se."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Konfigurasjon uendret."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Åpen tracker listen endret - torrent omstart kreves før det tar effekt."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Privat tracker list endret - vil kun påvirke ny opprettet torrent filer."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Umulig å lagre konfigurasjon til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Kobler til I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Feil ved tilkobling til I2P - Sjekk dine I2CP instillinger!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Feil: kan ikke legge til torrenten {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Kan ikke åpne \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent med samme info hash kjører allerede: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "FEIL - Ingen I2P trackers i privat torrent \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Advarsel - Ingen I2P trackers i \"{0}\", vil bare annonsere til I2P åpne trackers og DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Advarsel - Ingen I2P tracker i \"{0}\", og åpne trackers er skrudd av, vil annonsere kun på DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -247,34 +247,34 @@ msgid ""
 "torrent."
 msgstr "Advarsel - Ingen I2P trackers i \"{0}\", og DHT og åpne trackers er avskrudd, du burde skru på åpen tracker eller DHT før du starter torrenten."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent i \"{0}\" er ugyldig"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "FEIL - Tomt for minne, kan ikke lage torrent fra {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent lagt til og startet: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent lagt til: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Henter {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -282,132 +282,132 @@ msgid ""
 "DHT."
 msgstr "Åpne trackers er skrudd av og vi har ingen DHT peers. Mottak av {0} blir muligens ikke fullført før du starter en annen torrent, starter åpne trackers, eller DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Legger til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Nedlastning kjører alt: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Feilet med å kopiere torrent fil til {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "For mange filer i \"{0}\" ({1}), sletter det!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrent filen \"{0}\" kan ikke avsluttes i \".torrent\", sletter den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Ingen biter i \"{0}\", sletter den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "For mange biter i \"{0}\", grensen er {1}, sletter den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Bitene er for store i \"{0}\" ({1}B), sletter den."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Grensen er {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrent \"{0}\" har ingen data, sletter den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrents større enn {0}B er ikke supportet ennå, sletter \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Feil: kan ikke fjerne torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent stoppet: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent fjernet: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Legger til torrents i {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Opp hastighet grense er {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Nedlastning fullført: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Meta informasjon mottatt for {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Starter opp torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Feil i torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Umulig å koble til I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Ã…pner I2P tunnelen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Ã…pner I2P tunnelen og starter alle torrents."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Stopper alle torrents og lukker I2P tunnelen."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Lukker I2P tunnel etter beskjed til trackers."
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Ingen valid tracker for {0} - skru på åpne trackers eller DHT?"
@@ -455,14 +455,14 @@ msgstr "Torrent ved {0} var ikke valid"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Konfigurasjon"
 
@@ -495,844 +495,848 @@ msgid "clear messages"
 msgstr "fjern meldinger"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Status"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Gjem peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Vis peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "ETA"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Beregnet tid som gjenstår"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Lastet ned"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Størrelse"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Lastet opp"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "RX Fart"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Ned hastighet"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "TX Fart"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Opp hastighet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Stopp alle torrents og I2P tunellen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Stopp alle"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Start alle"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Start alle torrents og I2P tunellen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Ingen torrent lastet."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totaler"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrents "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 tilkoblet peer"
 msgstr[1] "{0} tilkoblet peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 DHT peer"
 msgstr[1] "{0} DHT peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Ugyldig URL: Den må starte med \"http://\", \"{0}\", eller \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Torrent fil slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Nedlastning slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Data fil slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Data fil kunne ikke bli slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Mappen kunne ikke bli slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Mappe slettet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent laget for \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Mange I2P trackers krever at du registerer nye torrents før seeding - Vennligst gjør det før du starter \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Feil ved laging av torrent for \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Kan ikke lage torrent fra den ikke-eksisterende data: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Feil ved opprettelse av torrent - du må velge en fil eller mappe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Slett markerte"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Lagre tracker konfigurasjon"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Fjernet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Legg til tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Skriv inn valid tracker navn og URLer"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Gjenopprett standarder"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Gjenopprettet standard trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Sjekker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Tildeling"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Tracker Feil"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 peer"
 msgstr[1] "{0} peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Starter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Deler"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Ferdig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Fastlåst"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Ingen Peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Stoppet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Torrent detaljer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Vis filer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Ã…pne fil"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Stopp torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Stopp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Start torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Start"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Fjern torrent fra den aktive listen, og slette .torrent filen"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Fjern"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Slett .torrent filen og all tilhørende data fil(er)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Er du sikker på at du vil slette torrent \\\"{0}\\\" og all nedlastet data?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Slett"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Ukjent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Deler"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Uinteressang (Peeren har ingen biter vi trenger)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Skjult (Peeren gir oss ikke lov til å be om biter)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Uinteresang (Vi har ingen biter peeren trenger)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Hoster (Vi tillater ikke peeren til å be om biter)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detaljer hos {0} tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Informasjon"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Legg til torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Fra URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Skriv inn torrent fil nedlastings URL (kun I2P), magnet link, maggot link, eller info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Legg til torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Du kan også kopiere .torrent filer til: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Fjerning av .torrent vil få den til å stoppe."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Opprett Torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Data for deling"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Opprett torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Data mappe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Filer tilgjengelig for alle"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Hvis merket, andre lokale brukere kan få tilgang til nedlastninger"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Hvis avmerket, vil torrents som blir lagt til automatisk startet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Theme"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Oppdater tid"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Aldri"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Oppstarts utsettelse"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minutter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Total opplaster grense"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Opp båndbredde grense"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Halve tilgjengelige hastigheten er anbefalt."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Vis eller endre router båndbredde"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Bruk åpne trackers også"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Hvis avmerked, annonser torrenter til åpne trackers i tillegg til tracker listen i torrent filen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Skru på DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Hvis markert, bruk DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Inngående instillinger"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Utgående instillinger"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP vert"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP port"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "I2CP alternativer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Lagre konfigurasjon"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Navn"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "Webside URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Ã…pne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Annonserings URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Legg til"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Invalid magnet URL {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 hopp"
 msgstr[1] "{0} hopp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 tunnel"
 msgstr[1] "{0} tunneler"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Torrent fil"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnet link"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Privat torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Fullføring"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Gjennstår"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Filer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Biter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Bit størrelse"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Mappe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioritet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Opp en level i mappe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent ikke funnet?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Fil ikke funnet i torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "ferdig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "gjennstår"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Høy"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Dropp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Lagre prioriteter"
diff --git a/apps/i2psnark/locale/messages_nl.po b/apps/i2psnark/locale/messages_nl.po
index 5f7750c1792b6d4a90132ecdbc5eace5a97ea105..20ff93044875ab2c6fa32a946d958b130b812b61 100644
--- a/apps/i2psnark/locale/messages_nl.po
+++ b/apps/i2psnark/locale/messages_nl.po
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-02-18 19:51+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Dutch (http://www.transifex.com/projects/p/I2P/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -27,222 +27,222 @@ msgid "No more torrents running."
 msgstr "Er draaien geen torrents meer."
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P tunnel gesloten."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magneet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Totale uploaders limiet gewijzigd in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Minimum totale uploaders limiet is {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Up bandbreedte limiet gewijzigd in {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Minimum up bandbreedte limiet is {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Opstartvertraging gewijzigd in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Ververstijd gewijzigd naar {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Verversen uitgezet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Paginagrootte gewijzigd naar {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Data-directory moet een absoluut pad zijn"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Data-directory bestaat niet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Geen directory"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Onleesbaar"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Data-directory gewijzigd naar {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "I2CP en tunnel wijzigingen hebben pas effect na het stoppen van alle torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "I2CP-opties gewijzigd naar {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Oude I2CP destination wordt afgesloten"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "I2CP instellingen gewijzigd in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Kan geen connectie maken met de nieuwe instellingen, we keren terug naar oude I2CP instellingen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Kan niet opnieuw verbinden met de oude instellingen!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Opnieuw verbonden met de nieuwe I2CP destination"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP listener herstart voor \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Nieuwe bestanden zullen publiek bereikbaar zijn"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Nieuwe bestanden zullen niet publiek bereikbaar zijn"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Autostart ingeschakeld"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Autostart uitgeschakeld"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Open Trackers ingeschakeld - torrent herstart nodig."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Open Trackers uitgeschakeld - torrent herstart nodig."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT aangezet."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT uitgezet."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "DHT-wijziging vereist afsluiten en opnieuw openen van tunnel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} thema geladen, ga naar de hoofd i2psnark pagina om deze te bekijken."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Configuratie ongewijzigd."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Open Tracker lijst gewijzigd - torrent herstart nodig."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Privé trackerlijst gewijzigd - beïnvloedt enkel nieuw aangemaakte torrents."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Kan de configuratie niet opslaan in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Verbinden met I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Fout bij verbinden met I2P - controlleer je I2CP instellingen!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Fout: Kan de torrent {0} niet toevoegen"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Kan \"{0}\" niet openen"
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent met deze info hash is al actief: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "FOUT - Geen I2P-trackers in privé-torrent \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Waarschuwing - Geen I2P-trackers in \"{0}\", zal alleen aankondigen aan open trackers en DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Waarschuwing - Geen I2P-trackers in \"{0}\", en open trackers zijn uitgezet, zal alleen aankondigen aan DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -250,34 +250,34 @@ msgid ""
 "torrent."
 msgstr "Waarschuwing - Geen I2P-trackers in \"{0}\", en DHT en open trackers zijn uitgezet, je moet open trackers of DHT aanzetten alvorens de torrent te starten."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent in \"{0}\" is ongeldig"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "ERROR - Geen geheugen meer, kan geen torrent maken van {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent toegevoegd en gestart: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent toegevoegd: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Downloaden {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -285,128 +285,128 @@ msgid ""
 "DHT."
 msgstr "Open trackers zijn uitgezet en we hebben geen DHT peers. Ophalen van {0} zal misschien niet lukken tot je een andere torrent start, open trackers aanzet, of DHT aanzet."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Toevoegen van {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Download is al bezig: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Kan het torrent bestand niet kopieren naar {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Te veel bestanden in \"{0}\" ({1}), wordt verwijderd!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrent bestand \"{0}\" kan niet eindigen in \".torrent\", wordt verwijderd!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Geen stukken in \"{0}\",  wordt verwijderd!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Te veel stukken in \"{0}\", limiet is {1}, wordt verwijderd!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Stukken zijn te groot in \"{0}\" ({1}B), wordt verwijderd."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Limiet is {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrent \"{0}\" heeft geen data en wordt verwijderd!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrents groter dan {0}B worden nog niet ondersteund, verwijder \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Fout: Kan de torrent {0} niet verwijderen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent gestopt: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent verwijderd: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Toevoegen van torrents in {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Bandbreedtelimiet omhoog is {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Download gereed: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo ontvangen voor {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Starten met torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Fout bij torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Kan niet verbinden met I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Bezig met openen van I2P-tunnel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Openen van de I2P tunnel en starten van alle torrents."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Stoppen van alle torrents en sluiten van I2P tunnel."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Bezig met sluiten van I2P-tunnel na verwittigen van trackers."
 
@@ -458,14 +458,14 @@ msgstr "Torrent op {0} was niet geldig"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Configuratie"
 
@@ -498,844 +498,848 @@ msgid "clear messages"
 msgstr "berichten wissen"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Status"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Sorteren op {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Verberg Peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Toon Peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Bestandstype"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "ETA"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Schatting resterende tijd"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Gedownload"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Grootte"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Upload-ratio"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Geupload"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "RX-ratio"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Down Snelheid"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "TX-ratio"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Up Snelheid"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Stop alle torrents en de I2P tunnel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Stop Alle"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Start alle gestopte torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Start Alle"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Start alle torrents en de I2P tunnel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Geen torrents geladen."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totalen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 verbonden peer"
 msgstr[1] "{0} verbonden peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 DHT peer"
 msgstr[1] "{0} DHT peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Eerste"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Eerste pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Vorige"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Vorige pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Volgende"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Volgende pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Laatste"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Laatste pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "Data-directory kan niet aangemaakt worden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "Kan torrent {0} niet toevoegen binnen andere torrent: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Ongeldige URL: moet beginnen met \"http://\", \"{0}\", of \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet verwijderd: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Torrent bestand verwijderd: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Download verwijderd: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Data bestand verwijderd: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Kan data bestand niet verwijderen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Directory kon niet worden verwijderd: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Map verwijderd: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "Kan geen torrent toevoegen die eindig op \".torrent\": {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Torrent met deze naam is al bezig: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "Kan geen torrent toevoegen die een I2P-directory bevat: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "Kan torrent {0} die een andere torrent bevat niet toevoegen: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Fout - Kan geen alternatieve trackers toevoegen zonder een primaire tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Fout - Kan privé en publieke trackers in een torrent niet mengen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent gemaakt voor \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Veel I2P trackers vereisen dat je de nieuwe torrent registreert voor het seeden - doe dit voordat je \"{0}\" start"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Fout bij het maken van een torrent voor \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Kan geen torrent maken voor niet-bestaande data: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Fout bij het maken van de torrent - je moet een bestand of directory invullen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Geselecteerde verwijderen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Trackerconfiguratie opslaan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Verwijderd"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Tracker toevoegen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Geef een geldige trackernaam en URLs in"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Standaardtrackers herstellen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Standaardtrackers hersteld"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Bezig met controleren"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Bezig met toewijzen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Tracker Fout"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 peer"
 msgstr[1] "{0} peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Bezig met starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Seeding"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Voltooid"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Vastgelopen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Geen Peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Gestopt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Torrent details"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Bekijk bestanden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Open bestand"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Stop de torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Stop"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Start de torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Start"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Verwijder de torrent van de actieve lijst, het .torrent bestand wordt verwijderd"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Ben je zeker dat je het bestand \\''{0}\\'' wil verwijderen (gedownloade data zullen niet verwijderd worden)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Weghalen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Verwijder het .torrent bestand en de gerelateerde data bestand(en)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Weet je zeker dat je de torrent \\''{0}\\'' en alle gedownloade data wilt verwijderen?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Verwijderen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Onbekend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Niet interessant (De peer heeft geen stukken die we nodig hebben)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Verstikt (De peer laat ons niet toe om stukken op te vragen)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Niet geïnteresseerd (We heben geen stukken die de peer nodig heeft)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Verstikt (We laten de peer niet toe om stukken op te vragen)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Details op de {0} tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Torrent Toevoegen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Van URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Voer de download-URL (alleen I2P), magneetlink, maggotlink of infohash van het torrentbestand in"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Torrent toevoegen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Datamap"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Voer de directory om de gegevens in op te slaan in (standaard {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Je kan ook .torrent bestanden kopieren naar: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Verwijderen van een .torrent zorgt dat deze stopt."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Creëer Torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Data om te seeden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Bestand of directory om te seeden (volledig pad of binnen de directory {0} )"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primair"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternatieven"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Creëer torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "geen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Data directory"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Bestanden leesbaar door iedereen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Indien aangevinkt hebben andere gebruikers toegang tot de gedownloade bestanden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Torrents automatisch starten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Indien aangevinkt, start toegevoegde torrents automatisch"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Thema"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Ververstijd"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Nooit"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Startup vertraging"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minuten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Paginagrootte"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Totale uploader limiet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "peers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Up bandbreedte limiet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Helft van beschikbare bandbreedte aanbevolen."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Bekijk of wijzig router bandbreedte"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Gebruik ook open trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Indien aangevinkt, kondig torrents ook aan bij de tracker uit het torrent bestand"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "DHT aanzetten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Gebruik DHT indien aangevinkt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Inkomende Instellingen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Uitgaande Instellingen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP host"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP poort"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "I2CP opties"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Configuratie opslaan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Naam"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "Website-URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Standaard"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Open"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Kondig URL aan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Toevoegen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Ongeldige magnet URL {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 hop"
 msgstr[1] "{0} hops"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 tunnel"
 msgstr[1] "{0} tunnels"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Torrentbestand"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Datalocatie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Infohash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Primaire tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Trackerlijst"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Opmerking"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Aangemaakt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Aangemaakt door"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnet link"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Privé-torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Voltooiing"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Resterend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Bestanden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Stukken"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Stukgrootte"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Directory"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioriteit"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Naar bovenliggende directory"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent niet gevonden?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Bestand niet gevonden in torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "voltooid"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "resterend"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Hoog"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normaal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Overslaan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Stel alle in als hoog"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Stel alle in als normaal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Alle overslaan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Prioriteiten opslaan"
diff --git a/apps/i2psnark/locale/messages_pl.po b/apps/i2psnark/locale/messages_pl.po
index c4ef204ee60e1eb40d022d754d25808077252d18..3a67840540ab9dd9eabe24ea8bf0bcb53c9e7b65 100644
--- a/apps/i2psnark/locale/messages_pl.po
+++ b/apps/i2psnark/locale/messages_pl.po
@@ -11,241 +11,242 @@
 # polacco <polacco@i2pmail.org>, 2012
 # seb, 2014
 # Smert i2p <Smert@safe-mail.net>, 2013
+# Taporpo Ne <taporpone@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-06 18:28+0000\n"
-"PO-Revision-Date: 2015-02-17 20:52+0000\n"
-"Last-Translator: polacco <polacco@i2pmail.org>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-09-03 19:18+0000\n"
+"Last-Translator: Taporpo Ne <taporpone@gmail.com>\n"
+"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pl\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr "Nie ma więcej uruchomionych torrentów."
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Zamknięto tunel I2P."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Ograniczenie liczby uploaderów zmieniono do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Minimalny całkowity limit uploadera: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Ograniczenie pasma wyjściowego zmieniono na: {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Minimalne pasmo wyjściowe to: {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Opóźnienie uruchamiania zmieniono na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Czas odświerzania zmieniony na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Odświeżanie wyłączone"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Rozmiar strony zmieniony do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Katalog danych musi być pełną ścieżką"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Katalog danych nie istnieje"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "To nie jest katalog"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Nieczytelne"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Katalog danych zmieniony do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Zmiany dotyczące I2CP i tuneli będą wprowadzone po zatrzymaniu wszystkich torrentów."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Opcje I2CP zmienione na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Rozłączanie starych celów I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Ustawienia I2CP zmienione do: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Nie można połączyć się z nowymi ustawieniami, powrót do starych ustawień I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Nie można się połączyć ze starymi ustawieniami!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Ponowne podłączanie do nowych celów I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "Nasłuch I2CP zrestartowany dla \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Nowe pliki będą publicznie dostępne"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Nowe pliki nie będą publicznie dostępne"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "WÅ‚Ä…czono automatyczne uruchamianie"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Wyłączono automatyczne uruchamianie"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "WÅ‚Ä…czono otwarte trackery - wymagane ponowne uruchomienie torrenta."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Wyłączono otwarte trackery - wymagane ponowne uruchomienie torrenta."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT włączone."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT wyłączone."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Zmiana DHT wymaga zamknięcia tunelu i jego ponownego otwarcia"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "Załadowano temat {0}. Przejdź do strony głównej i2psnark, by zobaczyć."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Ustawienia niezmienione."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Lista otwartych trackerów została zmieniona – wymagane ponowne uruchomienie torrenta."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Lista prywatnych trackerów została zmieniona – dotyczy tylko nowo utworzonych torrentów."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Nie można zapisać konfiguracji do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Łączenie z I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Nie można się połączyć z I2P, sprawdź swoje ustawienia I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Błąd: Nie można dodać torrenta {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Nie można otworzyć \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent o tym hashu jest już uruchomiony: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "BŁĄD – brak trackerów w prywatnym torrencie \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Uwaga – Nie ma trackerów I2P w \"{0}\", zostanie to zameldowane tylko do otwartych trackerów i DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Uwaga – Brak trackerów I2P w \"{0}\", a otwarte trackery są wyłączone. Torrent będzie działał wyłącznie w oparciu o DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -253,34 +254,34 @@ msgid ""
 "torrent."
 msgstr "Uwaga – Brak trackerów I2P w \"{0}\". Otwarte trackery i DHT również są wyłączone. Należy włączyć otwarte trackery lub DHT przed rozpoczęciem torrenta."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent w \"{0}\" jest niepoprawny"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "BŁĄD – Brak pamięci, nie można utworzyć pliku torrent z {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent dodany i uruchomiony: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent dodany: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Pobieranie: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -288,132 +289,132 @@ msgid ""
 "DHT."
 msgstr "Otwarte trackery są wyłączone i nie mamy żadnych peerów DHT. Pobranie z {0} może się nie udać, dopóki nie uruchomisz innego torrenta, włączysz otwarte trackery lub włączysz DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Dodawanie {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Pobieranie już zostało uruchomione: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Nie udało się skopiować pliku torrent do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Za dużo plików w \"{0}\" ({1}), usuwanie go!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrent \"{0}\" nie może się kończyć w \".torrent\", usuwanie go!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "W torrencie \"{0}\" nie ma piece'ów, usuwanie go!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Za dużo piece''ów w \"{0}\" (limit to {1}), usuwanie go!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Za duże piece''y w torrencie \"{0}\" ({1}B), usuwanie go."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Granica to {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrent \"{0}\" nie zawiera danych, usuwanie!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrenty większe niż {0}B nie są jeszcze wspierane, usunięcie \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Błąd: nie można usunąć torrenta {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent zatrzymany: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent usunięty: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Dodawanie torrentów w {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Limit transferu połączeń wychodzcych to {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Pobieranie ukończone: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo otrzymane dla {0} "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Uruchamianie torrenta: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "BÅ‚Ä…d w torrencie {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Nie można podłączyć się do I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Otwieranie tunelu I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Otwieranie tunelu I2P i uruchamianie wszystkich torrentów."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Zatrzymywanie wszystkich torrentów i zamykanie tunelu I2P."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Zamknięcie tunelu I2P po powiadomieniu trackerów."
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:244
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Brak prawidłowych trackerów dla {0} – włączyć otwarte trackery lub DHT?"
@@ -461,14 +462,14 @@ msgstr "Torrent pobrany z {0} jest niepoprawny"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Ustawienia"
 
@@ -501,135 +502,135 @@ msgid "clear messages"
 msgstr "wyczyść komunikaty"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Stan"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Sortuj wg {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Ukryj peery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Pokaż peery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Rodzaj pliku"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "Pozostało"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Szacowany pozostały czas"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Pobrano"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Rozmiar"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Współczynnik wysyłania (ratio)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Wysłano"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "↓"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Prędkość pobierania"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "↑"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Prędkość wysyłania"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Zatrzymaj wszystkie torrenty i tunel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Zatrzymaj wszystkie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Uruchom wszystkie zatrzymane torrenty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Uruchom wszystkie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Uruchom wszystkie torrenty i tunel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Nie załadowano torrentów."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Łącznie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
@@ -637,7 +638,7 @@ msgstr[0] "{0} torrent"
 msgstr[1] "{0} torrenty"
 msgstr[2] "{0} torrentów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
@@ -645,7 +646,7 @@ msgstr[0] "{0} podłączony peer"
 msgstr[1] "{0} podłączone peery"
 msgstr[2] "{0} podłączonych peerów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
@@ -653,203 +654,207 @@ msgstr[0] "{0} peer DHT"
 msgstr[1] "{0} peery DHT"
 msgstr[2] "{0} peerów DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "Cel"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Pierwsza"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Pierwsza strona"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Poprzednia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Poprzednia strona"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Następna"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Następna strona"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Ostatnia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Ostatnia strona"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "Katalog nie może zostać utworzony"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "Nie można dodać torrenta {0} wewnątrz innego torrenta {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Nieprawidłowy URL: musi zaczynać się od \"http://\", \"{0}\" lub \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Odnośnik Magnet usunięty: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Plik torrenta usunięto: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Pobrane usunięte: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Pliki z danymi usunięte: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Nie można usunąć pliku z danymi: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Katalog nie może być usunięty: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Usunięto katalog: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "Nie można dodać torrent kończącego się \".torrent\": {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Torrent z tą nazwą już jest uruchomiony: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "Nie można dodać torrenta zawierającego katalog I2P: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "Nie można dodać torrenta {0} zawierającego inny torrent {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Błąd – Nie można dodać alternatywnych trackerów bez głównego trackera"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Błąd – Nie można mieszać prywatnych i publicznych trackerów w torrencie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Utworzono torrent dla \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Wiele trackerów w I2P wymaga zarejestrowania torrenta przed seedowaniem – proszę, zrób tak przed uruchomieniem \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "BÅ‚Ä…d podczas tworzenia torrenta dla: \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Nie można utworzyć torrenta dla nieistniejących danych: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Błąd przy tworzeniu torrenta – musisz podać plik lub katalog"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Usuń zaznaczone"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Zapisz ustawienia trackerów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Usunięto"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Dodaj tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Podaj prawidłową nazwę trackera i URL"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Przywróć domyślne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Przywrócono domyślne trackery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Sprawdzanie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Alokowanie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "BÅ‚Ä…d trackera"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
@@ -857,366 +862,366 @@ msgstr[0] "{0} peer"
 msgstr[1] "{0} peery"
 msgstr[2] "{0} peerów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Uruchamianie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Seedowanie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Zakończono"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Utknięto"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Brak peerów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Zatrzymany"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Szczegóły torrenta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Zobacz pliki"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Otwórz plik"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Zatrzymaj torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Zatrzymaj"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Uruchom torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Uruchom"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Usuń torrent z aktywnej listy, usuwając plik .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Czy jesteś pewnien, że chcesz usunąć plik \\''{0}\\'' (pobrane dane nie będą usunięte) ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Usuń"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Usuń plik .torrent i związane z nim pliki z danymi"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Czy na pewno chcesz usunąć plik \\''{0}.torrent\\'' oraz pobrane dane?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Usuń"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Nieznany"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Uninteresting (peer nie ma piece'ów, które potrzebujemy)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Choked (peer nie pozwala nam na prośbę o piece)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Uninterested (nie mamy piece'ów, których peer potrzebuje)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Choking (nie pozwalamy peerowi na prośbę o piece)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Szczegóły na trackerze {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Dodaj torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Z adresu URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Wpisz adres URL pliku torrent (tylko I2P), Magnet link, link maggot lub info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Dodaj torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Katalog na pobrane dane"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Podaj katalog do zapisu danych (domyślnie: {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Możesz także skopiować pliki .torrent do: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Usunięcie pliku .torrent spowoduje jego zatrzymanie."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Utwórz torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Dane do seedowania"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Plik lub katalog do seedowania (pełna ścieżka lub katalog wewnątrz \"{0}\")"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Główne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternatywne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Utwórz torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "brak"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Katalog z danymi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Pliki dostępne dla wszystkich"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Jeśli zaznaczone, inni użytkownicy mogą mieć dostęp do pobranych plików"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Uruchamiaj automatycznie torrenty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Jeśli zaznaczone – automatycznie uruchamiaj dodane torrenty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Motyw"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Czas odświerzania"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Nigdy"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Opóźnienie uruchomienia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minuty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Rozmiar strony"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrenty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Całkowity limit uploaderów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "peery"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Ograniczenie pasma wyjściowego"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Zalecana połowa dostępnego pasma."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Zobacz lub zmień pasmo węzła"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Używaj również otwartych trackerów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Jeśli zaznaczone, zgłaszaj torrenty do otwartych trackerów, jak również do trackerów podanych w pliku torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "WÅ‚Ä…cz DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Jeśli zaznaczone, używa DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Tunele wejściowe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Tunele wyjściowe"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Adres I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Port I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Parametry I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Zapisz ustawienia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Nazwa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL strony www"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Standardowy"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Otwarty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Prywatny"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "URL rozgłaszania"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Dodaj"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Nieprawidłowy link magnet {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
@@ -1224,7 +1229,7 @@ msgstr[0] "{0} skok"
 msgstr[1] "{0} skoki"
 msgstr[2] "{0} skoków"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
@@ -1232,119 +1237,119 @@ msgstr[0] "{0} tunel"
 msgstr[1] "{0} tunele"
 msgstr[2] "{0} tuneli"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Plik torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Położenie danych"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Główny Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Lista Trackerów"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Komentarz"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Utworzony"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Utworzony przez"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Link magnet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Prywatny torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Zakończono"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Pozostało"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Pliki"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Części"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Rozmiar części"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Katalog"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Priorytet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Do katalogu nadrzędnego"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent nie znaleziony?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Plik nie znaleziony w torrencie?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "zakończono"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "pozostało"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Wysoki"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normalny"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Pomiń"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Ustaw wszystkie na wysoki"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Ustaw wszystkie na normalny"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Pomiń wszystkie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Zapisz priorytety"
diff --git a/apps/i2psnark/locale/messages_pt.po b/apps/i2psnark/locale/messages_pt.po
index b116a00d75f11023103c272f42279547b9dc2398..5cd2d6c44f439a323105fce498eddad3f2d24037 100644
--- a/apps/i2psnark/locale/messages_pt.po
+++ b/apps/i2psnark/locale/messages_pt.po
@@ -18,8 +18,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/pt/)\n"
 "MIME-Version: 1.0\n"
@@ -28,227 +28,227 @@ msgstr ""
 "Language: pt\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Túnel I2P fechado"
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Limite total de uploaders alterado para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Limite mínimo de uploaders alterado para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Largura de banda para a envio alterada para {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Largura de banda mínima para envio é {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Demora na inicialização alterada para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Tempo de actualização alterado para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Actualização desactivada"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Tamanho de pagina alterado para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Diretório de dados deve ter um caminho absoluto"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Diretório de dados não existe"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Não é um diretório"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Ilegível"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Diretório de dados alterado para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Mudanças do I2CP e do túnel farão efeito após interromper todos os torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "opções de I2cp alteradas para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Desconectando destinação anterior do I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Preferências do I2CP alteradas para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Conectar-se não foi posível com as novas preferências I2CP, utilizarei as anteriores."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Impossível se conectar usando as preferências anteriores!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Conectado com a nova Destinação I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "Conexão I2CP re-estabelecida para \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Novos ficheiros serão lidos pelo publico"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Novos ficheiros não serão lidos pelo publico"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Ativado o iniciar automáticamente"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Desativado o iniciar automáticamente"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Uso de rastreadores abertos ativado - Para ter efeito é necesário reiniciar os torrentes."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Uso dos rastreadores abertos desativado - Para ter efeito é necesário reiniciar os torrentes."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "Habilitar DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "Desabilitar DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Mudança no DHT requer fechamento e reabertura do túnel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "Tema {0} foi carregado. Volte no menú principal para vê-lo."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Configuração não mudada."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Listado de rastreadores abertos mudado - Para ter efeito é necesário reiniciar os torrentes."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Lista de rastreadores privados alterada - somente afetará os novos torrentes criados."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Não se pode guardar a configuração em {0}."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Conectando com I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Erro ao se conectar com I2P - Verifique a sua configuração I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Erro: Não se pode adicionar o torrente {0}."
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Não pode se abrir \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "torrente com este info hash já em marcha: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "ERRO - Não há tracker I2P no torrent privado \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", o anúncio será feito apenas por rastreadores I2P abertos e DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", e rastreadores I2P abertos estão desabilitados. O anúncio será feito apenas por DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -256,34 +256,34 @@ msgid ""
 "torrent."
 msgstr "Aviso - Nenhum rastreador I2P em \"{0}\", e DHT e rastreadores abertos estão desabilitados. Rastreadores abertos ou DHT devem ser habilitados antes de começar o torrente."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "O arquivo .torrent em \"{0}\" não é válido."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "ERRO - Não ha espaço suficente, não se pode crear um torrente desde {0}."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "torrente adicionado e iniciado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "torrente adicionado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Buscando {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -291,132 +291,132 @@ msgid ""
 "DHT."
 msgstr "Rastreadores abertos estão desabilitados e não há participantes DHT. Descarregamento de {0} pode não prosseguir enquanto outra torrente não for iniciada,  rastreadores abertos forem habilitados ou DHT habilitado."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Adicionando {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "arquivo já descarregando: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Não se pode copiar o torrente para {0}."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Ha arquivos demais no  \"{0}\", se apagará ({1}). "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "O arquivo de dados do torrente \"{0}\" não pode terminar em \".torrent' e será apagado."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Não ha peças no \"{0}\", se apagará."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Ha peças demais no  \"{0}\" e o limite é {1}. Se apagarão."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Peças no \"{0}\" são grandes demais ({1}B). Se apagarão."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "O limite são \"{0}\"Bytes"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "O torrente \"{0}\" não contem dados e será apagado."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "torrentes maiores que \"{0}\" Bytes ainda não funcionam, se apagará \"{1}\"."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Erro: Não se pode quitar o torrente \"{0}\"."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "torrente detido: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "torrente quitado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Os torrentes serão adicionados em {0} ..."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Limite de transmissão de dados é {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Finalizada a descarga de \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo recibido para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Iniciando o torrente {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Erro no torrente {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Impossível de se conectar com I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Abrindo o túnel I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Abrendo o túnel I2P e iniciando os torrentes ..."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Detindo todos os torrentes e fechando o túnel I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Fechando túnel I2P após notificar os rastreadores."
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Nenhum rastreador válido para {0} - habilitar rastreadores abertos ou DHT?"
@@ -464,14 +464,14 @@ msgstr "torrente em {0} não foi válido"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Preferências"
 
@@ -504,844 +504,848 @@ msgid "clear messages"
 msgstr "limpar mensagens"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Estado"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "ocultar parceiros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "mostrar parceiros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "Tempo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Tempo que falta para completar"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "Baixado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Descarregado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Tamanho"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "Subido"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Subido"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "Taxa de recepção"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Taxa de descarga"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "Taxa de transmissão"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Taxa de subida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Deter todos os torrentes e o túnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Deter tudos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Iniciar todos os torrents interrompidos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Arrancar todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Iniciar todos os torrentes e o túnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Não carregado nenhum torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Total"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrente"
 msgstr[1] "{0} torrentes"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 parceiro conectado"
 msgstr[1] "{0} parceiros conectados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 parceiros DHT"
 msgstr[1] "{0} parceiros DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Prim."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Primeira página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Ant."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Página anterior"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Próx."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Próxima página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Últ."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Última página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Endereço não válido - tem que começar com \"http://\", \"{0}\", ou \"{1}\"."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Apagada o magnet: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Apagado o arquivo torrente: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Download excluído: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Apagado o arquivo de dados: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Não se pode apagar o arquivo de dados: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Pasta não pôde ser excluída: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Pasta excluída: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Erro - Impossível incluir rastreadores alternativos sem o rastreador primário"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Erro - Impossível misturar rastreadores públicos e privados num torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "torrente criado para \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Muitos rastreadores no I2P exigem que você registre novos torrentes antes de poder semeá-los. Por favor, faça isto antes de iniciar \"{0}\"!"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Erro ao criar o torrente \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Não se pode criar um torrente para dados que não existam: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Erro ao criar o torrente - Tens que especificar um arquivo ou uma pasta."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Excluir selecionado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Salvar configurações do rastreador"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Excluído"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Adicionar tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Insira um nome válido para o tracker e URLs"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Voltar aos padrões"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Voltar aos rastreadores padrão"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Verificando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Reservando espaço"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Erro do rastreador"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 parceiro"
 msgstr[1] "{0} parceiros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Iniciando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "semeando"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "bem"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "estancado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "sem parceiros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "detenido"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Detalhes do torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "mostrar arquivos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "abrir arquivo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Deter o torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Deter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Iniciar o torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Iniciar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Retire o torrente da lista ativa, apagando o arquivo .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Tem a certeza que deseja apagar o ficheiro \\\"{0}\\\" (dados transferidos não serão apagados) ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Quitar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Apagar o arquivo torrente e o(s) arquivo(s) de dados pertenecentes"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Está seguro de que quer apagar o arquivo torrente \\''{0}\\'' e todos os dados descarregados deste torrente?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Apagar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "desconhecido"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Semeador"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "não interessante (O parceiro não tem peças que precisamos.)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "sufocado (De momento o parceiro não está nos permitindo pedir mais peças.c)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "desinteressado (Não temos as peças que o parceiro quer.)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "sufocando (De momento não estamos permitindo que os parceiros peçam mais peças)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detalhes no rastreador {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Adicionar um torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "URL fonte:"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Digite a URL para download do arquivo torrent (só I2P), ou magnet link, maggo link, ou ainda o seu hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Adicionar torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Também pode copiar arquivos torrentes a {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "A remoção de um arquivo .torrent fará com que ele pare."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Criar um torrente"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Dados para semear"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Rastreadores"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primário"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternativos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Criar torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "nenhum"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Pasta de dados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Ficheiro legível por todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Se marcado, outros usuários poderão acessar os ficheiros descarregados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "se marcado, os torrentes adicionados se iniciarão automaticamente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Tema"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Tempo de actualização"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Nunca"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Demora do arranque"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minutos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Tamanho da página"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Limite global de subidores"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "parceiros"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Limite de largura de banda para a subida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Se recomenda a metade da largura de banda disponível."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "mostrar e mudar as preferências da largura de banda do roteador"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "usar também rastreadores abertos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Se marcado, anunciar os torrentes aos rastreadores abertos, assim como aos rastreadores listados no arquivo torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Habilitar DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Se marcado, usar DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Preferências de entrada"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Preferências de saida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Anfitrião I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Porto I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Opções I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Guardar configuração"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Nome"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL do Website"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "abrir"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "URL para anúncio"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Adicionar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "URL magnet {0} não válida"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 salto"
 msgstr[1] "{0} saltos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 túnel"
 msgstr[1] "{0} túneles"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Arquivo torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Rastreador Primário"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Lista de Rastreadores"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Commentar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Criado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Criado por"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "URL magnet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Torrente privado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Finalização"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Restantes"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Arquivos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Peças"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Tamanho das peças"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Pasta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioridade"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Subir uma herarquia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Não achei o arquivo torrente?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Arquivo não achado no torrente?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "restantes"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "alta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Ignorar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Guardar prioridades"
diff --git a/apps/i2psnark/locale/messages_pt_bR.po b/apps/i2psnark/locale/messages_pt_bR.po
index 7f9f09ce3f83ba0ed29b35e5cfb66f5b4be6667b..251188047ec25809c7e5985c3ef42b6b318b6cd6 100644
--- a/apps/i2psnark/locale/messages_pt_bR.po
+++ b/apps/i2psnark/locale/messages_pt_bR.po
@@ -10,9 +10,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-04-05 13:44+0000\n"
-"Last-Translator: blueboy\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -25,222 +25,222 @@ msgid "No more torrents running."
 msgstr ""
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Túnel I2P fechado"
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Limite de uploaders totais alterada para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Mínimo de uploaders totais alterada para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Limite de Up BW alterada para {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "O limite de mínimo de banda larga é {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Atraso de inicialização alterada para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Alterações em túneis e I2C entrarão em vigor depois de parar todos torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Desconectando destinação do velho I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Configurações de I2CP alteradas para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Não é possível conectar com as novas configurações. Revertendo para as prévias configurações de I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Não é possível conectar com as novas configurações!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Reconectado à nova destinação de I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "Auditor I2CP recomeçadas a \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Autocomeço permitido"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Autocomeço não permitido"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Trackers abertos permitidos - reinício de torrents é preciso para entrar em vigor"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Trackers abertos não permitidos - reinício de torrents é preciso para entrar em vigor"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "Tema {0} carregado, retornar para a página principal de i2psnark para visualizar."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Configuração sem alteração"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Lista de trackers abertos alterada - reinício de torrents é preciso para entrar em vigor"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Não é possivel salvar configurações para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Conectando a I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Erro ao conectar a I2P - verifique as configurações de I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Erro: não é possível adicionar o torrent {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Não é possível abrir \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "O torrent com este info has já está sendo executado: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -248,34 +248,34 @@ msgid ""
 "torrent."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "O torrent em \"{0}\" é inválido"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent adicionado e começado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent adicionado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Buscando {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -283,128 +283,128 @@ msgid ""
 "DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Adicionando {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Falha ao copiar arquivo de torrent de {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Arquivos em excesso em \"{0}\" ({1}), deletando!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Arquivo de torrent \"{0}\" não pode terminar em \".torrent\", deletando!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Sem peças em \"{0}\", deletando!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Peças em excesso em \"{0}\". O limite é {1}, deletando!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Peças são muito grande em \"{0}\" ({1}B), deletando."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "O limite é {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrents maiores do que {0}B não são suportados ainda, deletando \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Erro: não foi possível remover o torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent parado: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent removido: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Adicionando torrents em {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Download terminado: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo recebido para {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Iniciando torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Incapaz de conectar ao I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Abrindo o túnel I2P e começando todos os torrents."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Parando todos os torrents e fechando o túnel I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr ""
 
@@ -456,14 +456,14 @@ msgstr ""
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnar"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Configuração"
 
@@ -496,844 +496,848 @@ msgid "clear messages"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Status"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Ocultar Pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Mostrar Pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "ETA"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Tempo restante estimado"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Baixado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Uploaded"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Taxa de down"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Taxad de up"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Parar todos os torrents e o túnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Parar todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Começar todos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Começar todos os torrents e o túnel I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Nenhum torrent carregado."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totais"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrents"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 peer conectado"
 msgstr[1] "{0} pares conectados"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "URL inválido: deve começar com \"http://\", \"{0}\", ou \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet deletado: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Arquivo de torrent deletado: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Arquivo de data deletado: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Não foi possível apagar o arquivo de data: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent criado para \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Muitos I2P trackers requerem o registro de torrents antes de seeding - por favor, faça isso antes de começar \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Erro ao criar torrent para \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Não foi possível criar um torrent para a informação inexistente: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Erro ao criar torrent - é preciso um arquiso ou diretório"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr ""
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Erro de tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 peer"
 msgstr[1] "{0} pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Seeding"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Completo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Estagnado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Sem pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Parad"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Detalhes do torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Ver arquivos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Abrir arquivos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Parar o torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Começar o torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Começar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Remover o torrent da lista de ativos, deletando o arquivo .torrent"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Remover"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Deletar o arquivo ;torrent e associar data file(s)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Tem certeza que quer remover o torrent \\''{0}\\'' e todas as informaçoes baixadas?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Deletar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "desconhecido"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Desinteressante (O par não tem partes que precisemos)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Engasgado (O par não está nos permitindo solicitar partes)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Desinteressado (Não temos quaisquer partes que o par precise)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Engasgando (O par está impossibilitado de solicitar partes)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detalhes em tracker {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Adicionar Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Do URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Acidionar torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Pode também copiar arquivos .torrents de: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "A remoção de um .torrent parará a mesma"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Criar Torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Arquivo para seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Criar torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Diretório de arquivo"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Automaticamente começar torrents adicionados se verificado"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Tema"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Atraso de inicialização"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minutos"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Limite total do uploader"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "pares"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Up limite de banda larga"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Abrir"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr ""
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr ""
diff --git a/apps/i2psnark/locale/messages_ro.po b/apps/i2psnark/locale/messages_ro.po
index 5259dc9c8f03e8dd26419dd9b477c4da14270d51..d0575dd0fff08618815c6403efc4e7c4863972da 100644
--- a/apps/i2psnark/locale/messages_ro.po
+++ b/apps/i2psnark/locale/messages_ro.po
@@ -4,236 +4,243 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# Di N., 2015
+# titus <titus0818@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-01 20:06+0000\n"
-"PO-Revision-Date: 2013-12-05 15:04+0000\n"
-"Last-Translator: polearnik <polearnik@mail.ru>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/I2P/language/ro/)\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-21 13:47+0000\n"
+"Last-Translator: Di N.\n"
+"Language-Team: Romanian (http://www.transifex.com/otf/I2P/language/ro/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ro\n"
 "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
-#: ../java/src/org/klomp/snark/SnarkManager.java:1938
-#: ../java/src/org/klomp/snark/SnarkManager.java:1949
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
+msgid "No more torrents running."
+msgstr "Nu sunt torrente care rulează"
+
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Tunel I2P închis."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1644
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:504
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Limita totala de incarcare schimbat la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:506
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Limita totala minimă de incarcare este {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:518
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Limita de incarcare BW schimbat la {0} Kbps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:520
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Limita de lățime de bandă minima la incarcarea este {0} Kbps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:532
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Întârziere de pornire schimbat la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:543
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Actualizarea timpului schimbat la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:545
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Refresh dezactivat"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:561
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Schimbat dimensiunea paginii la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:570
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Dosarul de data de lucru trebuie să fie o cale absolută"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:572
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Dosarul de date nu există"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:574
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Nu e un dosar"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:576
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "necitibil"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:581
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Dosarul de date s-a schimbat la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:636
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "I2CP și tunel modificările vor intra în vigoare după oprirea tuturor torrentele"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:640
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Opțiuni I2CP schimbat la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:646
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Deconectarea destinației vechi I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:648
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Opțiuni I2CP schimbat la {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:653
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Imposibil de a se conecta cu noile setări, revenirea la vechile setări I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:657
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Nu pot să se reconectez cu setările vechi!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:659
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Reconectat la destinație noua I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:666
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP ascultător repornit pentru \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:680
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Fișiere noi vor putea fi citite public"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:682
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Fișiere noi nu vor putea fi citite public"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:689
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Activeaza autopornirea"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:691
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Dezactivează autopornirea"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:697
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Trackere deschise activat - repornirea torrentui este necesara să aibă efect."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:699
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Trackere deschise dezactivat - repornirea torrentui este necesara să aibă efect."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:706
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT activat."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:708
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT dezactivat."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:710
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Schimbare DHT necesită oprirea tunel și redeschiderea lui"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:717
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} temă încărcata, a reveni la pagina principală i2psnark pentru a vizualiza."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:727
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Configuraţia neschimbată"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:759
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Trackere deschise schimbat - repornirea torrentui este necesara să aibă efect."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:769
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Lista trackerilor private schimbat - afectează doar nou-create torrente."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Imposibil de a salva configurarea {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Conectarea la I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:896
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Eroare la conectarea la I2P - verificați setările I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:905
-#: ../java/src/org/klomp/snark/SnarkManager.java:1681
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Eroare: Nu sa putut adăuga torentul {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Nu se poate deschide \"{0}\"."
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:946
-#: ../java/src/org/klomp/snark/SnarkManager.java:1047
-#: ../java/src/org/klomp/snark/SnarkManager.java:1129
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:159
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent cu aceste informații hash este deja pornit: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:952
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "EROARE - Nu sunt trackere I2P in torrent privat \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:954
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Avertisment - Nu sunt trackere I2P în \"{0}\", va anunța numai la I2P trackers deschise și DHT ."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:957
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Avertisment - Nu sunt trackere I2P în \"{0}\", și trackere deschise sunt dezactivate, se va anunța numai prin DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:959
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -241,34 +248,34 @@ msgid ""
 "torrent."
 msgstr "Avertisment - Nu sunt trackere I2P în \"{0}\", și DHT și trackere deschise sunt dezactivate,  ar trebui să permiteti trackere deschise sau DHT înainte de a începe torrent."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:981
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent în \"{0}\" este incorect"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:988
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:183
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "EROARE - Out de memorie, nu se pot crea torrent din {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1000
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent adăugat și pornit: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1002
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent adăugat: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1058
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:87
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Preluarea {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1064
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -276,311 +283,348 @@ msgid ""
 "DHT."
 msgstr "Trackere deschise sunt dezactivate și nu avem colegii DHT. Descarcarea din{0} nu poate reuși până când veți începe un alt torrent, permite trackere deschise, sau permite DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1068
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Adăugarea {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1100
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Descarcarea deja rulează: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1139
-#: ../java/src/org/klomp/snark/SnarkManager.java:1162
-#: ../java/src/org/klomp/snark/SnarkManager.java:1600
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr " Copierea fisieurului torent in  {0} a esuat"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1389
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Prea multe fișiere în \"{0}\" ({1}), ștergeti-le!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1391
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrent \"{0}\" nu se poate termina cu \". Torrent\", ștergeti!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1393
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Nu sunt piese din \"{0}\", ștergeti!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1395
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Prea multe piese în \"{0}\", limita este de {1}, ștergeti!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1397
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Piese sunt prea mari în \"{0}\" ({1} B), ștergeti."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1398
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Limita este de {0} B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1400
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrent \"{0}\" nu dispune de date, șterge-o!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1408
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrents mai mari de {0} B nu sunt acceptate încă, ștergerea \"{1}\"Torrents mai mari de {0} B nu sunt acceptate încă, ștergerea \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1424
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Eroare: Nu am putut șterge torentul {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1445
-#: ../java/src/org/klomp/snark/SnarkManager.java:1463
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent oprit: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1484
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent sters: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1492
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Adăugarea torrente în {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1523
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Limita de lățime de bandă la incarcarea este {0} Kbps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1545
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Descarcare finisata: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1596
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo primit pentru {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1597
-#: ../java/src/org/klomp/snark/SnarkManager.java:1826
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Pornirea torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1612
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Eroare pe torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1675
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Nu se poate stabili o conexiune la I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1825
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:124
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Deschiderea tunelului I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1849
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Deschiderea tunelului I2P și pornirea tuturor torrentelor."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1912
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Oprirea tuturor torrentelor și inchiderea tunelului I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1931
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Închiderea tunelului I2P după notificarea trackere."
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:234
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Nu sunt trackere valabile pentru {0} - permite opentrackers sau DHT?"
 
 #: ../java/src/org/klomp/snark/UpdateHandler.java:49
-#: ../java/src/org/klomp/snark/UpdateRunner.java:227
+#: ../java/src/org/klomp/snark/UpdateRunner.java:228
 msgid "Updating"
 msgstr "Actualizare"
 
-#: ../java/src/org/klomp/snark/UpdateRunner.java:114
+#: ../java/src/org/klomp/snark/UpdateRunner.java:115
 #, java-format
 msgid "Updating from {0}"
 msgstr "Actualizarea din {0}"
 
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:75
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:80
 #, java-format
 msgid "Download torrent file from {0}"
 msgstr "Descărca fișierul torrent de la {0}"
 
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:97
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:103
 #, java-format
 msgid "Torrent was not retrieved from {0}"
 msgstr "Torrent nu a fost preluat de la {0}"
 
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:150
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:157
 #, java-format
 msgid "Torrent fetched from {0}"
 msgstr "Torrent preluat de la {0}"
 
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:171
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:178
 #, java-format
 msgid "Torrent already running: {0}"
 msgstr "Torrent deja rulează: {0}"
 
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:173
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:180
 #, java-format
 msgid "Torrent already in the queue: {0}"
 msgstr "Torrent deja în coada de așteptare: {0}"
 
-#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:181
+#: ../java/src/org/klomp/snark/web/FetchAndAdd.java:191
 #, java-format
 msgid "Torrent at {0} was not valid"
 msgstr "Torrent la {0} nu a fost valid"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:254
-msgid "I2PSnark - Anonymous BitTorrent Client"
-msgstr "I2PSnark -  BitTorrent Client Anonim"
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
+msgid "I2PSnark"
+msgstr "I2PSnark"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:267
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
+msgid "Configuration"
+msgstr "Configurație"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:275
+msgid "Anonymous BitTorrent Client"
+msgstr "Client Bittorrent anonim"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:289
 msgid "Router is down"
 msgstr "Router-ul este deactivat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:306
 msgid "Torrents"
 msgstr "Torente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:288
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:298
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
-msgid "I2PSnark"
-msgstr "I2PSnark"
-
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:294
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:317
 msgid "Refresh page"
 msgstr "refresh pagina"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:302
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:326
 msgid "Forum"
 msgstr "Forum"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:315
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:341
 msgid "Click \"Add torrent\" button to fetch torrent"
 msgstr "Faceți clic pe \"Adauga torrent\" pentru a aduce torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:352
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:353
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:394
 msgid "clear messages"
 msgstr "stergerea mesajelor"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:405
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:407
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2440
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2442
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Stare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:418
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:420
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
+#, java-format
+msgid "Sort by {0}"
+msgstr "Sortează după {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Ascunde utilizatori"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:430
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:432
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Arată utilizatori"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:439
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:441
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-msgid "Estimated time remaining"
-msgstr "Estimare timp rămas"
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+msgid "File type"
+msgstr "Tip fișier"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:452
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "eta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:457
-msgid "Downloaded"
-msgstr "Descărcat"
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
+msgid "Estimated time remaining"
+msgstr "Estimare timp rămas"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:465
-msgid "Uploaded"
-msgstr "Încărcat"
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
+msgid "Downloaded"
+msgstr "Descărcat"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+msgid "Size"
+msgstr "Dimensiune"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:474
-msgid "Down Rate"
-msgstr "Rata de descarcare "
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
+msgid "Upload ratio"
+msgstr "Rată de încărcare"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
+msgid "Uploaded"
+msgstr "Încărcat"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:477
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "RX Rate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:483
-msgid "Up Rate"
-msgstr "Rata de incarcare "
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
+msgid "Down Rate"
+msgstr "Rata de descarcare "
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "TX Rate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:501
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
+msgid "Up Rate"
+msgstr "Rata de incarcare "
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Opreste toate torrentele și tunelul I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:503
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Oprește toate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Începeți toate torrentele oprite"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:531
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Pornește toate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Porneste toate torrentele și tunelul I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:555
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Niciun torent încărcat."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:561
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totaluri"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
@@ -588,7 +632,7 @@ msgstr[0] "1 torrent"
 msgstr[1] "{0} torrente"
 msgstr[2] "{0} torrentу"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
@@ -596,7 +640,7 @@ msgstr[0] "{0} utilizator conectat "
 msgstr[1] "{0} utilizatori conectati"
 msgstr[2] "{0} utilizatori conectati"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:575
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
@@ -604,174 +648,207 @@ msgstr[0] "1 partener DHT"
 msgstr[1] "{0} parteneri DHT"
 msgstr[2] "{0} parteneri DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "Dest"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Primul"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:611
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "P&rima pagină"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:622
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Prev"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:622
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Pagina anterioară"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Următorul"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:657
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Pagina următoare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Ultimul"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Ultima pagină"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:750
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
+msgid "Data directory cannot be created"
+msgstr "Directorul de date nu poate fi creat"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
+#, java-format
+msgid "Cannot add torrent {0} inside another torrent: {1}"
+msgstr "Nu se poate adăuga torrentul {0} în interiorul altui torrent: {1}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "URL incorect: trebuie să înceapă cu \"http://\", \"{0}\", sau \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:793
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet sters: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:801
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:829
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Fișier torrent șters: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Descarcă șterse: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:835
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Fișier data șters: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:837
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:848
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Fișier de date nu a putut fi șters: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:863
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:872
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Dosarul nu a putut fi sters {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:870
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Directorii șterse: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:942
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
+#, java-format
+msgid "Cannot add a torrent ending in \".torrent\": {0}"
+msgstr "Nu se poate adăuga un torrent terminat în \".torrent\": {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
+#, java-format
+msgid "Torrent with this name is already running: {0}"
+msgstr "Torrentul cu acest nume deja rulează: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
+#, java-format
+msgid "Cannot add a torrent including an I2P directory: {0}"
+msgstr "Nu se poate adăuga un torent ce include un director I2P: {0}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
+#, java-format
+msgid "Cannot add torrent {0} including another torrent: {1}"
+msgstr "Nu se poate adăuga torrent {0} ce include un alt torrent: {1}"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Eroare - Nu pot conține trackere alternative fără un tracker primar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:955
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Eroare - Nu se poate amesteca trackere publice și private într-un torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:975
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent creat pentru \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:977
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Multe trackere I2P cer să vă înregistrați torrentele noi înainte de seedat - vă rugăm să faceți acest lucru înainte de a începe \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:979
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Eroare la crearea unui torrent pentru \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:983
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Nu se poate crea un torrent pentru datele inexistente: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:986
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Eroare la crearea torrent - trebuie să introduceți un fișier sau director"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Șterge pe cel ales"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1017
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2032
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Salvați configurația tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Șters"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1063
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2030
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Adaugă tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1086
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1089
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Introduceți numele tracker valid și URL-uri"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "RestabileÅŸte implicitele"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1094
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Trackers implicite restaurate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1215
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1216
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Se verifică"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1218
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1219
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Alocare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Eroare tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1235
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1263
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1268
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1279
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1290
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1295
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
@@ -779,356 +856,366 @@ msgstr[0] "1 partener"
 msgstr[1] "{0} parteneri"
 msgstr[2] "{0} parteneri"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1243
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "ÃŽncepere"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1252
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Încărcare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1256
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1270
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2496
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Complet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1275
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1276
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1281
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1282
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1286
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1287
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1292
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1293
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "ÃŽntrerupt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1297
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1298
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1302
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Nu sunt utilizatori"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1304
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1305
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Oprit"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Detalii torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1367
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Vizualizare fișierilor"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1369
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Deschide fișier"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1411
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Oprește torentul"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1413
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Stop"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Pornește torentul"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1427
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Start"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1439
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Scoateți torrent din lista torentelor activi, ștergem fișierul torrent."
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1444
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Sigur doriți să ștergeți dosarul \\'' {0} \\'' (datele descărcate nu vor fi șterse)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1447
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Șterge"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Ștergeți fișierul torrent. Și fișier(e) de date asociat(e)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Sigur doriți să ștergeți torrent \\'' {0} \\'' și toate datele descărcate?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1467
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1997
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Șterge"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Necunoscut"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Neinteresante (partener nu are piese de care avem nevoie)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Înecat (partener nu ne permite să solicitam bucăți)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1559
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Neinteresat (Nu avem piese de care are nevoie partener)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "partenerSufocare (Noi nu permitem partenerului  solicitarea bucăților)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detalii la  tracker {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1633
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Adaugă torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Din URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1689
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Introduceți URL-ul de descarcare fișierilor torrent (I2P numai), link-ul magnet, maggot-link, sau info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Adaugă torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
+msgid "Data dir"
+msgstr "Dir date"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
+#, java-format
+msgid "Enter the directory to save the data in (default {0})"
+msgstr "Introdu directorul în care să se salveze datele (default {0})"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "De asemenea, puteți copia fișiere torrent la: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Stergerea .torrent va face ca acesta să se oprească."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Creează un torent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1725
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Date pentru seedare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1729
-msgid "File or directory to seed (must be within the specified path)"
-msgstr "Fișier sau director de seedare (trebuie să fie în calea specificată)"
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
+#, java-format
+msgid "File or directory to seed (full path or within the directory {0} )"
+msgstr "Fișier sau director de seedare (calea completă sau în director {0} )"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1975
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackere"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1733
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1735
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternativă"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1738
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Creează un torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1756
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "nici unul"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1789
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
-msgid "Configuration"
-msgstr "Configurație"
-
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Dosar cu date"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1797
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Fișiere lizibile de către toți"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Dacă este bifată, utilizatorii pot accesa fișierele descărcate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1805
-msgid "Auto start"
-msgstr "Start automat"
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
+msgid "Auto start torrents"
+msgstr "Pornește automat torrente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1809
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Dacă este bifată, începe automat torrentele care sunt adăugate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Teme"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1826
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Timp de reîmprospătare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1839
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Niciodată"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1845
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "întârziere de pornire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1847
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minute"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1851
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Mărimea paginii"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1853
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "Torente"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1877
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Limită totală de încărcare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1880
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "Parteneri"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1884
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "limita de incarcare  de lățime de bandă"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1887
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Jumătate lățime de bandă disponibilă este recomandat."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1889
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Vizualizeaza sau modifica lățime de bandă router"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1893
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Utilizați trackere deschise, de asemenea,"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1897
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Dacă este bifată, anunta torrente pentru a urmări trackere deschise , precum și trackere listate în fișierul torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1901
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Activează DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1905
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Dacă este bifată, utilizați DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1921
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Setări de intrare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1927
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Setări de ieșire"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1935
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Portul I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1940
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Portul I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1955
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Opțiuni I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1960
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Salvare configurări"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Nume"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL website"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1984
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
+msgid "Standard"
+msgstr "Standard"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Deschis"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1986
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1988
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "URL de anuntare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2022
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Adaugă"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "URL-ul magnet invalid {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2070
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
@@ -1136,7 +1223,7 @@ msgstr[0] "1 hop"
 msgstr[1] "{0} hop-uri"
 msgstr[2] "{0} hop-uri"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
@@ -1144,106 +1231,119 @@ msgstr[0] "1 tunel"
 msgstr[1] "{0} tunele"
 msgstr[2] "{0} tunele"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2278
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Fișier torent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2291
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
+msgid "Data location"
+msgstr "Locaţie date"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
+msgid "Info hash"
+msgstr "Informație index"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Tracker primar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2300
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Lista Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2324
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Comentariu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Creat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2343
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Creat de"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2353
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Legătură Magnet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2360
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Torrent privat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2370
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436
-msgid "Size"
-msgstr "Dimensiune"
-
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2377
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Completare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2387
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Rămas"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Fișiere"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2399
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Piese:"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2403
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Dimensiune piesei"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2426
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2430
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Dosar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2449
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioritate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2455
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Spre dosarul de nivel superior"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2485
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent nu a fost găsit?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Fișierul nu a fost găsit în torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2506
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "încheiat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2507
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "Rămas"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Ridicat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2561
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2566
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Omitere"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2575
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
+msgid "Set all high"
+msgstr "Configurează toate ca înalte"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
+msgid "Set all normal"
+msgstr "Configurează toate ca normal"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
+msgid "Skip all"
+msgstr "Omite tot"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Salvați priorități"
diff --git a/apps/i2psnark/locale/messages_ru.po b/apps/i2psnark/locale/messages_ru.po
index d6078a74a08e4e88a86bc3f844c8af63b30ff294..92a8316792023fe865e3522f0479a17869498bc0 100644
--- a/apps/i2psnark/locale/messages_ru.po
+++ b/apps/i2psnark/locale/messages_ru.po
@@ -11,245 +11,245 @@
 # Eugene, 2013
 # foo <foo@bar>, 2009
 # mama__1 <inactive+mama__1@transifex.com>, 2013
-# Roman A. <transifex@basicxp.ru>, 2013
+# Foster Snowhill, 2013
 # sr4d <sr4d@bitmessage.ch>, 2014
-# Roman A. <transifex@basicxp.ru>, 2013
+# Foster Snowhill, 2013
 # yume, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-27 16:05+0000\n"
-"Last-Translator: yume\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: ru_RU\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr "Нет запущенных торрентов."
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Соединение с I2P закрыто."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Новое значение лимита количества слотов отдачи: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Минимально допустимое значение для количества слотов: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Новое значение лимита скорости отдачи: {0} КБ/с"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Минимально допустимое значение для лимита скорости отдачи: {0} КБ/с"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Задержка запуска изменена на {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Время обновления изменено на {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Обновление отключено"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Размер страницы изменён на {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Директория данных должна быть абсолютным путём"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Директория данных не существует"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Не директория"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Нечитаемо"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Директория данных изменена на {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Изменения настроек I2CP и туннелей вступят в силу после остановки всех торрентов."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Параметры I2CP изменены на {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Разрываем старое I2CP соединение"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Новые параметры I2CP: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Не удалось соединиться с использованием новых настроек I2CP, возвращаемся к старым настройкам"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Не удалось пересоединиться с использованием старых настроек I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Пересоединились по новому адресу I2CP"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP-приёмник перезапущен для \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Новые файлы будут доступны на чтение публично"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Новые файлы не будут доступны на чтение публично"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Автостарт включен"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Автостарт выключен"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Включено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Отключено использование открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT включено."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT выключено."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Изменение DHT требует повторного открытия туннеля"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} тема загружена, вернитесь на основную страницу i2psnark для просмотра."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Настройки не изменились."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Изменен список открытых трекеров. Требуется перезапуск торрента, чтобы изменения вступили в силу."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Список частных трекеров изменился - влияет только на заново созданные торренты."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Не удалось сохранить настройки в {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Устанавливается соединение с I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Ошибка соединения с I2P, проверьте настройки I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Ошибка: Не удалось добавить торрент {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Не удалось открыть \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Торрент с таким info hash уже запущен: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "ОШИБКА - нет I2P-трекеров в частном торренте \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Предупреждение - Нет I2P трекеров в \"{0}\", анонсирование будет выполняться только на открытых трекерах и в DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Предупреждение - Нет I2P трекеров в \"{0}\" и использование открытых трекеров запрещено, анонсирование будет выполняться только в DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -257,34 +257,34 @@ msgid ""
 "torrent."
 msgstr "Предупреждение - Нет I2P трекеров в \"{0}\" и использование открытых трекеров и DHT запрещено. Следует разрешить их использование перед запуском торрента."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Торрент в \"{0}\" некорректен"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "ОШИБКА - нехватка памяти, невозможно создать торрент из {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Торрент добавлен и запущен: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Торрент добавлен: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Получение торрента: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -292,132 +292,132 @@ msgid ""
 "DHT."
 msgstr "Использование открытых трекеров запрещено и нет DHT-пиров. Передача {0} не может быть завершена. Запустите другой торрент или разрешите использование открытых трекеров и/или DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Добавление {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Закачка уже запущена: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Не удалось скопировать торрент в: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Слишком много файлов в торренте \"{0}\" ({1}), удаляем его!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Торрент \"{0}\" содержит единственный файл заканчивающийся на \".torrent\", удаляем его!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "В торренте \"{0}\" не оказалось ни одной части, удаляем его!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "Слишком много частей в \"{0}\" (предел — {1}), удаляем торрент!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Слишком крупные части в \"{0}\" ({1}Б), удаляем торрент."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Наш предел {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Торрент \"{0}\" не содержит данных, удаляем его!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Торренты крупнее чем {0}Б пока не поддерживается, удаляем \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Ошибка: Невозможно удалить торрент {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Торрент остановлен: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Торрент удален: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Добавление торрентов через {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Ограничение отдачи {0} КБ/с"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Закачка завершена: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Метаданные получены для {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Запускаем торрент: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Ошибка в торренте {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Не удалось установить соединение с I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Открытие I2P туннеля"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Соединяемся с I2P и запускаем все торренты."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Останавливаем все торренты и закрываем соединение с I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Закрытие туннеля I2P после уведомления трекеров"
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Нет трекеров для {0} — включены ли открытые трекеры или DHT?"
@@ -465,14 +465,14 @@ msgstr "Торрент полученный из {0} некорректен"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Настройки"
 
@@ -505,850 +505,860 @@ msgid "clear messages"
 msgstr "очистить сообщения"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Статус"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Сортировать по {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "скрыть список пиров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "показать список пиров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Торрент"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Тип файла"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "Осталось"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Примерное оставшееся время"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "Принято"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Получено"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Размер"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "Отдано"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Коэффициент отдачи"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Отдано"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "Скорость получения"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Скорость загрузки"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "Скорость отдачи"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Скорость отдачи"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Остановить все торренты и закрыть соединение с I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Остановить все"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Запустить все остановленные торренты"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Запустить все"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Запустить все торренты и открыть соединение с I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Нет загруженных торрентов."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Всего"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "{0} торрент"
 msgstr[1] "{0} торрента"
 msgstr[2] "{0} торрентов"
+msgstr[3] "{0} торрентов"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "{0} подсоединенный пир"
 msgstr[1] "{0} подсоединенных пиров"
 msgstr[2] "{0} подсоединенных пиров"
+msgstr[3] "{0} подсоединенных пиров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "{0} DHT пир"
 msgstr[1] "{0} DHT пира"
 msgstr[2] "{0} DHT пиров"
+msgstr[3] "{0} DHT пиров"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Первый"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Первая страница"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Предыдущее"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Предыдущая страница"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Следующее"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Следующая страница"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Последний"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Последняя страница"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "Не удалось создать директорию для файлов"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "Не могу добавить торрент {0} в состав другого торрента: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Некорректный URL: должен начинаться с \"http://\", \"{0}\", или \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet удален: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Удален торрент: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Закачка удалена: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Файл удален: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Не удалось удалить файл: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Каталог не может быть удалён: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Каталог удалён: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "Не могу добавить окончание торрента в файл \".torrent\": {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Торрент с таким именем уже запущен: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "Не могу добавить торрент с I2P директорией: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "Не могу добавить торрент {0}, включающий в себя другой торрент: {1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Ошибка - нельза добавить альтернативные трекеры без основного"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Ошибка - невозможно объединить приватный и публичные трекеры в торренте"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Создан торрент для \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Многие I2P трекеры требуют зарегистрировать на них торрент перед началом раздачи — пожалуйста проверьте требуется ли это перед запуском \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Ошибка при создании торрента для: \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Невозможно создать торрент для несуществующего файла или директории: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Торрент не создан — вы должны указать файл или директорию"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Удалить выбранное"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Сохранить настройки трекеров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Удален"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Добавить трекер"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Введите действительное название и URL трекера"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Восстановить значения по-умолчанию"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Восстановить трекеры по-умолчанию"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Проверка"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Выделение места"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Ошибка Трекера"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} пир"
 msgstr[1] "{0} пира"
 msgstr[2] "{0} пиров"
+msgstr[3] "{0} пиров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Запускается"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Раздается"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Завершен"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "Загружается"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Простаивает"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Нет пиров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Остановлен"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Подробная информация"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Открыть директорию"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Открыть файл"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Остановить торрент"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Остановить"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Запустить торрент"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Запустить"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Удалить торрент из списка и с диска"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Вы уверены, что хотите удалить файл \\''{0}\\'' (скачанные данные не будут удалены) ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Удалить"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Удалить торрент и стереть загруженные файлы"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Вы действительно хотите удалить торрент \\''{0}\\'' и все загруженные файлы?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Стереть"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Неизвестный"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Сид"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Uninteresting (У пира нет нужных нам частей торрента)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Choked (Этот пир не позволяет нам запрашивать части торрента)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Uninterested (У нас нужных этому пиру частей торрента)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Choking (Мы не позволяем этому пиру запрашивать у нас части торрента)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Детали на трекере {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Информация"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Добавить Торрент"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Из URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Введите URL для скачивания torrent-файла (только I2P), magnet-/maggot-ссылку или хэш"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Добавить торрент"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Директория для файлов"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Путь для сохранения файлов (по умолчанию {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Либо вы можете просто скопировать .torrent-файлы в директорию {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Удаление .torrent-файла приведёт к остановке торрента."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Создать Торрент"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Файлы для раздачи"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Файл или директория для раздачи (полный путь или относительно директории {0} )"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Трекеры"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Основной"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Альтернативный"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Создать торрент"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "нет"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Директория для файлов"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Файлы доступны для чтения всеми"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Если отмечено, другие пользователи могут иметь доступ к скачанным файлам"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Автоматически стартовать торренты"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Автоматически запускать торренты после добавления"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Тема"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Время обновления интерфейса"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Никогда"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Задержка запуска"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "минут"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Размер страницы"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "торренты"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Ограничение количества слотов отдачи"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "пиров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Ограничение скорости отдачи"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Рекомендуется использовать половину от доступной пропускной способности."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Посмотреть/настроить ограничения скорости в маршрутизаторе I2P"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Дополнительно использовать открытые трекеры"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Анонсировать торренты на открытых трекерах, дополнительно к тем, что указаны внутри торрента"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Включить DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Если выбрано, используется DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Входящие туннели"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Исходящие туннели"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "Адрес I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "Порт I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Параметры I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Сохранить настройки"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Имя"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL сайта"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Стандартный"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Открыть"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Частный"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "URL анонсирования"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Добавить"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Неправильный magnet URL {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "{0} хоп"
 msgstr[1] "{0} хопа"
 msgstr[2] "{0} хопов"
+msgstr[3] "{0} хопов"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "{0} туннель"
 msgstr[1] "{0} туннеля"
 msgstr[2] "{0} туннелей"
+msgstr[3] "{0} туннелей"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Торрент-файл"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Расположение данных"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Инфо хэш"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Первичный трекер"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Список трекеров"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Комментарий"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Создан"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Создан кем"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnet-ссылка"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Частный Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Загружено"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Осталось"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Файлов"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Части"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Размер части"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Директория"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Приоритет"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Перейти в директорию уровнем выше"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent not found?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "File not found in torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "скачано"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "осталось"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Высокий"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Нормальный"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Пропустить"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Всем высокий приоритет"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Всем нормальный приоритет"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Пропустить все"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Сохранить приоритеты"
diff --git a/apps/i2psnark/locale/messages_sk.po b/apps/i2psnark/locale/messages_sk.po
index 9a7d03bbee001c605c881d0a2c675a6b304c291c..339f354268ba93b872c4d520cf51eded7a3158fb 100644
--- a/apps/i2psnark/locale/messages_sk.po
+++ b/apps/i2psnark/locale/messages_sk.po
@@ -9,8 +9,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Slovak (http://www.transifex.com/projects/p/I2P/language/sk/)\n"
 "MIME-Version: 1.0\n"
@@ -19,227 +19,227 @@ msgstr ""
 "Language: sk\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P tunel je zatvorený."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Celkový limit uploaderov bol zmenený na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Minimálny celkový limit uploaderov je {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Limit nárastu ŠP bol zmenený na {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Minimálny limit nárastu šírky pásma je {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Zdržanie pri spustení bolo zmenené na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Čas refreshu bol zmenený na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Refresh zakázaný"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Veľkosť stránky bola zmenená na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Dátový priečinok musí byť absolútna cesta"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Dátový priečinok neexistuje"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Nie je priečinok"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Nečitateľné"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Dátový priečinok bol zmenený na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "Zmeny I2CP a tunelov sa prejavia po zastavení všetkých torrentov"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "I2CP nastavenia boli zmenené na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Odpája sa starý I2CP cieľ"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "I2CP nastavenia boli zmenené na {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Nie je možné sa pripojiť pomocou nových nastavení, vracia sa naspäť k starým I2CP nastaveniam"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Nie je možné sa znova pripojiť pomocou starých nastavení!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Znova sa pripája k novému I2CP cieľu"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP listener bol reštartovaný pre \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Nové súbory budú verejne čitateľné"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Nové súbory nebudú verejne čitateľné"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Povolené automatické spustenie"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Zakázané automatické spustenie"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Povolené otvorené stopovače - pre prejavenie efektu sa vyžaduje reštart torrentu."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Zakázané otvorené stopovače - pre prejavenie efektu sa vyžaduje reštart torrentu."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "Povolené DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "Zakázané DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Zmena DHT vyžaduje vypnutie a znovuotvorenie tunela"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} téma bola načítaná, vráťte sa na hlavnú stránku i2psnark pre zobrazenie."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Konfigurácia nebola zmenená."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Zoznam otvorených stopovačov sa zmenil - pre prejavenie efektu sa vyžaduje reštart torrentu."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Súkromný zoznam stopovačov bol zmenený - to sa bude týkať iba novo vytvorených torrentov."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Nebolo možné uložiť konfiguráciu do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Pripája sa k I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Chyba pri pripájaní sa k I2P - skontrolujte si vaše I2CP nastavenia!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Chyba: Nebolo možné pridať torrent {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Nie je možné otvoriť \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent s týmto info hashom je už spustený: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "CHYBA - Žiadne I2P stopovače v súkromnom torrente \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Varovanie - V \"{0}\" nie sú žiadne I2P stopovače, oznámené to bude iba DHT a otvoreným stopovačom I2P."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Varovanie - V \"{0}\" nie sú žiadne I2P stopovače, pričom otvorené stopovače sú zakázané, oznámené to bude iba DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -247,34 +247,34 @@ msgid ""
 "torrent."
 msgstr "Varovanie - V \"{0}\" nie sú žiadne I2P stopovače, pričom otvorené stopovače aj DHT sú zakázané, mali by ste otvorené stopovače alebo DHT pred spustením torrentu povoliť."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent v \"{0}\" je neplatný"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "CHYBA - Nedostatok pamäte, nie je možné vytvoriť torrent z {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent bol pridaný a spustený: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent bol pridaný: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Získava sa {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -282,132 +282,132 @@ msgid ""
 "DHT."
 msgstr "Otvorené stopovače sú zakázané a my nemáme žiadnych DHT peerov. Získanie {0} nemusí uspieť, pokiaľ nespustíte ďalší torrent, prípadne nepovolíte otvorené stopovače alebo DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Pridáva sa {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Sťahovanie je už spustené: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Nepodarilo sa skopírovať súbor torrentu do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "Príliš veľa súborov v \"{0}\" ({1}), odstraňuje sa!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Súbor torrentu \"{0}\" nemôže končiť na \".torrent\", odstraňuje sa!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "V \"{0}\" nie sú žiadne kúsky, odstraňuje sa!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "V \"{0}\" je príliš veľa kúskov, limit je {1}, odstraňuje sa!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "Kúsky v \"{0}\" ({1}B) sú príliš veľké, odstraňuje sa."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Limit je {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrent \"{0}\" neobsahuje žiadne dáta, odstraňuje sa!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrenty väčšie než {0}B zatiaľ nie sú podporované, odstraňuje sa \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Chyba: Nebolo možné odstrániť torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent bol zastavený: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent bol odstránený: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Pridávajú sa torrenty do {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Limit nárastu šírky pásma je {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Sťahovanie bolo dokončené: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainformácie pre {0} boli doručené"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Spúšťa sa torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Chyba na torrente {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Nie je možné sa pripojiť k I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Otvára sa I2P tunel"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Otvára sa I2P tunel a spúšťajú sa všetky torrenty."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Zastavujú sa všetky torrenty a zatvára sa I2P tunel."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Po upozornení stopovačov sa zatvára I2P tunel."
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "Nie sú žiadne platné stopovače pre {0} - povoliť otvorené stopovače alebo DHT?"
@@ -455,14 +455,14 @@ msgstr "Torrent na {0} nebol platný."
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Konfigurácia"
 
@@ -495,135 +495,135 @@ msgid "clear messages"
 msgstr "zmazať správy"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Stav"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Skryť peerov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Zobraziť peerov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "ETA"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Odhadovaný zostávajúci čas"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Stiahnuté"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Veľkosť"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Uploadnuté"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "RX sadzba"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Dolná sadzba"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "TX sadzba"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Horná sadzba"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Zastaviť všetky torrenty a I2P tunel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Zastaviť všetko"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Spustiť všetky zastavené torrenty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Spustiť všetko"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Spustiť všetky torrenty a I2P tunel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Neboli načítané žiadne torrenty."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Súhrny"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
@@ -631,7 +631,7 @@ msgstr[0] "1 torrent"
 msgstr[1] "{0} torrenty"
 msgstr[2] "{0} torrentov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
@@ -639,7 +639,7 @@ msgstr[0] "1 pripojený peer"
 msgstr[1] "{0} pripojení peerovia"
 msgstr[2] "{0} pripojených peerov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
@@ -647,203 +647,207 @@ msgstr[0] "1 DHT peer"
 msgstr[1] "{0} DHT peerovia"
 msgstr[2] "{0} DHT peerov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Prvé"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Prvá stránka"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Predchádzajúce"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Predchádzajúca stránka"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Nasledujúce"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Nasledujúca stránka"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Posledné"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Posledná stránka"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Neplatná URL: Musí začínať na \"http://\", \"{0}\" alebo \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet bol odstránený: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Súbor torrentu bol odstránený: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Sťahovanie odstránené: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Dátový súbor bol odstránený: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Dátový súbor nemohol byť odstránený: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Priečinok nemohol byť odstránený: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Priečinok bol odstránený: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Chyba - Nie je možné zahrnúť alternatívne stopovače bez toho primárneho"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Chyba - Nie je možné zmiešať v torrente súkromné aj verejné stopovače"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Pre \"{0}\" bol vytvorený torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Mnoho I2P stopovačov od vás vyžaduje registrovať pred seedovaním nové torrenty - prosím urobte tak pred spustením \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Chyba pri vytváraní torrentu pre \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Nie je možné vytvoriť torrent pre neexistujúce dáta: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Chyba pri vytváraní torrentu - musíte zadať súbor alebo priečinok"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Zvolená možnosť odstrániť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Uložiť konfiguráciu stopovača"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Odstránené"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Pridať stopovač"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Zadajte platný názov a URL stopovača"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Obnoviť predvolené nastavenia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Obnoviť predvolené stopovače"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Kontroluje sa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Alokuje sa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Chyba stopovača"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
@@ -851,366 +855,366 @@ msgstr[0] "1 peer"
 msgstr[1] "{0} peerovia"
 msgstr[2] "{0} peerov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Spúšťa sa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Seeduje sa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Dokončené"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Zablokované"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Žiadni peerovia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Zastavené"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Detaily torrentu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Zobraziť súbory"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Otvoriť súbor"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Zastaviť torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Zastaviť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Spustiť torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Spustiť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Odstrániť torrent zo zoznamu aktívnych zmazaním .torrent súboru."
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Ste si istý, že chcete odstrániť súbor \\\"{0}\\\"\n(stiahnuté dáta nebudú odstránené) ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Odstrániť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Odstrániť .torrent súbor a aj príslušný dátový súbor(y)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Ste si istý, že chcete odstrániť torrent \\\"{0}\\\" a s ním aj všetky stiahnuté dáta?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Zmazať"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Neznáme"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Seed"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Nezaujímavý (Peer nemá žiadne kúsky, ktoré potrebujeme)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Zapchaný (Peer nám neumožňuje žiadať o kúsky)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Nezaujímajúci sa (Nemáme žiadne kúsky, ktoré peer potrebuje)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Zapchaný (Neumožňujeme peerovi žiadať o kúsky)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detaily sú v {0} stopovači"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Informácie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Pridať torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Z URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Zadajte URL (iba I2P) pre stiahnutie torrentu, magnetový alebo maggotový link, prípadne info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Pridať torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Môžete tiež skopírovať .torrent súbory do: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Odstránenie .torrent spôsobí jeho zastavenie."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Vytvoriť torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Dáta na seedovanie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Stopovače"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primárne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternatívne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Vytvoriť torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "žiadne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Dátový priečinok"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Súbory čitateľné všetkými"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Ak je zaškrtnuté, ostatní užívatelia budú môcť pristupovať k stiahnutým súborom"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Ak je zaškrtnuté, automaticky sa spustia pridané torrenty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Téma"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "ÄŒas refreshu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Nikdy"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Zdržanie pri spustení"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minúty"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Veľkosť stránky"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrentov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Celkový limit uploaderov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "peerovia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Limit nárastu šírky pásma"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Odporúča sa polovica dostupnej šírky pásma."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Zobraziť alebo zmeniť šírku pásma routra"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Použiť aj otvorené stopovače"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Ak je zaškrtnuté, otvorené stopovače tak isto ako aj stopovače vypísané v súbore torrentu sa oboznámia so všetkými torrentmi"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Povoliť DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Ak je zaškrtnuté, použije sa DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Nastavenia prichádzajúcich dát"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Nastavenia odchádzajúcich dát"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP host"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP port"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "I2CP nastavenia"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Uložiť konfiguráciu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Názov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "URL webovej stránky"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Otvoriť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Súkromné"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Oznámiť URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Pridať"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Neplatná magnetová URL {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
@@ -1218,7 +1222,7 @@ msgstr[0] "1 hop"
 msgstr[1] "{0} hopy"
 msgstr[2] "{0} hopov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
@@ -1226,119 +1230,119 @@ msgstr[0] "1 tunel"
 msgstr[1] "{0} tunely"
 msgstr[2] "{0} tunelov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Súbor torrentu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Primárny stopovač"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Zoznam stopovačov"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Komentár"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Vytvorené"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Vytvorené užívateľom"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnetový link"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Súkromný torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Dokončenie"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Zostávajúce"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Súbory"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Kúsky"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Veľkosť kúsku"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Priečinok"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Priorita"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Hore do priečinka vyššej úrovne"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent nenájdený?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Súbor nenájdený v torrente?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "dokončiť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "zostávajúcich"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Vysoká"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normálna"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Preskočiť"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Uložiť priority"
diff --git a/apps/i2psnark/locale/messages_sv.po b/apps/i2psnark/locale/messages_sv.po
index be594d134e7b3f874a5504cdb0241d9065723504..ec566c4eb56dbb995e0d4ed3118f3fded019af63 100644
--- a/apps/i2psnark/locale/messages_sv.po
+++ b/apps/i2psnark/locale/messages_sv.po
@@ -18,8 +18,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-04-09 17:46+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-19 09:58+0000\n"
 "Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
 "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
 "MIME-Version: 1.0\n"
@@ -33,222 +33,222 @@ msgid "No more torrents running."
 msgstr "Inga mer torrents kör."
 
 #: ../java/src/org/klomp/snark/IdleChecker.java:76
-#: ../java/src/org/klomp/snark/SnarkManager.java:2376
-#: ../java/src/org/klomp/snark/SnarkManager.java:2387
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P-tunneln är stängd."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:2080
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:771
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "Gräns för totalt antal uppladdare är bytt till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:773
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "Minsta tillåtna gräns för uppladdare är {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:785
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Uppladdningsbandbredd bytt till {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:787
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Minsta uppladdningsbandbredd bytt till {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:799
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "Fördröjning vid uppstart bytt till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:810
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "Uppdateringstiden ändrad till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:812
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "Uppdatering inaktiverad"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:828
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "Torrentar per sida ändrat till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:837
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "Datamappen måste vara en absolut sökväg"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:839
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "Datamappen finns ej"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:841
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "Inte en mapp"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:843
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "Oläsbar"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:848
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "Datamappen ändrad till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:903
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "I2CP- och tunnelförändringar kommer träda i kraft efter alla torrentar stoppats"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:907
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "Alternativ för I2CP ändrade till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:913
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "Kopplar ifrån gammal I2CP destination"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:915
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "Inställningar för I2CP ändrade till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:920
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "Misslyckades med anslutningsförsök med nya inställningar, återställer de gamla I2CP inställningarna"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:924
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "Misslyckades med anslutningsförsök med gamla inställningar!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:926
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "Återanslöt mot den nya I2CP destinationen"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:933
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "I2CP-lyssnare omstartad för \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:947
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "Nya filer kommer vara publikt läsbara"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:949
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "Nya filer kommer inte vara publikt läsbara"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:956
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "Aktiverade automatisk start"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:958
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "Inaktiverade automatisk start"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:964
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "Aktiverade publika trackers - torrenten måste startas om för att inställningen ska träda i kraft"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:966
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "Inaktiverade publika trackers - torrenten måste startas om för att inställningen ska träda i kraft"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:973
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "Aktivera DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:975
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "Inaktiverade DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:977
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "Förändring i DHT kräver att tunneln stängs och öppnas igen "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:984
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} tema laddat, återgå till huvudvyn för i2psnark."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:994
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "Inställningar oförändrade."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1026
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "Listan över publika trackers förändrad - torrenten måste startas om för att inställningen ska träda i kraft"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1036
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "Privat trackerlista ändrad - påverkar bara nyligen skapade torrents"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1082
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "Misslyckades med att spara inställningar till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1163
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Ansluter till I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1166
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "Problem vid anslutning till I2P - kontrollera dina inställningar för I2CP!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1175
-#: ../java/src/org/klomp/snark/SnarkManager.java:2117
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "Problem: Kunde inte lägga till torrent {0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1198
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "Kan inte öppna \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1217
-#: ../java/src/org/klomp/snark/SnarkManager.java:1342
-#: ../java/src/org/klomp/snark/SnarkManager.java:1430
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "Torrent med denna infohash körs redan: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1223
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "FEL - Inga I2P trackers i den privata torrenten \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1225
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "Varning - Ingen I2P tracker i \"{0}\", kommer enbart att annonsera till publika I2P trackers och DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1228
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "Varning - Ingen I2P tracker i \"{0}\" och publika trackers är inaktiverade, kommer enbart att annonsera till DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1230
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -256,34 +256,34 @@ msgid ""
 "torrent."
 msgstr "Varning - Ingen I2P tracker i \"{0}\" och både DHT och publika trackers är inaktiverade, du bör aktivera publika trackers eller DHT innan du startar torrenten. "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1256
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "Torrent i \"{0}\" är ogiltig"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1263
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "FEL - Minnet har tagit slut, kan inte skapa torrent från {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1275
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "Torrent tillagd och startad: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1277
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "Torrent tillagd: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1353
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "Hämtar {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1359
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -291,128 +291,128 @@ msgid ""
 "DHT."
 msgstr "Publika trackers är inaktiverade och vi har inga DHT klienter. Hämtningen av {0} kan kanske inte genomföras innan du startar en annan torrent eller aktiverar publika trackers eller DHT."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1363
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "Lägger till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1396
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "Hämtar redan: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1440
-#: ../java/src/org/klomp/snark/SnarkManager.java:1466
-#: ../java/src/org/klomp/snark/SnarkManager.java:2036
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "Misslyckades att kopiera torrentfil till {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1815
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "För många filer i \"{0}\" ({1}), tar bort den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1817
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "Torrenten \"{0}\" får inte sluta med \".torrent\", tar bort den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1819
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "Inga delar i \"{0}\",  tar bort den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1821
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "För många delar i \"{0}\", gränsen är {1}, tar bort den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1823
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "För stora delar i \"{0}\" ({1}B), tar bort den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "Gränsen är {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1826
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "Torrenten \"{0}\" har ingen data, tar bort den!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1834
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "Torrentar större än {0}B stöds inte än, tar bort \"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1851
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "Fel: Kunde ej ta bort torrenten {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1874
-#: ../java/src/org/klomp/snark/SnarkManager.java:1893
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "Torrent stannad: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1913
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "Torrent borttagen: \"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1921
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "Lägger till torrentar i {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1953
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr "Upp bandbredds gräns är {0} KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1979
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "Hämtning klar: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2032
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "Metainfo mottagen för {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2033
-#: ../java/src/org/klomp/snark/SnarkManager.java:2264
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "Startar torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2048
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "Fel på torrent {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2111
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "Misslyckades med att ansluta till I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2263
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "Öppnar I2P tunneln"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2287
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "Öppnar I2P-tunneln och startar torrentar."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2350
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "Stoppar alla torrentar och stänger I2P-tunneln."
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2369
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "Stänger I2P tunnel efter att ha meddelat trackers."
 
@@ -464,14 +464,14 @@ msgstr "Torrent vid {0} var inte giltig"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1751
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2650
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2137
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Inställningar"
 
@@ -504,844 +504,848 @@ msgid "clear messages"
 msgstr "rensa meddelandena"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Status"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2941
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "Sortera efter{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "Dölj klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "Visa klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2636
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "Torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "Filtyp"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "Förväntas klar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "Uppskattad återstående tid"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "RX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Hämtade"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2806
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Storlek"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "TX"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2824
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "Upload ratio"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Uppladdat"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "RX Rate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "Nerhastighet"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "TX Rate"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "Upphastighet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "Stoppa alla torrents och I2P-tunneln"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "Stoppa alla"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "Starta alla stannade torrentar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "Starta alla"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "Starta alla torrents och I2P-tunneln"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "Inga torrents laddade."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Totalt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "1 torrent"
 msgstr[1] "{0} torrentar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "1 ansluten klient"
 msgstr[1] "{0} anslutna klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "1 DHT klient"
 msgstr[1] "{0} DHT klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "Destination"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "Första"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "Första sidan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "Bakåt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "Föregående sida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "Nästa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "Nästa sida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "Sista"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "Sista sidan"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "Data directory kan inte skapas"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1164
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "Kan inte lägga till torrent{0} inuti annan torrent:{1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "Ogiltig adress: MÃ¥ste inledas med \"http://\", \"{0}\" eller \"{1}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet borttagen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "Torrentfil borttagen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "Hämtning borttagen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1058
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "Datafil borttagen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1060
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1069
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "Datafil kunde inte tas bort: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "Katalogen kunde inta tas bort: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1092
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "Katalogen bort tagen: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1143
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "Kan inte lägga till en torrent som slutar på \".torrent\":{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "Torrent med detta namn kör redan: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1154
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "Kan inte lägga till en torrent som inkluderar en I2P directory:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1169
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "Kan inte lägga till en torrent{0} som inkluderar en annan torrent{1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "Fel - Kan inte inkludera alternativa trackers utan en primär tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1208
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "Fel - Kan inte blanda privata och publika trackers i samma torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1230
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "Torrent skapad för \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "Många I2P trackers kräver att du registrerar nya torrentar innan uppladdningen påbörjas - gör det innan \"{0}\" startas"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1234
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "Misslyckades med att skapa torrent för \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1238
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "Kan ej skapa torrent för data som ej finns: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "Misslyckades med att skapa torrent - en fil eller mapp måste anges"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "Ta bort valda"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1272
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "Spara tracker konfiguration"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1289
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "Borttagen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1321
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2395
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "Lägg till tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1344
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1347
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "Ange giltigt namn och adresser för trackern "
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1349
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2398
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "Återställ standardvärden"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1352
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "Återställ standard trackers "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "Kontrollerar "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1464
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "Allokerar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1478
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1487
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Trackerfel"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1480
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1526
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1531
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1537
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1542
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "1 klient"
 msgstr[1] "{0} klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "Startar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "Uppladdning"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1518
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2819
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3035
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Färdig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1523
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "Ok"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Avstannad"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "Inga klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "Stoppad"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1581
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "Torrentdetaljer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Se filer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1618
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Öppna fil"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1670
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "Stoppa torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1672
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "Stoppa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "Starta torrenten"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Starta"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1700
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "Ta bort torrenten från den aktiva listan, tar bort .torrent filen"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1705
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "Är du säker på att du vill radera filen  \\''{0}\\' (hämtad data kommer ej raderas) ?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1709
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Ta bort"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "Ta bort .torrent filen och tillhörande datafil(er)"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1727
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "Är du säker på att du vill ta bort torrenten \"{0}\" och all hämtad data?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1731
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Ta bort"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1767
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Okänd"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "Källa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1802
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "Ointressant (klienten har inga delar vi behöver)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1804
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "Strypt (klienten låter oss inte be om delar)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1824
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "Ointresserad (vi har inga delar klienten behöver)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1826
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "Stryper (vi låter inte klienten be om delar)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1942
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Detaljer för {0} tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1959
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Info"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2032
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "Lägg till torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2035
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "Adress"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2038
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "Ange torrentfilens adress (enbart I2P), magnet-länk, maggot-länk eller infohash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "Lägg till torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "Data dir"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "Ange katalogen att spara datan i (förval {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2054
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "Du kan även kopiera .torrent filer till: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2056
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr "Borttagning av .torrent fil kommer stanna den."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2069
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "Skapa torrent"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "Data att ladda upp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2076
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "Fil eller katalog att seeda (fullständig sökväg eller inom katalog {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2079
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2325
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "Primär"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2083
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "Alternativ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2086
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "Skapa torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2104
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "inga"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2141
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "Datamapp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2146
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "Filer läsbara för alla"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2150
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "Välj detta för att ge andra användare tillgång till hämtade filer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2154
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "Starta torrents automatiskt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "Välj detta för att automatiskt starta tillagda torrentfiler"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "Tema"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2176
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "Uppdateringsintervall"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2189
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "Aldrig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "Fördröjning av uppstart"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2197
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "minuter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "Per sida"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2203
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "torrentar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2227
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "Gräns för totalt antal uppladdare"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2230
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "klienter"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2234
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Gräns för bandbredd uppåt"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "Hälften av tillgänglig bandbredd rekommenderas."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "Se eller ändra routerns bandbredd"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2243
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "Använd också publika trackers"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2247
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "Välj detta för att annonsera torrentar till publika trackers såväl som de listade i torrentfilen"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "Aktivera DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "Välj detta för att använda DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2271
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "Inställningar för inkommande"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2277
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "Inställningar för utgående"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2285
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP-värd"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2290
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP-port"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2305
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "Alternativ för I2CP"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2310
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Spara inställningar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "Namn"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "Webbplatsadress"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "Standard"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Publik"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "Privat"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2340
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "Annonseringsadress"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2384
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "Lägg till"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2427
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "Ogiltig magnet-adress {0}"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2435
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "1 hopp"
 msgstr[1] "{0} hopp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2436
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "1 tunnel"
 msgstr[1] "{0} tunnlar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2679
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Torrentfil"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "Plats för data"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2696
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "Info hash"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2715
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "Primär tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2724
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Trackerlista"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2749
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "Kommentar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2759
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "Skapad"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2770
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "Skapad av"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnet länk"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2795
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "Privat torrent"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2815
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "Färdigställning"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2844
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "Kvar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Filer"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2861
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Delar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2867
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Delstorlek"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2921
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Mapp"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Prioritet"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "Upp till högre mappnivå"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "Torrent hittades ej?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3032
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "Fil hittades ej i torrent?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3045
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "färdig"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "kvar"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3092
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Hög"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3097
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Normal"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3102
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Hoppa över"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "Sätt alla höga"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "Sätt alla normala"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3116
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "Hoppa över alla"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3117
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "Spara prioriteter"
diff --git a/apps/i2psnark/locale/messages_vi.po b/apps/i2psnark/locale/messages_vi.po
index 261b49889c16ab52a22c90b928d8a33a64da74bb..d7d0e8067cf6849ecd4d95224879a4a214cfbd21 100644
--- a/apps/i2psnark/locale/messages_vi.po
+++ b/apps/i2psnark/locale/messages_vi.po
@@ -9,8 +9,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-19 21:48+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 01:32+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Vietnamese (http://www.transifex.com/projects/p/I2P/language/vi/)\n"
 "MIME-Version: 1.0\n"
@@ -19,227 +19,227 @@ msgstr ""
 "Language: vi\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "Đường hầm I2P đóng lại."
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
 msgstr "Giới hạn băng thông lên đổi thành {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
 msgstr "Tối thiểu băng thông lên là {0}KBps"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "Nối kết vào I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr ""
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr ""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -247,34 +247,34 @@ msgid ""
 "torrent."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -282,132 +282,132 @@ msgid ""
 "DHT."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr ""
@@ -455,14 +455,14 @@ msgstr ""
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "Cấu hình"
 
@@ -495,838 +495,842 @@ msgid "clear messages"
 msgstr ""
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "Tình trạng"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "Đã tải xuống"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "Kích thước"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "Đã tải lên"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr ""
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "Tổng cộng"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr ""
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr ""
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "Hoàn tất"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
 msgstr "OK"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "Khá»±ng"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "NgÆ°ng"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "Xem tập tin"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "Mở tập tin"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "NgÆ°ng"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "Bắt đầu"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr ""
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "Bỏ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr ""
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "Xóa"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "Không rõ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "Thông tin"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr ""
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "phút"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "Giới hạn băng thông lên"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "Lưu cấu hình"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "Mở"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr ""
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "Tập tin"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "Mảnh"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "Kích thước mảnh"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "Danh mục"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "Ưu tiên"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "hoàn tất"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "Cao"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "Thường"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "Lờ"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr ""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr ""
diff --git a/apps/i2psnark/locale/messages_zh.po b/apps/i2psnark/locale/messages_zh.po
index 2a812a8d25754b00c7c35ae9cd36680d6cfa1476..cb4216a405e9305bdab64c9792a51a4b785e4353 100644
--- a/apps/i2psnark/locale/messages_zh.po
+++ b/apps/i2psnark/locale/messages_zh.po
@@ -8,13 +8,13 @@
 # foo <foo@bar>, 2009
 # walking <waling@mail.i2p>, 2013
 # wwj402 <wwj402@gmail.com>, 2013
-# YF <yfdyh000@gmail.com>, 2014
+# YF <yfdyh000@gmail.com>, 2014-2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-19 21:48+0000\n"
-"PO-Revision-Date: 2014-11-20 07:17+0000\n"
+"POT-Creation-Date: 2015-07-17 01:09+0000\n"
+"PO-Revision-Date: 2015-07-17 03:01+0000\n"
 "Last-Translator: YF <yfdyh000@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
@@ -23,227 +23,227 @@ msgstr ""
 "Language: zh_CN\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:69
+#: ../java/src/org/klomp/snark/IdleChecker.java:75
 msgid "No more torrents running."
 msgstr "没有更多种子正在运行。"
 
-#: ../java/src/org/klomp/snark/IdleChecker.java:70
-#: ../java/src/org/klomp/snark/SnarkManager.java:2283
-#: ../java/src/org/klomp/snark/SnarkManager.java:2294
+#: ../java/src/org/klomp/snark/IdleChecker.java:76
+#: ../java/src/org/klomp/snark/SnarkManager.java:2392
+#: ../java/src/org/klomp/snark/SnarkManager.java:2403
 msgid "I2P tunnel closed."
 msgstr "I2P隧道已关闭"
 
 #: ../java/src/org/klomp/snark/MagnetURI.java:42
 #: ../java/src/org/klomp/snark/MagnetURI.java:52
-#: ../java/src/org/klomp/snark/SnarkManager.java:1987
+#: ../java/src/org/klomp/snark/SnarkManager.java:2096
 msgid "Magnet"
 msgstr "Magnet"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:749
+#: ../java/src/org/klomp/snark/SnarkManager.java:772
 #, java-format
 msgid "Total uploaders limit changed to {0}"
 msgstr "总上传种子数限制已更新为{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:751
+#: ../java/src/org/klomp/snark/SnarkManager.java:774
 #, java-format
 msgid "Minimum total uploaders limit is {0}"
 msgstr "最低上传种子数限制为{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:763
+#: ../java/src/org/klomp/snark/SnarkManager.java:786
 #, java-format
 msgid "Up BW limit changed to {0}KBps"
-msgstr "上传带宽限制改为 {0} KBps"
+msgstr "上传带宽限制改为 {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:765
+#: ../java/src/org/klomp/snark/SnarkManager.java:788
 #, java-format
 msgid "Minimum up bandwidth limit is {0}KBps"
-msgstr "最小上传带宽限制为 {0} KBps"
+msgstr "最小上传带宽限制为 {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:777
+#: ../java/src/org/klomp/snark/SnarkManager.java:800
 #, java-format
 msgid "Startup delay changed to {0}"
 msgstr "下载前的延迟已更新为{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:788
+#: ../java/src/org/klomp/snark/SnarkManager.java:811
 #, java-format
 msgid "Refresh time changed to {0}"
 msgstr "刷新时间更新为{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:790
+#: ../java/src/org/klomp/snark/SnarkManager.java:813
 msgid "Refresh disabled"
 msgstr "刷新已禁用"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:806
+#: ../java/src/org/klomp/snark/SnarkManager.java:829
 #, java-format
 msgid "Page size changed to {0}"
 msgstr "页面容量更新为{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:815
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:838
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:956
 msgid "Data directory must be an absolute path"
 msgstr "数据存放目录必须是绝对路径"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:817
+#: ../java/src/org/klomp/snark/SnarkManager.java:840
 msgid "Data directory does not exist"
 msgstr "数据存放目录不存在"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:819
+#: ../java/src/org/klomp/snark/SnarkManager.java:842
 msgid "Not a directory"
 msgstr "不是文件夹"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:821
+#: ../java/src/org/klomp/snark/SnarkManager.java:844
 msgid "Unreadable"
 msgstr "不可读"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:826
+#: ../java/src/org/klomp/snark/SnarkManager.java:849
 #, java-format
 msgid "Data directory changed to {0}"
 msgstr "数据存放目录更新至{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:881
+#: ../java/src/org/klomp/snark/SnarkManager.java:904
 msgid "I2CP and tunnel changes will take effect after stopping all torrents"
 msgstr "I2CP与隧道设置的变化在所有种子停止后才能生效"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:885
+#: ../java/src/org/klomp/snark/SnarkManager.java:908
 #, java-format
 msgid "I2CP options changed to {0}"
 msgstr "I2CP 选项改为 {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:891
+#: ../java/src/org/klomp/snark/SnarkManager.java:914
 msgid "Disconnecting old I2CP destination"
 msgstr "正在断开旧的I2CP目标"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:893
+#: ../java/src/org/klomp/snark/SnarkManager.java:916
 #, java-format
 msgid "I2CP settings changed to {0}"
 msgstr "I2CP设置改为{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:898
+#: ../java/src/org/klomp/snark/SnarkManager.java:921
 msgid ""
 "Unable to connect with the new settings, reverting to the old I2CP settings"
 msgstr "无法通过新设置连接,恢复I2CP的旧设置"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:902
+#: ../java/src/org/klomp/snark/SnarkManager.java:925
 msgid "Unable to reconnect with the old settings!"
 msgstr "旧设置也无法连接!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:904
+#: ../java/src/org/klomp/snark/SnarkManager.java:927
 msgid "Reconnected on the new I2CP destination"
 msgstr "重新连接新I2CP目标"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:911
+#: ../java/src/org/klomp/snark/SnarkManager.java:934
 #, java-format
 msgid "I2CP listener restarted for \"{0}\""
 msgstr "\"{0}\"的I2CP监听端口已启动"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:925
+#: ../java/src/org/klomp/snark/SnarkManager.java:948
 msgid "New files will be publicly readable"
 msgstr "新文件将对公共可读"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:927
+#: ../java/src/org/klomp/snark/SnarkManager.java:950
 msgid "New files will not be publicly readable"
 msgstr "新文件不会对公共可读"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:934
+#: ../java/src/org/klomp/snark/SnarkManager.java:957
 msgid "Enabled autostart"
 msgstr "启用自动启动"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:936
+#: ../java/src/org/klomp/snark/SnarkManager.java:959
 msgid "Disabled autostart"
 msgstr "禁用自动启动"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:942
+#: ../java/src/org/klomp/snark/SnarkManager.java:965
 msgid "Enabled open trackers - torrent restart required to take effect."
 msgstr "启用OpenTracker-重新启动种子后生效"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:944
+#: ../java/src/org/klomp/snark/SnarkManager.java:967
 msgid "Disabled open trackers - torrent restart required to take effect."
 msgstr "禁用OpenTracker - 重新启动种子后生效"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:951
+#: ../java/src/org/klomp/snark/SnarkManager.java:974
 msgid "Enabled DHT."
 msgstr "DHT 已启用"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:953
+#: ../java/src/org/klomp/snark/SnarkManager.java:976
 msgid "Disabled DHT."
 msgstr "DHT 已禁用"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:955
+#: ../java/src/org/klomp/snark/SnarkManager.java:978
 msgid "DHT change requires tunnel shutdown and reopen"
 msgstr "DHT 修改生效需要关闭或重启。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:962
+#: ../java/src/org/klomp/snark/SnarkManager.java:985
 #, java-format
 msgid "{0} theme loaded, return to main i2psnark page to view."
 msgstr "{0} 主题已加载,浏览效果请到 i2psnark 主页。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:972
+#: ../java/src/org/klomp/snark/SnarkManager.java:995
 msgid "Configuration unchanged."
 msgstr "设置未改变"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1004
+#: ../java/src/org/klomp/snark/SnarkManager.java:1027
 msgid "Open Tracker list changed - torrent restart required to take effect."
 msgstr "OpenTracker列表已改变 - 重新启动种子后生效"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1014
+#: ../java/src/org/klomp/snark/SnarkManager.java:1037
 msgid "Private tracker list changed - affects newly created torrents only."
 msgstr "PT 列表已更改 - 仅对新创建的种子有效"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1060
+#: ../java/src/org/klomp/snark/SnarkManager.java:1083
 #, java-format
 msgid "Unable to save the config to {0}"
 msgstr "无法保存设置到{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1141
+#: ../java/src/org/klomp/snark/SnarkManager.java:1164
 msgid "Connecting to I2P"
 msgstr "正在连接到I2P"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1144
+#: ../java/src/org/klomp/snark/SnarkManager.java:1167
 msgid "Error connecting to I2P - check your I2CP settings!"
 msgstr "连接I2P时发生错误 - 请检查I2CP设置!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1153
-#: ../java/src/org/klomp/snark/SnarkManager.java:2024
+#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:2133
 #, java-format
 msgid "Error: Could not add the torrent {0}"
 msgstr "错误:无法添加种子{0}"
 
 #. catch this here so we don't try do delete it below
-#: ../java/src/org/klomp/snark/SnarkManager.java:1176
+#: ../java/src/org/klomp/snark/SnarkManager.java:1199
 #, java-format
 msgid "Cannot open \"{0}\""
 msgstr "无法打开 \"{0}\""
 
 #. TODO - if the existing one is a magnet, delete it and add the metainfo
 #. instead?
-#: ../java/src/org/klomp/snark/SnarkManager.java:1195
-#: ../java/src/org/klomp/snark/SnarkManager.java:1320
-#: ../java/src/org/klomp/snark/SnarkManager.java:1407
+#: ../java/src/org/klomp/snark/SnarkManager.java:1218
+#: ../java/src/org/klomp/snark/SnarkManager.java:1352
+#: ../java/src/org/klomp/snark/SnarkManager.java:1440
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:166
 #, java-format
 msgid "Torrent with this info hash is already running: {0}"
 msgstr "具有相同Hash链接的种子已在下载中:{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1201
+#: ../java/src/org/klomp/snark/SnarkManager.java:1224
 #, java-format
 msgid "ERROR - No I2P trackers in private torrent \"{0}\""
 msgstr "错误 - 私有种子\"{0}\"中缺少 I2P Tracker"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1203
+#: ../java/src/org/klomp/snark/SnarkManager.java:1226
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", will announce to I2P open trackers and"
 " DHT only."
 msgstr "警告 - \"{0}\"中缺少 I2P Tracker,程序将仅通过 I2P 中的开放式 Tracker 和 DHT 下载。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1206
+#: ../java/src/org/klomp/snark/SnarkManager.java:1229
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and open trackers are disabled, will "
 "announce to DHT only."
 msgstr "警告 - \"{0}\"中缺少 I2P Tracker,已禁用 I2P  Open Tracker,程序将仅通过 DHT 下载。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1208
+#: ../java/src/org/klomp/snark/SnarkManager.java:1231
 #, java-format
 msgid ""
 "Warning - No I2P trackers in \"{0}\", and DHT and open trackers are "
@@ -251,34 +251,34 @@ msgid ""
 "torrent."
 msgstr "警告 - \"{0}\"中缺少 I2P Tracker,已禁用 I2P  Open Tracker 和 DHT,下载先您需要先启用  OpenTracker 或 DHT 。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1234
+#: ../java/src/org/klomp/snark/SnarkManager.java:1257
 #, java-format
 msgid "Torrent in \"{0}\" is invalid"
 msgstr "无效种子 \"{0}\" "
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1241
+#: ../java/src/org/klomp/snark/SnarkManager.java:1264
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:193
 #, java-format
 msgid "ERROR - Out of memory, cannot create torrent from {0}"
 msgstr "错误: 内存不足,无法为 {0} 创建种子。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1253
+#: ../java/src/org/klomp/snark/SnarkManager.java:1285
 #, java-format
 msgid "Torrent added and started: \"{0}\""
 msgstr "已添加并启动种子:\"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1255
+#: ../java/src/org/klomp/snark/SnarkManager.java:1287
 #, java-format
 msgid "Torrent added: \"{0}\""
 msgstr "已添加种子:\"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1331
+#: ../java/src/org/klomp/snark/SnarkManager.java:1363
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:93
 #, java-format
 msgid "Fetching {0}"
 msgstr "正在获取{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1337
+#: ../java/src/org/klomp/snark/SnarkManager.java:1369
 #, java-format
 msgid ""
 "Open trackers are disabled and we have no DHT peers. Fetch of {0} may not "
@@ -286,132 +286,132 @@ msgid ""
 "DHT."
 msgstr "OpenTracker被禁用,程序目前没有DHT节点。{0}的下载不会成功,直到您启动另一个种子的下载、重新启用OpenTracker或DHT。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1341
+#: ../java/src/org/klomp/snark/SnarkManager.java:1373
 #, java-format
 msgid "Adding {0}"
 msgstr "正在添加{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1373
+#: ../java/src/org/klomp/snark/SnarkManager.java:1406
 #, java-format
 msgid "Download already running: {0}"
 msgstr "已经在下载中:{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1417
-#: ../java/src/org/klomp/snark/SnarkManager.java:1443
-#: ../java/src/org/klomp/snark/SnarkManager.java:1943
+#: ../java/src/org/klomp/snark/SnarkManager.java:1451
+#: ../java/src/org/klomp/snark/SnarkManager.java:1477
+#: ../java/src/org/klomp/snark/SnarkManager.java:2052
 #, java-format
 msgid "Failed to copy torrent file to {0}"
 msgstr "无法复制种子文件到{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1729
+#: ../java/src/org/klomp/snark/SnarkManager.java:1828
 #, java-format
 msgid "Too many files in \"{0}\" ({1}), deleting it!"
 msgstr "\"{0}\" ({1}) 含有太多文件,删除之!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1731
+#: ../java/src/org/klomp/snark/SnarkManager.java:1830
 #, java-format
 msgid "Torrent file \"{0}\" cannot end in \".torrent\", deleting it!"
 msgstr "种子文件 \"{0}\" 不以 \".torrent\"结尾,正在删除!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1733
+#: ../java/src/org/klomp/snark/SnarkManager.java:1832
 #, java-format
 msgid "No pieces in \"{0}\",  deleting it!"
 msgstr "\"{0}\" 中没有数据片,删除之!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1735
+#: ../java/src/org/klomp/snark/SnarkManager.java:1834
 #, java-format
 msgid "Too many pieces in \"{0}\", limit is {1}, deleting it!"
 msgstr "\"{0}\" 中文件分片太多,限额为{1},删除之!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1737
+#: ../java/src/org/klomp/snark/SnarkManager.java:1836
 #, java-format
 msgid "Pieces are too large in \"{0}\" ({1}B), deleting it."
 msgstr "\"{0}\" ({1}B) 中文件分片过大,删除之。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1738
+#: ../java/src/org/klomp/snark/SnarkManager.java:1837
 #, java-format
 msgid "Limit is {0}B"
 msgstr "限额为 {0}B"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1740
+#: ../java/src/org/klomp/snark/SnarkManager.java:1839
 #, java-format
 msgid "Torrent \"{0}\" has no data, deleting it!"
 msgstr "种子\"{0}\"中无数据,正在删除!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1748
+#: ../java/src/org/klomp/snark/SnarkManager.java:1847
 #, java-format
 msgid "Torrents larger than {0}B are not supported yet, deleting \"{1}\""
 msgstr "目前不支持大于{0}B 的种子,正在删除\"{1}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1764
+#: ../java/src/org/klomp/snark/SnarkManager.java:1864
 #, java-format
 msgid "Error: Could not remove the torrent {0}"
 msgstr "错误:无法删除种子{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1785
-#: ../java/src/org/klomp/snark/SnarkManager.java:1803
+#: ../java/src/org/klomp/snark/SnarkManager.java:1887
+#: ../java/src/org/klomp/snark/SnarkManager.java:1906
 #, java-format
 msgid "Torrent stopped: \"{0}\""
 msgstr "种子已停止:\"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1824
+#: ../java/src/org/klomp/snark/SnarkManager.java:1926
 #, java-format
 msgid "Torrent removed: \"{0}\""
 msgstr "种子已删除:\"{0}\""
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1832
+#: ../java/src/org/klomp/snark/SnarkManager.java:1934
 #, java-format
 msgid "Adding torrents in {0}"
 msgstr "{0} 分钟内完成添加"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1863
+#: ../java/src/org/klomp/snark/SnarkManager.java:1966
 #, java-format
 msgid "Up bandwidth limit is {0} KBps"
-msgstr "最小上传带宽限制为 {0} KBps"
+msgstr "上传带宽限制为 {0} KB/s"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1886
+#: ../java/src/org/klomp/snark/SnarkManager.java:1993
 #, java-format
 msgid "Download finished: {0}"
 msgstr "下载已完成: {0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1939
+#: ../java/src/org/klomp/snark/SnarkManager.java:2048
 #, java-format
 msgid "Metainfo received for {0}"
 msgstr "已获得 {0} 的 Metainfo"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1940
-#: ../java/src/org/klomp/snark/SnarkManager.java:2171
+#: ../java/src/org/klomp/snark/SnarkManager.java:2049
+#: ../java/src/org/klomp/snark/SnarkManager.java:2280
 #, java-format
 msgid "Starting up torrent {0}"
 msgstr "正在启动种子{0}"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:1955
+#: ../java/src/org/klomp/snark/SnarkManager.java:2064
 #, java-format
 msgid "Error on torrent {0}"
 msgstr "种子 {0} 发生错误"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2018
+#: ../java/src/org/klomp/snark/SnarkManager.java:2127
 msgid "Unable to connect to I2P!"
 msgstr "无法连接至I2P!"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2170
+#: ../java/src/org/klomp/snark/SnarkManager.java:2279
 #: ../java/src/org/klomp/snark/web/FetchAndAdd.java:130
 msgid "Opening the I2P tunnel"
 msgstr "正在建立 I2P 隧道"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2194
+#: ../java/src/org/klomp/snark/SnarkManager.java:2303
 msgid "Opening the I2P tunnel and starting all torrents."
 msgstr "正在打开I2P隧道并启动所有种子"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2257
+#: ../java/src/org/klomp/snark/SnarkManager.java:2366
 msgid "Stopping all torrents and closing the I2P tunnel."
 msgstr "正在停用所有种子并关闭I2P隧道。"
 
-#: ../java/src/org/klomp/snark/SnarkManager.java:2276
+#: ../java/src/org/klomp/snark/SnarkManager.java:2385
 msgid "Closing I2P tunnel after notifying trackers."
 msgstr "正在关闭 I2P 隧道,已通知 Tracker。"
 
-#: ../java/src/org/klomp/snark/TrackerClient.java:240
+#: ../java/src/org/klomp/snark/TrackerClient.java:245
 #, java-format
 msgid "No valid trackers for {0} - enable opentrackers or DHT?"
 msgstr "{0} 中 Tracker 无效 - 要启用 opentrackers 或 DHT 吗?"
@@ -459,14 +459,14 @@ msgstr "{0}的种子中有错误"
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:268
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:311
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:322
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1750
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1763
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2662
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:273
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2136
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2149
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2422
 msgid "Configuration"
 msgstr "设置"
 
@@ -499,838 +499,842 @@ msgid "clear messages"
 msgstr "清除消息"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:449
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2966
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
 msgid "Status"
 msgstr "状态"
 
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:451
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2956
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2980
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2994
 #, java-format
 msgid "Sort by {0}"
 msgstr "排序按 {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:461
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:462
 msgid "Hide Peers"
 msgstr "隐藏用户"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:467
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:468
 msgid "Show Peers"
 msgstr "显示用户"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:490
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2634
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:491
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2648
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2681
 msgid "Torrent"
 msgstr "种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:492
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:493
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "File type"
 msgstr "文件类型"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:508
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:509
 msgid "ETA"
 msgstr "预计剩余时间"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:510
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:511
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:512
 msgid "Estimated time remaining"
 msgstr "预计剩余时间"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:535
 msgid "RX"
 msgstr "已接收"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:538
 msgid "Downloaded"
 msgstr "已下载"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2804
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2954
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:537
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2818
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
 msgid "Size"
 msgstr "大小"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:565
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:566
 msgid "TX"
 msgstr "已发送"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2822
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2836
 msgid "Upload ratio"
 msgstr "上传率"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:567
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:568
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:569
 msgid "Uploaded"
 msgstr "已上传"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:581
 msgid "RX Rate"
 msgstr "接收速度"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:582
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:583
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:584
 msgid "Down Rate"
 msgstr "下载速度"
 
 #. Translators: Please keep short or translate as " "
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:595
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:596
 msgid "TX Rate"
 msgstr "发送速度"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:597
 #: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:598
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:599
 msgid "Up Rate"
 msgstr "上传速度"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:614
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:615
 msgid "Stop all torrents and the I2P tunnel"
 msgstr "停止全部种子及I2P隧道"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:616
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:617
 msgid "Stop All"
 msgstr "停止全部"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:628
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:629
 msgid "Start all stopped torrents"
 msgstr "启动所有已停止的种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:630
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:644
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:631
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:645
 msgid "Start All"
 msgstr "启动全部"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:642
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:643
 msgid "Start all torrents and the I2P tunnel"
 msgstr "启动全部种子及I2P隧道"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:667
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:668
 msgid "No torrents loaded."
 msgstr "未载入任何种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:673
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:674
 msgid "Totals"
 msgstr "总计"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:675
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:676
 #, java-format
 msgid "1 torrent"
 msgid_plural "{0} torrents"
 msgstr[0] "{0}个种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:680
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:681
 #, java-format
 msgid "1 connected peer"
 msgid_plural "{0} connected peers"
 msgstr[0] "{0}个已连接用户"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:687
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:688
 #, java-format
 msgid "1 DHT peer"
 msgid_plural "{0} DHT peers"
 msgstr[0] "{0}个DHT节点"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:695
+msgid "Dest"
+msgstr "目标"
+
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First"
 msgstr "首页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:811
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:823
 msgid "First page"
 msgstr "第一页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Prev"
 msgstr "前页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:821
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:833
 msgid "Previous page"
 msgstr "上一页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next"
 msgstr "下页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:854
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:866
 msgid "Next page"
 msgstr "下一页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last"
 msgstr "末页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:862
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:874
 msgid "Last page"
 msgstr "最后一页"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:948
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:960
 msgid "Data directory cannot be created"
 msgstr "无法创建数据目录"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:958
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1163
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:970
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1176
 #, java-format
 msgid "Cannot add torrent {0} inside another torrent: {1}"
 msgstr "无法添加内含另一个种子的种子 {0}:{1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:973
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:985
 #, java-format
 msgid "Invalid URL: Must start with \"http://\", \"{0}\", or \"{1}\""
 msgstr "无效链接 - 链接必须以“http://”,“{0}”或“{1}”开头"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1014
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1026
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
 #, java-format
 msgid "Magnet deleted: {0}"
 msgstr "Magnet 已删除:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1022
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1061
 #, java-format
 msgid "Torrent file deleted: {0}"
 msgstr "种子文件已删除:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1041
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1053
 #, java-format
 msgid "Download deleted: {0}"
 msgstr "下载已删除: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1070
 #, java-format
 msgid "Data file deleted: {0}"
 msgstr "数据文件已删除:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1057
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1072
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1081
 #, java-format
 msgid "Data file could not be deleted: {0}"
 msgstr "无法删除数据文件:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1084
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1097
 #, java-format
 msgid "Directory could not be deleted: {0}"
 msgstr "无法删除目录:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1104
 #, java-format
 msgid "Directory deleted: {0}"
 msgstr "目录已经删除: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1142
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1155
 #, java-format
 msgid "Cannot add a torrent ending in \".torrent\": {0}"
 msgstr "无法添加一个以 \".torrent\" 结尾的种子: {0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1147
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1160
 #, java-format
 msgid "Torrent with this name is already running: {0}"
 msgstr "此名称的种子已在运行:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1153
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1166
 #, java-format
 msgid "Cannot add a torrent including an I2P directory: {0}"
 msgstr "无法添加包含一个 I2P 目录的种子:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1168
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1181
 #, java-format
 msgid "Cannot add torrent {0} including another torrent: {1}"
 msgstr "无法添加包含另一个种子的种子 {0}:{1}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1194
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
 msgid "Error - Cannot include alternate trackers without a primary tracker"
 msgstr "错误 - 缺少主Tracker则无法添加替换Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1207
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1220
 msgid "Error - Cannot mix private and public trackers in a torrent"
 msgstr "错误 - PT和公共Tracker无法在同一种子中混用。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1229
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1242
 #, java-format
 msgid "Torrent created for \"{0}\""
 msgstr "种子创建成功\"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1231
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1244
 #, java-format
 msgid ""
 "Many I2P trackers require you to register new torrents before seeding - "
 "please do so before starting \"{0}\""
 msgstr "多数I2PTracker需要用户在做种前注册新种子 - 请在启动 \"{0}\"前到所使用的Tracker进行注册。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1233
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1246
 #, java-format
 msgid "Error creating a torrent for \"{0}\""
 msgstr "创建种子时发生错误 \"{0}\""
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1250
 #, java-format
 msgid "Cannot create a torrent for the nonexistent data: {0}"
 msgstr "无法为不存在的数据文件创建种子:{0}"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1240
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1253
 msgid "Error creating torrent - you must enter a file or directory"
 msgstr "创建种子时发生错误 - 必须指定文件或文件夹"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2392
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2406
 msgid "Delete selected"
 msgstr "删除选中项目"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1271
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2394
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1284
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2408
 msgid "Save tracker configuration"
 msgstr "保存 Tracker 设置"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1301
 msgid "Removed"
 msgstr "已删除"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1320
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2391
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2393
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1333
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2405
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2407
 msgid "Add tracker"
 msgstr "添加 Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1343
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1346
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1356
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1359
 msgid "Enter valid tracker name and URLs"
 msgstr "请输入有效的 Tracker 名称与链接"
 
 #. "<input type=\"reset\" class=\"cancel\"
-#. value=\"").append(_("Cancel")).append("\">\n" +
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1348
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
+#. value=\"").append(_t("Cancel")).append("\">\n" +
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1361
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2410
 msgid "Restore defaults"
 msgstr "恢复默认值"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1351
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1364
 msgid "Restored default trackers"
 msgstr "恢复默认 Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1459
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1460
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1472
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1473
 msgid "Checking"
 msgstr "正在检查"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1462
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1463
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1475
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1476
 msgid "Allocating"
 msgstr "正在分配空间"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1477
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1486
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1499
 msgid "Tracker Error"
 msgstr "Tracker错误"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1479
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1509
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1514
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1525
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1536
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1492
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1549
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1554
 #, java-format
 msgid "1 peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0}个用户"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1489
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1490
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1503
 msgid "Starting"
 msgstr "正在启动"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1498
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1511
 msgid "Seeding"
 msgstr "正做种"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1502
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1516
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1517
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2817
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3033
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1515
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1529
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1530
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2831
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3047
 msgid "Complete"
 msgstr "完成"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1521
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1522
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1527
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1528
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1534
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1535
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1540
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1541
 msgid "OK"
-msgstr "确定"
+msgstr "正常"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1532
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1533
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1538
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1539
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1545
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1546
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1552
 msgid "Stalled"
 msgstr "等待"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1543
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1544
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1547
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1548
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1556
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1557
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1560
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1561
 msgid "No Peers"
 msgstr "没有用户"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1550
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1551
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1563
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1564
 msgid "Stopped"
 msgstr "已停用"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1580
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1593
 msgid "Torrent details"
 msgstr "种子详情"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1615
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1628
 msgid "View files"
 msgstr "浏览文件"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1617
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1630
 msgid "Open file"
 msgstr "打开文件"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1669
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1682
 msgid "Stop the torrent"
 msgstr "停止种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1671
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
 msgid "Stop"
 msgstr "停止"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1684
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1697
 msgid "Start the torrent"
 msgstr "启动种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1686
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
 msgid "Start"
 msgstr "启动"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1699
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1712
 msgid "Remove the torrent from the active list, deleting the .torrent file"
 msgstr "取消下载任务并删除对应种子文件。"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1704
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1717
 #, java-format
 msgid ""
 "Are you sure you want to delete the file \\''{0}\\'' (downloaded data will "
 "not be deleted) ?"
 msgstr "你确定你要删除文件 \\“{0} \\” (下载的数据不会被删除)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1708
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
 msgid "Remove"
 msgstr "移除"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1721
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1734
 msgid "Delete the .torrent file and the associated data file(s)"
 msgstr "删除种子及所下载的文件"
 
 #. Can't figure out how to escape double quotes inside the onclick string.
 #. Single quotes in translate strings with parameters must be doubled.
 #. Then the remaining single quote must be escaped
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1726
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1739
 #, java-format
 msgid ""
 "Are you sure you want to delete the torrent \\''{0}\\'' and all downloaded "
 "data?"
 msgstr "您确定要删除种子“{0}”(下载的数据文件会一并被删除)?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1730
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1743
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2364
 msgid "Delete"
 msgstr "删除"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1766
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1779
 msgid "Unknown"
 msgstr "未知"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1778
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1791
 msgid "Seed"
 msgstr "种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1801
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1814
 msgid "Uninteresting (The peer has no pieces we need)"
 msgstr "无需要部分"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1803
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1816
 msgid "Choked (The peer is not allowing us to request pieces)"
 msgstr "拒绝请求"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1823
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1836
 msgid "Uninterested (We have no pieces the peer needs)"
 msgstr "无需要部分"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1825
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1838
 msgid "Choking (We are not allowing the peer to request pieces)"
 msgstr "拒绝请求"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1941
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1954
 #, java-format
 msgid "Details at {0} tracker"
 msgstr "Tracker {0} 上的详细信息"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1958
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:1971
 msgid "Info"
 msgstr "信息"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2031
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2044
 msgid "Add Torrent"
 msgstr "添加种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2034
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2047
 msgid "From URL"
 msgstr "从URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2037
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2050
 msgid ""
 "Enter the torrent file download URL (I2P only), magnet link, maggot link, or"
 " info hash"
 msgstr "输入种子文件的下载链接(仅支持I2P内网链接),magnet, maggot 链接或信息散列值"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2042
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
 msgid "Add torrent"
 msgstr "添加种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2046
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2059
 msgid "Data dir"
 msgstr "数据目录"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2049
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2062
 #, java-format
 msgid "Enter the directory to save the data in (default {0})"
 msgstr "请输入保存数据的目录(默认 {0})"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2053
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2066
 #, java-format
 msgid "You can also copy .torrent files to: {0}."
 msgstr "您也可以将.torrent文件复制到: {0}."
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2055
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
 msgid "Removing a .torrent will cause it to stop."
-msgstr "删除种子文件将导致该下载任务中止。"
+msgstr "移除一个种子文件 (.torrent) 将导致它中止。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2068
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2081
 msgid "Create Torrent"
 msgstr "创建种子"
 
 #. out.write("From file: <input type=\"file\" name=\"newFile\" size=\"50\"
 #. value=\"" + newFile + "\" /><br>\n");
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2071
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2084
 msgid "Data to seed"
 msgstr "做种数据"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2075
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2088
 #, java-format
 msgid "File or directory to seed (full path or within the directory {0} )"
 msgstr "要做种的文件或目录(完整路径或包含在 {0} 目录中)"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2078
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2323
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2091
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2337
 msgid "Trackers"
 msgstr "Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2080
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2093
 msgid "Primary"
 msgstr "主 Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2082
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2095
 msgid "Alternates"
 msgstr "备选 Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2085
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2098
 msgid "Create torrent"
 msgstr "创建种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2103
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2116
 msgid "none"
 msgstr "æ— "
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2140
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2153
 msgid "Data directory"
 msgstr "数据文件夹"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2144
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2158
 msgid "Files readable by all"
 msgstr "文件对所有人可读"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2148
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2162
 msgid "If checked, other users may access the downloaded files"
 msgstr "选中后,其他用户可以访问您下载的文件。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2152
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2166
 msgid "Auto start torrents"
 msgstr "自动开始种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2156
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2170
 msgid "If checked, automatically start torrents that are added"
 msgstr "选中后Snark将自动启动已添加的所有种子。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2160
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
 msgid "Theme"
 msgstr "主题"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2174
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2188
 msgid "Refresh time"
 msgstr "刷新时间"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2187
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
 msgid "Never"
 msgstr "从不"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2193
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2207
 msgid "Startup delay"
 msgstr "启动延迟"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2195
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2209
 msgid "minutes"
 msgstr "分"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2199
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2213
 msgid "Page size"
 msgstr "页面容量"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2201
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2215
 msgid "torrents"
 msgstr "种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2225
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2239
 msgid "Total uploader limit"
 msgstr "限制总上传种子数为"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2228
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2242
 msgid "peers"
 msgstr "用户"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2232
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2246
 msgid "Up bandwidth limit"
 msgstr "上传带宽限制"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2235
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
 msgid "Half available bandwidth recommended."
 msgstr "推荐设置为可用带宽的一半。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2237
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2251
 msgid "View or change router bandwidth"
 msgstr "浏览或修改路由器带宽"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2241
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2255
 msgid "Use open trackers also"
 msgstr "同时使用OpenTracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2245
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2259
 msgid ""
 "If checked, announce torrents to open trackers as well as the tracker listed"
 " in the torrent file"
 msgstr "选择后在OpenTracker及种子文件中的Tracker上同时发布。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2249
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2263
 msgid "Enable DHT"
 msgstr "启用 DHT"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2253
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2267
 msgid "If checked, use DHT"
 msgstr "如果选中,则使用 DHT。"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2269
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
 msgid "Inbound Settings"
 msgstr "入站设置"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2275
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2289
 msgid "Outbound Settings"
 msgstr "出站设置"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2283
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2297
 msgid "I2CP host"
 msgstr "I2CP主机"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2288
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2302
 msgid "I2CP port"
 msgstr "I2CP端口"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2303
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2317
 msgid "I2CP options"
 msgstr "I2CP选项"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2308
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2322
 msgid "Save configuration"
 msgstr "保存设置"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2328
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2939
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2342
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2953
 msgid "Name"
 msgstr "名称"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2330
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2344
 msgid "Website URL"
 msgstr "网站 URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2332
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2346
 msgid "Standard"
 msgstr "标准"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2334
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3066
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2348
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3080
 msgid "Open"
 msgstr "打开"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2336
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2350
 msgid "Private"
 msgstr "私有"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2338
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2352
 msgid "Announce URL"
 msgstr "发布 URL"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2382
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2396
 msgid "Add"
 msgstr "添加"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2425
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2439
 #, java-format
 msgid "Invalid magnet URL {0}"
 msgstr "磁性链接 {0} 无效"
 
 #. * dummies for translation
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2433
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2447
 #, java-format
 msgid "1 hop"
 msgid_plural "{0} hops"
 msgstr[0] "{0}è·³"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2434
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2448
 #, java-format
 msgid "1 tunnel"
 msgid_plural "{0} tunnels"
 msgstr[0] "{0}隧道"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2677
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2691
 msgid "Torrent file"
 msgstr "Torrent文件"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2685
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2699
 msgid "Data location"
 msgstr "数据位置"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2694
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2708
 msgid "Info hash"
 msgstr "信息哈希"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2713
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2727
 msgid "Primary Tracker"
 msgstr "主 Tracker"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2722
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2736
 msgid "Tracker List"
 msgstr "Tracker 列表"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2747
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2761
 msgid "Comment"
 msgstr "评论"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2757
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2771
 msgid "Created"
 msgstr "已创建"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2768
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2782
 msgid "Created By"
 msgstr "创建者"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2780
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2794
 msgid "Magnet link"
 msgstr "Magnet磁性链接"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2793
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2807
 msgid "Private torrent"
 msgstr "私有种子"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2813
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2827
 msgid "Completion"
 msgstr "完成"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2842
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2968
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2856
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2982
 msgid "Remaining"
 msgstr "剩余"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2852
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2866
 msgid "Files"
 msgstr "文件"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2859
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2873
 msgid "Pieces"
 msgstr "分块数量"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2865
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2879
 msgid "Piece size"
 msgstr "分块大小"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2919
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2933
 msgid "Directory"
 msgstr "文件夹"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2978
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2992
 msgid "Priority"
 msgstr "优先级"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:2990
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3004
 msgid "Up to higher level directory"
 msgstr "上一层文件夹"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3024
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3038
 msgid "Torrent not found?"
 msgstr "种子未找到"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3030
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
 msgid "File not found in torrent?"
 msgstr "种子中没有发现文件?"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3043
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3057
 msgid "complete"
 msgstr "完成"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3044
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3058
 msgid "remaining"
 msgstr "剩余"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3090
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3104
 msgid "High"
 msgstr "高"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3095
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3109
 msgid "Normal"
 msgstr "普通"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3100
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
 msgid "Skip"
 msgstr "跳过"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3110
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3124
 msgid "Set all high"
 msgstr "设置所有为高"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3112
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3126
 msgid "Set all normal"
 msgstr "设置所有为正常"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3114
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3128
 msgid "Skip all"
 msgstr "忽略所有"
 
-#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3115
+#: ../java/src/org/klomp/snark/web/I2PSnarkServlet.java:3129
 msgid "Save priorities"
 msgstr "保存优先级"
diff --git a/apps/i2psnark/mime.properties b/apps/i2psnark/mime.properties
index 6739efc495a14494fd12aad148b43af9cfd60172..5a1157e0a94b770c49a12429234d98972f0a0418 100644
--- a/apps/i2psnark/mime.properties
+++ b/apps/i2psnark/mime.properties
@@ -11,6 +11,7 @@ iso	= application/x-iso9660-image
 m4a	= audio/mp4a-latm
 m4b	= audio/mp4a-latm
 m4v	= video/x-m4v
+mka	= audio/x-matroska
 mkv	= video/x-matroska
 mobi	= application/x-mobipocket-ebook
 mp4	= video/mp4
@@ -31,3 +32,4 @@ war	= application/java-archive
 webm	= video/webm
 wma	= audio/x-ms-wma
 wmv	= video/x-ms-wmv
+xz	= application/x-xz
diff --git a/apps/i2psnark/readme.txt.snark b/apps/i2psnark/readme-snark.txt
similarity index 100%
rename from apps/i2psnark/readme.txt.snark
rename to apps/i2psnark/readme-snark.txt
diff --git a/apps/i2psnark/readme-standalone.txt b/apps/i2psnark/readme-standalone.txt
index 9bc1ddf66e27ca078979af777cbad14dba2243e3..ced04e941f393be0e0ce10a9dfa2a4027d25537d 100644
--- a/apps/i2psnark/readme-standalone.txt
+++ b/apps/i2psnark/readme-standalone.txt
@@ -1,6 +1,4 @@
-To run I2PSnark from the command line, run "java -jar lib/i2psnark.jar", but
-to run it with the web UI, run "launch-i2psnark".  I2PSnark is
-GPL'ed software, based on Snark (http://www.klomp.org/) to run on top of I2P
-(http://www.i2p2.de/) within a webserver (such as the bundled Jetty from
-http://jetty.mortbay.org/).  For more information about I2PSnark, get in touch
-with the folks at http://forum.i2p2.de/
+i2psnark is packaged as a webapp running in the router console.
+Command line and standalone operation of i2psnark are not currently supported.
+See http://trac.i2p2.i2p/ticket/1191 or http://trac.i2p2.de/ticket/1191
+for the status of restoring standalone support.
diff --git a/apps/i2psnark/readme.txt b/apps/i2psnark/readme.txt
index 3970e3cba14d7a58ed94d2a16f0a70e55cf5a131..2680442faeca94bc5f2a2581a07f3839dfb7226f 100644
--- a/apps/i2psnark/readme.txt
+++ b/apps/i2psnark/readme.txt
@@ -1,11 +1,9 @@
-This is an I2P port of snark [http://klomp.org/snark], a GPL'ed bittorrent client
+This is i2psnark, an I2P port of snark http://klomp.org/snark/ , a GPLv2 bittorrent client.
+It contains significant enhancements including a web UI and support for
+multitorrent, magnet, PEX and DHT.
 
-The build in tracker has been removed for simplicity.
+i2psnark is packaged as a webapp running in the router console.
 
-Example usage:
-  java -jar lib/i2psnark.jar myFile.torrent
-
-or, a more verbose setting:
-  java -jar lib/i2psnark.jar --eepproxy 127.0.0.1 4444 \
-       --i2cp 127.0.0.1 7654 "inbound.length=2 outbound.length=2" \
-       --debug 6 myFile.torrent
+See http://i2p-projekt.i2p/en/docs/applications/bittorrent
+or https://geti2p.net/en/docs/applications/bittorrent
+for the specification of the protocols for bittorrent over I2P.
diff --git a/apps/i2ptunnel/java/bundle-messages-proxy.sh b/apps/i2ptunnel/java/bundle-messages-proxy.sh
index 8ffdc5a9ebb73542d75a60efb56b2c6c691b3d75..a777a5eed954039a22017145fdd4592d598077a6 100755
--- a/apps/i2ptunnel/java/bundle-messages-proxy.sh
+++ b/apps/i2ptunnel/java/bundle-messages-proxy.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="../java/build/Proxy.java ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java"
@@ -62,16 +62,16 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# intl.title("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ \
+	                 --keyword=_t \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/i2ptunnel/java/bundle-messages.sh b/apps/i2ptunnel/java/bundle-messages.sh
index a8769f0dcc3e7dc1896c87271c8e8374bcf6f02f..0b426cb4d25ba24dccdc9de847fe12f5b7a3cbe5 100755
--- a/apps/i2ptunnel/java/bundle-messages.sh
+++ b/apps/i2ptunnel/java/bundle-messages.sh
@@ -29,7 +29,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="../java/src/net/i2p/i2ptunnel/web ../jsp/WEB-INF"
@@ -61,16 +61,16 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# intl.title("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
+	                 --keyword=_t --keyword=_x --keyword=intl._ --keyword=intl.title \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java
index 291d903db6f31c6e5ccdc794ab039b3264bbfa5b..e0798567d887fdbd8847c3b4d01d64682a91de6f 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/GunzipOutputStream.java
@@ -25,7 +25,7 @@ class GunzipOutputStream extends InflaterOutputStream {
     private final CRC32 _crc32;
     private final byte _buf1[] = new byte[1];
     private boolean _complete;
-    private byte _footer[] = new byte[FOOTER_SIZE];
+    private final byte _footer[] = new byte[FOOTER_SIZE];
     private long _bytesReceived;
     private long _bytesReceivedAtCompletion;
     
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
index 25f7fcf6805d7a0cbc16971462512ee65203b926..2fc344a71465a1bfcdced5e24b3fe3012fcb5ec0 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java
@@ -15,6 +15,7 @@ import java.util.Locale;
 
 import net.i2p.I2PAppContext;
 import net.i2p.data.ByteArray;
+import net.i2p.data.DataHelper;
 import net.i2p.util.ByteCache;
 import net.i2p.util.Log;
 
@@ -38,7 +39,10 @@ class HTTPResponseOutputStream extends FilterOutputStream {
     private final byte _buf1[];
     protected boolean _gzip;
     protected long _dataExpected;
+    /** lower-case, trimmed */
     protected String _contentType;
+    /** lower-case, trimmed */
+    protected String _contentEncoding;
 
     private static final int CACHE_SIZE = 8*1024;
     private static final ByteCache _cache = ByteCache.getInstance(8, CACHE_SIZE);
@@ -145,12 +149,12 @@ class HTTPResponseOutputStream extends FilterOutputStream {
         for (int i = 0; i < _headerBuffer.getValid(); i++) {
             if (isNL(_headerBuffer.getData()[i])) {
                 if (lastEnd == -1) {
-                    responseLine = new String(_headerBuffer.getData(), 0, i+1); // includes NL
+                    responseLine = DataHelper.getUTF8(_headerBuffer.getData(), 0, i+1); // includes NL
                     responseLine = filterResponseLine(responseLine);
                     responseLine = (responseLine.trim() + "\r\n");
                     if (_log.shouldLog(Log.INFO))
                         _log.info("Response: " + responseLine.trim());
-                    out.write(responseLine.getBytes());
+                    out.write(DataHelper.getUTF8(responseLine));
                 } else {
                     for (int j = lastEnd+1; j < i; j++) {
                         if (_headerBuffer.getData()[j] == ':') {
@@ -158,22 +162,22 @@ class HTTPResponseOutputStream extends FilterOutputStream {
                             int valLen = i-(j+1);
                             if ( (keyLen <= 0) || (valLen < 0) )
                                 throw new IOException("Invalid header @ " + j);
-                            String key = new String(_headerBuffer.getData(), lastEnd+1, keyLen);
-                            String val = null;
+                            String key = DataHelper.getUTF8(_headerBuffer.getData(), lastEnd+1, keyLen);
+                            String val;
                             if (valLen == 0)
                                 val = "";
                             else
-                                val = new String(_headerBuffer.getData(), j+2, valLen).trim();
+                                val = DataHelper.getUTF8(_headerBuffer.getData(), j+2, valLen).trim();
                             
                             if (_log.shouldLog(Log.INFO))
                                 _log.info("Response header [" + key + "] = [" + val + "]");
                             
                             String lcKey = key.toLowerCase(Locale.US);
                             if ("connection".equals(lcKey)) {
-                                out.write("Connection: close\r\n".getBytes());
+                                out.write(DataHelper.getASCII("Connection: close\r\n"));
                                 connectionSent = true;
                             } else if ("proxy-connection".equals(lcKey)) {
-                                out.write("Proxy-Connection: close\r\n".getBytes());
+                                out.write(DataHelper.getASCII("Proxy-Connection: close\r\n"));
                                 proxyConnectionSent = true;
                             } else if ("content-encoding".equals(lcKey) && "x-i2p-gzip".equals(val.toLowerCase(Locale.US))) {
                                 _gzip = true;
@@ -188,7 +192,10 @@ class HTTPResponseOutputStream extends FilterOutputStream {
                                     } catch (NumberFormatException nfe) {}
                                 } else if ("content-type".equals(lcKey)) {
                                     // save for compress decision on server side
-                                    _contentType = val;
+                                    _contentType = val.toLowerCase(Locale.US);
+                                } else if ("content-encoding".equals(lcKey)) {
+                                    // save for compress decision on server side
+                                    _contentEncoding = val.toLowerCase(Locale.US);
                                 } else if ("set-cookie".equals(lcKey)) {
                                     String lcVal = val.toLowerCase(Locale.US);
                                     if (lcVal.contains("domain=b32.i2p") ||
@@ -202,7 +209,7 @@ class HTTPResponseOutputStream extends FilterOutputStream {
                                         break;
                                     }
                                 }
-                                out.write((key.trim() + ": " + val.trim() + "\r\n").getBytes());
+                                out.write(DataHelper.getUTF8(key.trim() + ": " + val + "\r\n"));
                             }
                             break;
                         }
@@ -213,9 +220,9 @@ class HTTPResponseOutputStream extends FilterOutputStream {
         }
         
         if (!connectionSent)
-            out.write("Connection: close\r\n".getBytes());
+            out.write(DataHelper.getASCII("Connection: close\r\n"));
         if (!proxyConnectionSent)
-            out.write("Proxy-Connection: close\r\n".getBytes());
+            out.write(DataHelper.getASCII("Proxy-Connection: close\r\n"));
             
         finishHeaders();
 
@@ -236,7 +243,7 @@ class HTTPResponseOutputStream extends FilterOutputStream {
     protected boolean shouldCompress() { return _gzip; }
     
     protected void finishHeaders() throws IOException {
-        out.write("\r\n".getBytes()); // end of the headers
+        out.write(DataHelper.getASCII("\r\n")); // end of the headers
     }
     
     @Override
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
index 621e11a294973b2f865f487f92fd5fd5adada674..7c006207558158459b6e03ee312204a91a47c005 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java
@@ -35,7 +35,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
-import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -1605,7 +1604,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
     private void runRun(String args[], Logging l) {
         if (args.length == 1) {
             try {
-                BufferedReader br = new BufferedReader(new FileReader(args[0]));
+                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(args[0]), "UTF-8"));
                 String line;
                 while ((line = br.readLine()) != null) {
                     runCommand(line, l);
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java
index 2d4d7e0dd06f13eca77b71032beb39c9f4b2b491..32f8213c6a712f217ec604d7a1a11b7d839c7427 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java
@@ -25,12 +25,14 @@ import javax.net.ssl.SSLServerSocketFactory;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
+import net.i2p.client.I2PClient;
 import net.i2p.client.I2PSession;
 import net.i2p.client.I2PSessionException;
 import net.i2p.client.streaming.I2PSocket;
 import net.i2p.client.streaming.I2PSocketManager;
 import net.i2p.client.streaming.I2PSocketManagerFactory;
 import net.i2p.client.streaming.I2PSocketOptions;
+import net.i2p.crypto.SigType;
 import net.i2p.data.Destination;
 import net.i2p.util.EventDispatcher;
 import net.i2p.util.I2PAppThread;
@@ -90,8 +92,11 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
     public static final String PROP_USE_SSL = I2PTunnelServer.PROP_USE_SSL;
 
     /**
-     *  This constructor always starts the tunnel (ignoring the i2cp.delayOpen option).
-     *  It is used to add a client to an existing socket manager.
+     * This constructor is used to add a client to an existing socket manager.
+     * <p/>
+     * As of 0.9.21 this does NOT open the local socket. You MUST call
+     * {@link #startRunning()} for that. The local socket will be opened
+     * immediately (ignoring the <code>i2cp.delayOpen</code> option).
      *
      *  @param localPort if 0, use any port, get actual port selected with getLocalPort()
      *  @param sktMgr the existing socket manager
@@ -108,20 +113,19 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
         this.l = l;
         _ownDest = true; // == ! shared client
         _context = tunnel.getContext();
-        _context.statManager().createRateStat("i2ptunnel.client.closeBacklog", "How many pending sockets remain when we close one due to backlog?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("i2ptunnel.client.closeNoBacklog", "How many pending sockets remain when it was removed prior to backlog timeout?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("i2ptunnel.client.manageTime", "How long it takes to accept a socket and fire it into an i2ptunnel runner (or queue it for the pool)?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("i2ptunnel.client.buildRunTime", "How long it takes to run a queued socket into an i2ptunnel runner?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        initStats();
         _log = _context.logManager().getLog(getClass());
-
-        startup();
     }
 
     /**
      * The main constructor.
-     *
-     * As of 0.9.20 this is fast, and does NOT connect the manager to the router,
+     * <p/>
+     * As of 0.9.21 this is fast, and does NOT connect the manager to the router,
      * or open the local socket. You MUST call startRunning() for that.
+     * <p/>
+     * (0.9.20 claimed to be fast, but due to a bug it DID connect the manager
+     * to the router. It did NOT open the local socket however, so it was still
+     * necessary to call startRunning() for that.)
      *
      * @param localPort if 0, use any port, get actual port selected with getLocalPort()
      * @throws IllegalArgumentException if the I2CP configuration is b0rked so
@@ -135,9 +139,13 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
 
     /**
      * Use this to build a client with a persistent private key.
-     *
-     * As of 0.9.20 this is fast, and does NOT connect the manager to the router,
+     * <p/>
+     * As of 0.9.21 this is fast, and does NOT connect the manager to the router,
      * or open the local socket. You MUST call startRunning() for that.
+     * <p/>
+     * (0.9.20 claimed to be fast, but due to a bug it DID connect the manager
+     * to the router. It did NOT open the local socket however, so it was still
+     * necessary to call startRunning() for that.)
      *
      * @param localPort if 0, use any port, get actual port selected with getLocalPort()
      * @param pkf Path to the private key file, or null to generate a transient key
@@ -156,10 +164,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
         _handlerName = handlerName;
 
         _context = tunnel.getContext();
-        _context.statManager().createRateStat("i2ptunnel.client.closeBacklog", "How many pending sockets remain when we close one due to backlog?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("i2ptunnel.client.closeNoBacklog", "How many pending sockets remain when it was removed prior to backlog timeout?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("i2ptunnel.client.manageTime", "How long it takes to accept a socket and fire it into an i2ptunnel runner (or queue it for the pool)?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
-        _context.statManager().createRateStat("i2ptunnel.client.buildRunTime", "How long it takes to run a queued socket into an i2ptunnel runner?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        initStats();
         _log = _context.logManager().getLog(getClass());
 
         // normalize path so we can find it
@@ -178,29 +183,15 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
             tunnel.getClientOptions().setProperty("i2cp.dontPublishLeaseSet", "true");
         if (tunnel.getClientOptions().getProperty("i2p.streaming.answerPings") == null)
             tunnel.getClientOptions().setProperty("i2p.streaming.answerPings", "false");
-        
-        boolean openNow = !Boolean.parseBoolean(tunnel.getClientOptions().getProperty("i2cp.delayOpen"));
-        if (openNow) {
-            while (sockMgr == null) {
-                verifySocketManager();
-                if (sockMgr == null) {
-                    _log.error("Unable to connect to router and build tunnels for " + handlerName);
-                    // FIXME there is a loop in buildSocketManager(), do we really need another one here?
-                    // no matter, buildSocketManager() now throws an IllegalArgumentException
-                    try { Thread.sleep(10*1000); } catch (InterruptedException ie) {}
-                }
-            }
-            // can't be null unless we limit the loop above
-            //if (sockMgr == null) {
-            //    l.log("Invalid I2CP configuration");
-            //    throw new IllegalArgumentException("Socket manager could not be created");
-            //}
-            l.log("Tunnels ready for client: " + handlerName);
+    }
 
-        } // else delay creating session until createI2PSocket() is called
-        
+    private void initStats() {
+        _context.statManager().createRateStat("i2ptunnel.client.closeBacklog", "How many pending sockets remain when we close one due to backlog?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        _context.statManager().createRateStat("i2ptunnel.client.closeNoBacklog", "How many pending sockets remain when it was removed prior to backlog timeout?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        _context.statManager().createRateStat("i2ptunnel.client.manageTime", "How long it takes to accept a socket and fire it into an i2ptunnel runner (or queue it for the pool)?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
+        _context.statManager().createRateStat("i2ptunnel.client.buildRunTime", "How long it takes to run a queued socket into an i2ptunnel runner?", "I2PTunnel", new long[] { 60*1000, 10*60*1000, 60*60*1000 });
     }
-    
+
     /**
      * Create the manager if it doesn't exist, AND connect it to the router and
      * build tunnels.
@@ -298,6 +289,10 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
                 _socketManagerState = SocketManagerState.INIT;
                 // We could be here a LONG time, holding the lock
                 socketManager = buildSocketManager(tunnel, pkf);
+                // FIXME may not be the right place for this
+                I2PSession sub = addSubsession(tunnel);
+                if (sub != null && _log.shouldLog(Log.WARN))
+                    _log.warn("Added subsession " + sub);
             } else {
                 if (_log.shouldLog(Log.INFO))
                     _log.info(tunnel.getClientOptions().getProperty("inbound.nickname") + ": Not building a new socket manager since the old one is open [s=" + s + "]");
@@ -310,10 +305,41 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
             if (_log.shouldLog(Log.INFO))
                 _log.info(tunnel.getClientOptions().getProperty("inbound.nickname") + ": Building a new socket manager since there is no other one");
             socketManager = buildSocketManager(tunnel, pkf);
+            I2PSession sub = addSubsession(tunnel);
+            if (sub != null && _log.shouldLog(Log.WARN))
+                _log.warn("Added subsession " + sub);
         }
         return socketManager;
     }
 
+    /**
+     *  Add a subsession to a shared client if necessary.
+     *
+     *  @since 0.9.20
+     */
+    protected static synchronized I2PSession addSubsession(I2PTunnel tunnel) {
+        I2PSession sess = socketManager.getSession();
+        if (sess.getMyDestination().getSigType() == SigType.DSA_SHA1)
+            return null;
+        Properties props = new Properties();
+        props.putAll(tunnel.getClientOptions());
+        String name = props.getProperty("inbound.nickname");
+        if (name != null)
+            props.setProperty("inbound.nickname", name + " (DSA)");
+        name = props.getProperty("outbound.nickname");
+        if (name != null)
+            props.setProperty("outbound.nickname", name + " (DSA)");
+        props.setProperty(I2PClient.PROP_SIGTYPE, "DSA_SHA1");
+        try {
+            return socketManager.addSubsession(null, props);
+        } catch (I2PSessionException ise) {
+            Log log = tunnel.getContext().logManager().getLog(I2PTunnelClientBase.class);
+            if (log.shouldLog(Log.WARN))
+                log.warn("Failed to add subssession", ise);
+            return null;
+        }
+    }
+
     /**
      *  Kill the shared client, so that on restart in android
      *  we won't latch onto the old one
@@ -536,7 +562,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
 
         if (open && listenerReady) {
             boolean openNow = !Boolean.parseBoolean(getTunnel().getClientOptions().getProperty("i2cp.delayOpen"));
-            if (openNow)
+            if (openNow || chained)
                 l.log("Client ready, listening on " + getTunnel().listenHost + ':' + localPort);
             else
                 l.log("Client ready, listening on " + getTunnel().listenHost + ':' + localPort + ", delaying tunnel open until required");
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
index 74fcaccb1c18660ba09b6b3f93be26d2a2fc8b9a..4183ce39917fe0906137b3d3a64e851f950a59c5 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
@@ -631,8 +631,8 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
                                             String header = getErrorPage("ahelper-notfound", ERR_AHELPER_NOTFOUND);
                                             try {
                                                 out.write(header.getBytes("UTF-8"));
-                                                out.write(("<p>" + _("This seems to be a bad destination:") + " " + ahelperKey + " " +
-                                                           _("i2paddresshelper cannot help you with a destination like that!") +
+                                                out.write(("<p>" + _t("This seems to be a bad destination:") + " " + ahelperKey + " " +
+                                                           _t("i2paddresshelper cannot help you with a destination like that!") +
                                                            "</p>").getBytes("UTF-8"));
                                                 writeFooter(out);
                                                 reader.drain();
@@ -706,7 +706,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
                                         String conflictURL = conflictURI.toASCIIString();
                                         String header = getErrorPage("ahelper-conflict", ERR_AHELPER_CONFLICT);
                                         out.write(header.getBytes("UTF-8"));
-                                        out.write(_("To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>.",
+                                        out.write(_t("To visit the destination in your host database, click <a href=\"{0}\">here</a>. To visit the conflicting addresshelper destination, click <a href=\"{1}\">here</a>.",
                                                     trustedURL, conflictURL).getBytes("UTF-8"));
                                         out.write("</p></div>".getBytes("UTF-8"));
                                         writeFooter(out);
@@ -881,7 +881,9 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
                     } else if(lowercaseLine.startsWith("accept")) {
                         // strip the accept-blah headers, as they vary dramatically from
                         // browser to browser
-                        if(!Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_ACCEPT))) {
+                        // But allow Accept-Encoding: gzip, deflate
+                        if(!lowercaseLine.startsWith("accept-encoding: ") &&
+                           !Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_ACCEPT))) {
                             line = null;
                             continue;
                         }
@@ -933,8 +935,8 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
                         // according to rfc2616 s14.3, this *should* force identity, even if
                         // an explicit q=0 for gzip doesn't.  tested against orion.i2p, and it
                         // seems to work.
-                        if(!Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_ACCEPT)))
-                            newRequest.append("Accept-Encoding: \r\n");
+                        //if (!Boolean.parseBoolean(getTunnel().getClientOptions().getProperty(PROP_ACCEPT)))
+                        //    newRequest.append("Accept-Encoding: \r\n");
                         if (!usingInternalOutproxy)
                             newRequest.append("X-Accept-Encoding: x-i2p-gzip;q=1.0, identity;q=0.5, deflate;q=0, gzip;q=0, *;q=0\r\n");
                     }
@@ -1116,7 +1118,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
                     header = getErrorPage("dnfb", ERR_DESTINATION_UNKNOWN);
                 } else if(destination.length() == 60 && destination.toLowerCase(Locale.US).endsWith(".b32.i2p")) {
                     header = getErrorPage("nols", ERR_DESTINATION_UNKNOWN);
-                    extraMessage = _("Destination lease set not found");
+                    extraMessage = _t("Destination lease set not found");
                 } else {
                     header = getErrorPage("dnfh", ERR_DESTINATION_UNKNOWN);
                     jumpServers = getTunnel().getClientOptions().getProperty(PROP_JUMP_SERVERS);
@@ -1268,31 +1270,31 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
         Writer out = new BufferedWriter(new OutputStreamWriter(outs, "UTF-8"));
         String header = getErrorPage("ahelper-new", ERR_AHELPER_NEW);
         out.write(header);
-        out.write("<table><tr><td class=\"mediumtags\" align=\"right\">" + _("Host") +
+        out.write("<table><tr><td class=\"mediumtags\" align=\"right\">" + _t("Host") +
                 "</td><td class=\"mediumtags\">" + destination + "</td></tr>\n");
         try {
             String b32 = Base32.encode(SHA256Generator.getInstance().calculateHash(Base64.decode(ahelperKey)).getData());
-            out.write("<tr><td class=\"mediumtags\" align=\"right\">" + _("Base 32") + "</td>" +
+            out.write("<tr><td class=\"mediumtags\" align=\"right\">" + _t("Base 32") + "</td>" +
                     "<td><a href=\"http://" + b32 + ".b32.i2p/\">" + b32 + ".b32.i2p</a></td></tr>");
         } catch(Exception e) {
         }
-        out.write("<tr><td class=\"mediumtags\" align=\"right\">" + _("Destination") + "</td><td>" +
+        out.write("<tr><td class=\"mediumtags\" align=\"right\">" + _t("Destination") + "</td><td>" +
                 "<textarea rows=\"1\" style=\"height: 4em; min-width: 0; min-height: 0;\" cols=\"70\" wrap=\"off\" readonly=\"readonly\" >" +
                 ahelperKey + "</textarea></td></tr></table>\n" +
                 "<hr><div class=\"formaction\">" +
                 // FIXME if there is a query remaining it is lost
                 "<form method=\"GET\" action=\"" + targetRequest + "\">" +
-                "<button type=\"submit\" class=\"go\">" + _("Continue to {0} without saving", destination) + "</button>" +
+                "<button type=\"submit\" class=\"go\">" + _t("Continue to {0} without saving", destination) + "</button>" +
                 "</form>\n<form method=\"GET\" action=\"http://" + LOCAL_SERVER + "/add\">" +
                 "<input type=\"hidden\" name=\"host\" value=\"" + destination + "\">\n" +
                 "<input type=\"hidden\" name=\"dest\" value=\"" + ahelperKey + "\">\n" +
                 "<input type=\"hidden\" name=\"nonce\" value=\"" + _proxyNonce + "\">\n" +
                 "<button type=\"submit\" class=\"accept\" name=\"router\" value=\"router\">" +
-                _("Save {0} to router address book and continue to website", destination) + "</button><br>\n");
+                _t("Save {0} to router address book and continue to website", destination) + "</button><br>\n");
         if(_context.namingService().getName().equals("BlockfileNamingService")) {
             // only blockfile supports multiple books
-            out.write("<br><button type=\"submit\" name=\"master\" value=\"master\">" + _("Save {0} to master address book and continue to website", destination) + "</button><br>\n");
-            out.write("<button type=\"submit\" name=\"private\" value=\"private\">" + _("Save {0} to private address book and continue to website", destination) + "</button>\n");
+            out.write("<br><button type=\"submit\" name=\"master\" value=\"master\">" + _t("Save {0} to master address book and continue to website", destination) + "</button><br>\n");
+            out.write("<button type=\"submit\" name=\"private\" value=\"private\">" + _t("Save {0} to private address book and continue to website", destination) + "</button>\n");
         }
         // Firefox (and others?) don't send referer to meta refresh target, which is
         // what the jump servers use, so this isn't that useful.
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
index 5824f1fc36fb1f2f29bdc73b395f11b669aff386..5e39cf3b8388df891824c91ed1d03c1ddaf4c4cd 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java
@@ -684,7 +684,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
             out.write("</a>");
             if (usingWWWProxy) {
                 out.write("<br><br><b>");
-                out.write(_("HTTP Outproxy"));
+                out.write(_t("HTTP Outproxy"));
                 out.write(":</b> " + wwwProxy);
             }
             if (extraMessage != null) {
@@ -723,7 +723,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
                     if (first) {
                         first = false;
                         out.write("<br><br><h3>");
-                        out.write(_("Click a link below for an address helper from a jump service"));
+                        out.write(_t("Click a link below for an address helper from a jump service"));
                         out.write("</h3>\n");
                     } else {
                         out.write("<br>");
@@ -733,7 +733,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
                     out.write(uri);
                     out.write("\">");
                     // Translators: parameter is a host name
-                    out.write(_("{0} jump service", jumphost));
+                    out.write(_t("{0} jump service", jumphost));
                     out.write("</a>\n");
                 }
             }
@@ -778,7 +778,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
      *  Translate
      *  @since 0.9.14 moved from I2PTunnelHTTPClient
      */
-    protected String _(String key) {
+    protected String _t(String key) {
         return Translate.getString(key, _context, BUNDLE_NAME);
     }
 
@@ -787,7 +787,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
      *  {0}
      *  @since 0.9.14 moved from I2PTunnelHTTPClient
      */
-    protected String _(String key, Object o) {
+    protected String _t(String key, Object o) {
         return Translate.getString(key, o, _context, BUNDLE_NAME);
     }
 
@@ -796,7 +796,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem
      *  {0} and {1}
      *  @since 0.9.14 moved from I2PTunnelHTTPClient
      */
-    protected String _(String key, Object o, Object o2) {
+    protected String _t(String key, Object o, Object o2) {
         return Translate.getString(key, o, o2, _context, BUNDLE_NAME);
     }
 }
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java
index 51425cbd013ad052eda1d8a509f7a34ef516e5c9..656b2c0f96e1a50df32623de1c461b295b8baaa7 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java
@@ -33,6 +33,9 @@ public class I2PTunnelHTTPClientRunner extends I2PTunnelRunner {
         super(s, i2ps, slock, initialI2PData, null, sockList, onFail);
     }
 
+    /**
+     *  Only call once!
+     */
     @Override
     protected OutputStream getSocketOut() throws IOException { 
         OutputStream raw = super.getSocketOut();
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
index 4b06ae0789ca1ae1d15217203453fcbbc961cae9..35dd6f1326d5332200bd6933d25eb56d32b36e1a 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPServer.java
@@ -419,12 +419,14 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
             setEntry(headers, "Connection", "close");
             // we keep the enc sent by the browser before clobbering it, since it may have 
             // been x-i2p-gzip
-            String enc = getEntryOrNull(headers, "Accept-encoding");
-            String altEnc = getEntryOrNull(headers, "X-Accept-encoding");
+            String enc = getEntryOrNull(headers, "Accept-Encoding");
+            String altEnc = getEntryOrNull(headers, "X-Accept-Encoding");
             
             // according to rfc2616 s14.3, this *should* force identity, even if
             // "identity;q=1, *;q=0" didn't.  
-            setEntry(headers, "Accept-encoding", ""); 
+            // as of 0.9.23, the client passes this header through, and we do the same,
+            // so if the server and browser can do the compression/decompression, we don't have to
+            //setEntry(headers, "Accept-Encoding", ""); 
 
             socket.setReadTimeout(readTimeout);
             Socket s = getSocket(socket.getPeerDestination().calculateHash(), socket.getLocalPort());
@@ -432,7 +434,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
             // instead of i2ptunnelrunner, use something that reads the HTTP 
             // request from the socket, modifies the headers, sends the request to the 
             // server, reads the response headers, rewriting to include Content-encoding: x-i2p-gzip
-            // if it was one of the Accept-encoding: values, and gzip the payload       
+            // if it was one of the Accept-Encoding: values, and gzip the payload       
             boolean allowGZIP = true;
             String val = opts.getProperty("i2ptunnel.gzip");
             if ( (val != null) && (!Boolean.parseBoolean(val)) ) 
@@ -443,7 +445,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
             boolean useGZIP = alt || ( (enc != null) && (enc.indexOf("x-i2p-gzip") >= 0) );
             // Don't pass this on, outproxies should strip so I2P traffic isn't so obvious but they probably don't
             if (alt)
-                headers.remove("X-Accept-encoding");
+                headers.remove("X-Accept-Encoding");
 
             String modifiedHeader = formatHeaders(headers, command);
             if (_log.shouldLog(Log.DEBUG))
@@ -671,6 +673,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
     
         /**
          *  Don't compress small responses or images.
+         *  Don't compress things that are already compressed.
          *  Compression is inline but decompression on the client side
          *  creates a new thread.
          */
@@ -687,7 +690,11 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
                      (!_contentType.equals("application/x-bzip")) &&
                      (!_contentType.equals("application/x-bzip2")) &&
                      (!_contentType.equals("application/x-gzip")) &&
-                     (!_contentType.equals("application/zip"))));
+                     (!_contentType.equals("application/zip")))) &&
+                   (_contentEncoding == null ||
+                    ((!_contentEncoding.equals("gzip")) &&
+                     (!_contentEncoding.equals("compress")) &&
+                     (!_contentEncoding.equals("deflate"))));
         }
 
         @Override
@@ -817,7 +824,7 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
      *  @throws BadRequestException on bad headers
      *  @throws IOException on other errors in the underlying stream
      */
-    private static Map<String, List<String>> readHeaders(I2PSocket socket, InputStream in, StringBuilder command,
+    static Map<String, List<String>> readHeaders(I2PSocket socket, InputStream in, StringBuilder command,
                                                            String[] skipHeaders, I2PAppContext ctx) throws IOException {
     	HashMap<String, List<String>> headers = new HashMap<String, List<String>>();
         StringBuilder buf = new StringBuilder(128);
@@ -877,9 +884,9 @@ public class I2PTunnelHTTPServer extends I2PTunnelServer {
 
                 String lcName = name.toLowerCase(Locale.US);
                 if ("accept-encoding".equals(lcName))
-                    name = "Accept-encoding";
+                    name = "Accept-Encoding";
                 else if ("x-accept-encoding".equals(lcName))
-                    name = "X-Accept-encoding";
+                    name = "X-Accept-Encoding";
                 else if ("x-forwarded-for".equals(lcName))
                     name = "X-Forwarded-For";
                 else if ("x-forwarded-server".equals(lcName))
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java
index 73c1dd74af2702a29de828e55f95de65d4292a38..dd59042d8f1a1db3bd8e7dfa12b9a71fb20a14ae 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2Ping.java
@@ -4,8 +4,9 @@
 package net.i2p.i2ptunnel;
 
 import java.io.BufferedReader;
-import java.io.FileReader;
+import java.io.FileInputStream;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.List;
@@ -157,7 +158,7 @@ public class I2Ping extends I2PTunnelClientBase {
       }
 
       if (hostListFile != null) {
-            BufferedReader br = new BufferedReader(new FileReader(hostListFile));
+            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(hostListFile), "UTF-8"));
             String line;
             List<PingHandler> pingHandlers = new ArrayList<PingHandler>();
             int i = 0;
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
index 2066911ada352c55addbef2369eab99ecd8f93f7..d5ca354c59b24efef46a00da5d8f7732a097c7e6 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
@@ -651,9 +651,9 @@ public class TunnelController implements Logging {
             }
             // same default logic as in EditBean.getSigType()
             if (!isClient(type) ||
-                ((type.equals(TYPE_IRC_CLIENT) || type.equals(TYPE_STD_CLIENT) ||
-                  type.equals(TYPE_SOCKS_IRC) || type.equals(TYPE_STREAMR_CLIENT))
-                 && !Boolean.valueOf(getSharedClient()))) {
+                type.equals(TYPE_IRC_CLIENT) || type.equals(TYPE_STD_CLIENT) ||
+                type.equals(TYPE_SOCKS_IRC) || type.equals(TYPE_STREAMR_CLIENT) ||
+                (type.equals(TYPE_HTTP_CLIENT) && Boolean.valueOf(getSharedClient()))) {
                 if (!_config.containsKey(OPT_SIG_TYPE))
                     _config.setProperty(OPT_SIG_TYPE, PREFERRED_SIGTYPE.name());
             }
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcInboundFilter.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcInboundFilter.java
index 5f0dd833383df2a91d52c24fdc756f953598aca4..2a2edf0db8d23f68f2c49f5c8c9fda2751fc9b1a 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcInboundFilter.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcInboundFilter.java
@@ -47,8 +47,8 @@ public class IrcInboundFilter implements Runnable {
             in = new BufferedReader(new InputStreamReader(remote.getInputStream(), "ISO-8859-1"));
             output=local.getOutputStream();
         } catch (IOException e) {
-            if (_log.shouldLog(Log.ERROR))
-                _log.error("IrcInboundFilter: no streams",e);
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("IrcInboundFilter: no streams",e);
             return;
         }
         if (_log.shouldLog(Log.DEBUG))
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcOutboundFilter.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcOutboundFilter.java
index 5e142081afed1f29c51eb18ac4291c4cd8621430..75ce191e70aa305e88c97b71767b2a57f423d9c5 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcOutboundFilter.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/irc/IrcOutboundFilter.java
@@ -47,8 +47,8 @@ public class IrcOutboundFilter implements Runnable {
             in = new BufferedReader(new InputStreamReader(local.getInputStream(), "ISO-8859-1"));
             output=remote.getOutputStream();
         } catch (IOException e) {
-            if (_log.shouldLog(Log.ERROR))
-                _log.error("IrcOutboundFilter: no streams",e);
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("IrcOutboundFilter: no streams",e);
             return;
         }
         if (_log.shouldLog(Log.DEBUG))
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java
index 2d70caed03fd5d56ebfd4f33dbef8a6c81337db9..bd84ac9ee1eaca9f30637e5c40103ca52e7718b9 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java
@@ -14,6 +14,7 @@ import java.util.StringTokenizer;
 import net.i2p.I2PAppContext;
 import net.i2p.client.naming.NamingService;
 import net.i2p.data.DataFormatException;
+import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.i2ptunnel.I2PTunnelHTTPClient;
 import net.i2p.util.FileUtil;
@@ -165,10 +166,11 @@ public abstract class LocalHTTPServer {
                 Properties nsOptions = new Properties();
                 nsOptions.setProperty("list", book);
                 if (referer != null && referer.startsWith("http")) {
-                    String from = "<a href=\"" + referer + "\">" + referer + "</a>";
-                    nsOptions.setProperty("s", _("Added via address helper from {0}", from));
+                    String ref = DataHelper.escapeHTML(referer);
+                    String from = "<a href=\"" + ref + "\">" + ref + "</a>";
+                    nsOptions.setProperty("s", _t("Added via address helper from {0}", from));
                 } else {
-                    nsOptions.setProperty("s", _("Added via address helper"));
+                    nsOptions.setProperty("s", _t("Added via address helper"));
                 }
                 boolean success = ns.put(host, dest, nsOptions);
                 writeRedirectPage(out, success, host, book, url);
@@ -185,11 +187,11 @@ public abstract class LocalHTTPServer {
     private static void writeRedirectPage(OutputStream out, boolean success, String host, String book, String url) throws IOException {
         String tbook;
         if ("hosts.txt".equals(book))
-            tbook = _("router");
+            tbook = _t("router");
         else if ("userhosts.txt".equals(book))
-            tbook = _("master");
+            tbook = _t("master");
         else if ("privatehosts.txt".equals(book))
-            tbook = _("private");
+            tbook = _t("private");
         else
             tbook = book;
         out.write(("HTTP/1.1 200 OK\r\n"+
@@ -198,22 +200,22 @@ public abstract class LocalHTTPServer {
                   "Proxy-Connection: close\r\n"+
                   "\r\n"+
                   "<html><head>"+
-                  "<title>" + _("Redirecting to {0}", host) + "</title>\n" +
+                  "<title>" + _t("Redirecting to {0}", host) + "</title>\n" +
                   "<link rel=\"shortcut icon\" href=\"http://proxy.i2p/themes/console/images/favicon.ico\" >\n" +
                   "<link href=\"http://proxy.i2p/themes/console/default/console.css\" rel=\"stylesheet\" type=\"text/css\" >\n" +
                   "<meta http-equiv=\"Refresh\" content=\"1; url=" + url + "\">\n" +
                   "</head><body>\n" +
                   "<div class=logo>\n" +
-                  "<a href=\"http://127.0.0.1:7657/\" title=\"" + _("Router Console") + "\"><img src=\"http://proxy.i2p/themes/console/images/i2plogo.png\" alt=\"I2P Router Console\" border=\"0\"></a><hr>\n" +
-                  "<a href=\"http://127.0.0.1:7657/config\">" + _("Configuration") + "</a> <a href=\"http://127.0.0.1:7657/help.jsp\">" + _("Help") + "</a> <a href=\"http://127.0.0.1:7657/susidns/index\">" + _("Addressbook") + "</a>\n" +
+                  "<a href=\"http://127.0.0.1:7657/\" title=\"" + _t("Router Console") + "\"><img src=\"http://proxy.i2p/themes/console/images/i2plogo.png\" alt=\"I2P Router Console\" border=\"0\"></a><hr>\n" +
+                  "<a href=\"http://127.0.0.1:7657/config\">" + _t("Configuration") + "</a> <a href=\"http://127.0.0.1:7657/help.jsp\">" + _t("Help") + "</a> <a href=\"http://127.0.0.1:7657/susidns/index\">" + _t("Addressbook") + "</a>\n" +
                   "</div>" +
                   "<div class=warning id=warning>\n" +
                   "<h3>" +
                   (success ?
-                           _("Saved {0} to the {1} addressbook, redirecting now.", host, tbook) :
-                           _("Failed to save {0} to the {1} addressbook, redirecting now.", host, tbook)) +
+                           _t("Saved {0} to the {1} addressbook, redirecting now.", host, tbook) :
+                           _t("Failed to save {0} to the {1} addressbook, redirecting now.", host, tbook)) +
                   "</h3>\n<p><a href=\"" + url + "\">" +
-                  _("Click here if you are not redirected automatically.") +
+                  _t("Click here if you are not redirected automatically.") +
                   "</a></p></div>").getBytes("UTF-8"));
         I2PTunnelHTTPClient.writeFooter(out);
         out.flush();
@@ -248,17 +250,17 @@ public abstract class LocalHTTPServer {
     private static final String BUNDLE_NAME = "net.i2p.i2ptunnel.proxy.messages";
 
     /** lang in routerconsole.lang property, else current locale */
-    protected static String _(String key) {
+    protected static String _t(String key) {
         return Translate.getString(key, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
     }
 
     /** {0} */
-    protected static String _(String key, Object o) {
+    protected static String _t(String key, Object o) {
         return Translate.getString(key, o, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
     }
 
     /** {0} and {1} */
-    protected static String _(String key, Object o, Object o2) {
+    protected static String _t(String key, Object o, Object o2) {
         return Translate.getString(key, o, o2, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
     }
 
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java
index 19ab11a461fe8d7aaa95db4cc0b88a54785aa217..9167939417cfbcf5f8dfaf95df20b051cc6abc47 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java
@@ -27,7 +27,6 @@ import net.i2p.util.Log;
 public class I2PSOCKSTunnel extends I2PTunnelClientBase {
 
     private HashMap<String, List<String>> proxies = null;  // port# + "" or "default" -> hostname list
-    protected Destination outProxyDest = null;
 
     //public I2PSOCKSTunnel(int localPort, Logging l, boolean ownDest) {
     //	  I2PSOCKSTunnel(localPort, l, ownDest, (EventDispatcher)null);
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java
index 02c5c3b0edfd93c32225fcd94899135f3a915029..5fff2c1eb3541bc5a95346b67c20e4a1da158ce3 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKS5Server.java
@@ -24,6 +24,7 @@ import net.i2p.I2PException;
 import net.i2p.client.streaming.I2PSocket;
 import net.i2p.client.streaming.I2PSocketOptions;
 import net.i2p.data.DataFormatException;
+import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.i2ptunnel.I2PTunnelHTTPClientBase;
 import net.i2p.i2ptunnel.I2PTunnel;
@@ -226,7 +227,7 @@ public class SOCKS5Server extends SOCKSServer {
                 }
                 byte addr[] = new byte[addrLen];
                 in.readFully(addr);
-                connHostName = new String(addr);
+                connHostName = DataHelper.getUTF8(addr);
             }
             _log.debug("DOMAINNAME address type in request: " + connHostName);
             break;
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSHeader.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSHeader.java
index e2e7edc72978acc66c8adb9aec14893a05caa1e1..9b8a2c6f43aa410722f4bea3e9634bfcea1cf06c 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSHeader.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSHeader.java
@@ -1,6 +1,7 @@
 package net.i2p.i2ptunnel.socks;
 
 import net.i2p.I2PAppContext;
+import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 
 /**
@@ -65,7 +66,7 @@ public class SOCKSHeader {
         int namelen = (this.header[4] & 0xff);
         byte[] nameBytes = new byte[namelen];
         System.arraycopy(nameBytes, 0, this.header, 5, namelen);
-        return new String(nameBytes);
+        return DataHelper.getUTF8(nameBytes);
     }
 
     public Destination getDestination() {
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java
index a89e3489864d2b1606a625d0ccbc6d26d5129e28..75b0d683d222bd4506586c68ffdd6cc2ccffcf60 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java
@@ -52,8 +52,6 @@ import net.i2p.util.EventDispatcher;
     private static final AtomicLong __clientId = new AtomicLong();
     protected long _clientId;
 
-    protected Destination dest;
-
     private final Object startLock = new Object();
     
     private final I2PSession _session;
@@ -98,6 +96,7 @@ import net.i2p.util.EventDispatcher;
         // create a session
         try {
             ByteArrayInputStream in = new ByteArrayInputStream(key);
+            // FIXME this may not pick up non-default I2CP host/port settings from tunnel
             _session = client.createSession(in, tunnel.getClientOptions());
             connected(_session);
         } catch(Exception exc) {
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java
index b5fc94b2ebb4a7f7119532efe52a03b58d41ee07..ade6e3058bbfddd1fdf2e9e3c9ea4d7dc3f276d5 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java
@@ -87,19 +87,12 @@ public class I2PTunnelUDPServerBase extends I2PTunnelTask implements Source, Sin
 
     private void init(boolean verify, InputStream privData, String privkeyname, Logging l) {
         this.l = l;
-        int portNum = 7654;
-        if (getTunnel().port != null) {
-            try {
-                portNum = Integer.parseInt(getTunnel().port);
-            } catch (NumberFormatException nfe) {
-                _log.log(Log.CRIT, "Invalid port specified [" + getTunnel().port + "], reverting to " + portNum);
-            }
-        }
 
         // create i2pclient
         I2PClient client = I2PClientFactory.createClient();
 
         try {
+            // FIXME this may not pick up non-default I2CP host/port settings from tunnel
             _session = client.createSession(privData, getTunnel().getClientOptions());
             connected(_session);
         } catch(I2PSessionException exc) {
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/GeneralHelper.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/GeneralHelper.java
index 2073efdf2357f2864a8e05e0d1576d3cc7aa1115..b2b38398eb71e919759f5d8d5d01385915b48c38 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/GeneralHelper.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/GeneralHelper.java
@@ -146,11 +146,11 @@ public class GeneralHelper {
         List<String> rv = tcg.clearAllMessages();
         try {
             tcg.saveConfig();
-            rv.add(0, _("Configuration changes saved", context));
+            rv.add(0, _t("Configuration changes saved", context));
         } catch (IOException ioe) {
             Log log = context.logManager().getLog(GeneralHelper.class);
             log.error("Failed to save config file", ioe);
-            rv.add(0, _("Failed to save configuration", context) + ": " + ioe.toString());
+            rv.add(0, _t("Failed to save configuration", context) + ": " + ioe.toString());
         }
         return rv;
     }
@@ -439,12 +439,12 @@ public class GeneralHelper {
         }
         if (type == null) {
             // same default logic as in TunnelController.setConfig()
-            if ((!TunnelController.isClient(ttype) ||
-                ((TunnelController.TYPE_IRC_CLIENT.equals(ttype) ||
-                  TunnelController.TYPE_SOCKS_IRC.equals(ttype) ||
-                  TunnelController.TYPE_STREAMR_CLIENT.equals(ttype) ||
-                  TunnelController.TYPE_STD_CLIENT.equals(ttype)) &&
-                 !isShared)))
+            if (!TunnelController.isClient(ttype) ||
+                TunnelController.TYPE_IRC_CLIENT.equals(ttype) ||
+                TunnelController.TYPE_SOCKS_IRC.equals(ttype) ||
+                TunnelController.TYPE_STREAMR_CLIENT.equals(ttype) ||
+                TunnelController.TYPE_STD_CLIENT.equals(ttype) ||
+                (TunnelController.TYPE_HTTP_CLIENT.equals(ttype) && isShared))
                 type = TunnelController.PREFERRED_SIGTYPE;
             else
                 type = SigType.DSA_SHA1;
@@ -714,7 +714,7 @@ public class GeneralHelper {
         return def;
     }
 
-    protected static String _(String key, I2PAppContext context) {
-        return Messages._(key, context);
+    protected static String _t(String key, I2PAppContext context) {
+        return Messages._t(key, context);
     }
 }
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java
index 755fc2719828055dd84c063e6d6c18a3a0237773..c0839e503ac814068dbb2bc87cffc92a795bc023 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java
@@ -47,7 +47,8 @@ public class TunnelConfig {
     private String _i2cpPort;
     private int _tunnelDepth = -1;
     private int _tunnelQuantity = -1;
-    private int _tunnelVariance = -1;
+    // -2 or higher is valid
+    private int _tunnelVariance = -3;
     private int _tunnelBackupQuantity = -1;
     private boolean _connectDelay;
     private String _customOptions;
@@ -318,7 +319,7 @@ public class TunnelConfig {
         if (val)
             _booleanOptions.add(I2PTunnelHTTPClient.PROP_ACCEPT);
         else
-            _booleanOptions.add(I2PTunnelHTTPClient.PROP_ACCEPT);
+            _booleanOptions.remove(I2PTunnelHTTPClient.PROP_ACCEPT);
     }
     public void setAllowInternalSSL(boolean val) {
         if (val)
@@ -801,7 +802,7 @@ public class TunnelConfig {
             config.setProperty("option.inbound.length", Integer.toString(_tunnelDepth));
             config.setProperty("option.outbound.length", Integer.toString(_tunnelDepth));
         }
-        if (_tunnelVariance >= 0) {
+        if (_tunnelVariance >= -2) {
             config.setProperty("option.inbound.lengthVariance", Integer.toString(_tunnelVariance));
             config.setProperty("option.outbound.lengthVariance", Integer.toString(_tunnelVariance));
         }
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
index ebc4950981bd07735da6707ac06be43010c375af..fb9b137b22755d0deecb24b23ac7e186522abd6b 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java
@@ -358,7 +358,7 @@ public class EditBean extends IndexBean {
 
     public String getI2CPHost(int tunnel) {
         if (_context.isRouterContext())
-            return _("internal");
+            return _t("internal");
         TunnelController tun = getController(tunnel);
         if (tun != null)
             return tun.getI2CPHost();
@@ -368,7 +368,7 @@ public class EditBean extends IndexBean {
     
     public String getI2CPPort(int tunnel) {
         if (_context.isRouterContext())
-            return _("internal");
+            return _t("internal");
         TunnelController tun = getController(tunnel);
         if (tun != null)
             return tun.getI2CPPort();
@@ -406,11 +406,11 @@ public class EditBean extends IndexBean {
              if (i <= 3) {
                  buf.append(" (");
                  if (i == 1)
-                     buf.append(_("lower bandwidth and reliability"));
+                     buf.append(_t("lower bandwidth and reliability"));
                  else if (i == 2)
-                     buf.append(_("standard bandwidth and reliability"));
+                     buf.append(_t("standard bandwidth and reliability"));
                  else if (i == 3)
-                     buf.append(_("higher bandwidth and reliability"));
+                     buf.append(_t("higher bandwidth and reliability"));
                  buf.append(')');
              }
              buf.append("</option>\n");
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
index ccb30ca992ea2b5a94662dfba3eac10ec2de7f54..15eb3f29ee57a1fc6f3951f4a432e2f3451cf2be 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java
@@ -84,7 +84,7 @@ public class IndexBean {
         String error;
         try {
             tcg = TunnelControllerGroup.getInstance();
-            error = tcg == null ? _("Tunnels are not initialized yet, please reload in two minutes.")
+            error = tcg == null ? _t("Tunnels are not initialized yet, please reload in two minutes.")
                                 : null;
         } catch (IllegalArgumentException iae) {
             tcg = null;
@@ -157,9 +157,9 @@ public class IndexBean {
         // If passwords are turned on, all is assumed good
         if (!_context.getBooleanProperty(PROP_PW_ENABLE) &&
             !haveNonce(_curNonce))
-            return _("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")
+            return _t("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")
                    + ' ' +
-                   _("If the problem persists, verify that you have cookies enabled in your browser.");
+                   _t("If the problem persists, verify that you have cookies enabled in your browser.");
         if ("Stop all".equals(_action)) 
             return stopAll();
         else if ("Start all".equals(_action))
@@ -205,7 +205,7 @@ public class IndexBean {
 
     private String reloadConfig() {
         _group.reloadControllers();
-        return _("Configuration reloaded for all tunnels");
+        return _t("Configuration reloaded for all tunnels");
     }
 
     private String start() {
@@ -219,7 +219,7 @@ public class IndexBean {
         try { Thread.sleep(1000); } catch (InterruptedException ie) {}
         // and give them something to look at in any case
         // FIXME name will be HTML escaped twice
-        return _("Starting tunnel") + ' ' + getTunnelName(_tunnel) + "...";
+        return _t("Starting tunnel") + ' ' + getTunnelName(_tunnel) + "...";
     }
     
     private String stop() {
@@ -233,7 +233,7 @@ public class IndexBean {
         try { Thread.sleep(1000); } catch (InterruptedException ie) {}
         // and give them something to look at in any case
         // FIXME name will be HTML escaped twice
-        return _("Stopping tunnel") + ' ' + getTunnelName(_tunnel) + "...";
+        return _t("Stopping tunnel") + ' ' + getTunnelName(_tunnel) + "...";
     }
     
     private String saveChanges() {
@@ -322,7 +322,7 @@ public class IndexBean {
         if (name != null)
             return DataHelper.escapeHTML(name);
         else
-            return _("New Tunnel");
+            return _t("New Tunnel");
     }
     
     /**
@@ -342,13 +342,13 @@ public class IndexBean {
         if (tun != null && tun.getListenPort() != null) {
             String port = tun.getListenPort();
             if (port.length() == 0)
-                return "<font color=\"red\">" + _("Port not set") + "</font>";
+                return "<font color=\"red\">" + _t("Port not set") + "</font>";
             int iport = Addresses.getPort(port);
             if (iport == 0)
-                return "<font color=\"red\">" + _("Invalid port") + ' ' + port + "</font>";
+                return "<font color=\"red\">" + _t("Invalid port") + ' ' + port + "</font>";
             if (iport < 1024)
                 return "<font color=\"red\">" +
-                       _("Warning - ports less than 1024 are not recommended") +
+                       _t("Warning - ports less than 1024 are not recommended") +
                        ": " + port + "</font>";
             // dup check, O(n**2)
             List<TunnelController> controllers = _group.getControllers();
@@ -357,12 +357,12 @@ public class IndexBean {
                     continue;
                 if (port.equals(controllers.get(i).getListenPort()))
                     return "<font color=\"red\">" +
-                           _("Warning - duplicate port") +
+                           _t("Warning - duplicate port") +
                            ": " + port + "</font>";
             }
             return port;
         }
-        return "<font color=\"red\">" + _("Port not set") + "</font>";
+        return "<font color=\"red\">" + _t("Port not set") + "</font>";
     }
     
     public String getTunnelType(int tunnel) {
@@ -374,18 +374,18 @@ public class IndexBean {
     }
     
     public String getTypeName(String internalType) {
-        if (TunnelController.TYPE_STD_CLIENT.equals(internalType)) return _("Standard client");
-        else if (TunnelController.TYPE_HTTP_CLIENT.equals(internalType)) return _("HTTP/HTTPS client");
-        else if (TunnelController.TYPE_IRC_CLIENT.equals(internalType)) return _("IRC client");
-        else if (TunnelController.TYPE_STD_SERVER.equals(internalType)) return _("Standard server");
-        else if (TunnelController.TYPE_HTTP_SERVER.equals(internalType)) return _("HTTP server");
-        else if (TunnelController.TYPE_SOCKS.equals(internalType)) return _("SOCKS 4/4a/5 proxy");
-        else if (TunnelController.TYPE_SOCKS_IRC.equals(internalType)) return _("SOCKS IRC proxy");
-        else if (TunnelController.TYPE_CONNECT.equals(internalType)) return _("CONNECT/SSL/HTTPS proxy");
-        else if (TunnelController.TYPE_IRC_SERVER.equals(internalType)) return _("IRC server");
-        else if (TunnelController.TYPE_STREAMR_CLIENT.equals(internalType)) return _("Streamr client");
-        else if (TunnelController.TYPE_STREAMR_SERVER.equals(internalType)) return _("Streamr server");
-        else if (TunnelController.TYPE_HTTP_BIDIR_SERVER.equals(internalType)) return _("HTTP bidir");
+        if (TunnelController.TYPE_STD_CLIENT.equals(internalType)) return _t("Standard client");
+        else if (TunnelController.TYPE_HTTP_CLIENT.equals(internalType)) return _t("HTTP/HTTPS client");
+        else if (TunnelController.TYPE_IRC_CLIENT.equals(internalType)) return _t("IRC client");
+        else if (TunnelController.TYPE_STD_SERVER.equals(internalType)) return _t("Standard server");
+        else if (TunnelController.TYPE_HTTP_SERVER.equals(internalType)) return _t("HTTP server");
+        else if (TunnelController.TYPE_SOCKS.equals(internalType)) return _t("SOCKS 4/4a/5 proxy");
+        else if (TunnelController.TYPE_SOCKS_IRC.equals(internalType)) return _t("SOCKS IRC proxy");
+        else if (TunnelController.TYPE_CONNECT.equals(internalType)) return _t("CONNECT/SSL/HTTPS proxy");
+        else if (TunnelController.TYPE_IRC_SERVER.equals(internalType)) return _t("IRC server");
+        else if (TunnelController.TYPE_STREAMR_CLIENT.equals(internalType)) return _t("Streamr client");
+        else if (TunnelController.TYPE_STREAMR_SERVER.equals(internalType)) return _t("Streamr server");
+        else if (TunnelController.TYPE_HTTP_BIDIR_SERVER.equals(internalType)) return _t("HTTP bidir");
         else return internalType;
     }
     
@@ -442,15 +442,15 @@ public class IndexBean {
                 host = tun.getTargetHost();
             String port = tun.getTargetPort();
             if (host == null || host.length() == 0)
-                host = "<font color=\"red\">" + _("Host not set") + "</font>";
+                host = "<font color=\"red\">" + _t("Host not set") + "</font>";
             else if (Addresses.getIP(host) == null)
-                host = "<font color=\"red\">" + _("Invalid address") + ' ' + host + "</font>";
+                host = "<font color=\"red\">" + _t("Invalid address") + ' ' + host + "</font>";
             else if (host.indexOf(':') >= 0)
                 host = '[' + host + ']';
             if (port == null || port.length() == 0)
-                port = "<font color=\"red\">" + _("Port not set") + "</font>";
+                port = "<font color=\"red\">" + _t("Port not set") + "</font>";
             else if (Addresses.getPort(port) == 0)
-                port = "<font color=\"red\">" + _("Invalid port") + ' ' + port + "</font>";
+                port = "<font color=\"red\">" + _t("Invalid port") + ' ' + port + "</font>";
             return host + ':' + port;
        }  else
             return "";
@@ -1074,8 +1074,8 @@ public class IndexBean {
         }
     }
 
-    protected String _(String key) {
-        return Messages._(key, _context);
+    protected String _t(String key) {
+        return Messages._t(key, _context);
     }
 
     /** translate (ngettext)
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java
index d4a2fb4bdce1cd706250f8bf537e80b9a2f3d768..89e2bfc431b10bfa060dbb21c3b042723dbc3420 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/Messages.java
@@ -16,11 +16,11 @@ public class Messages {
     }
 
     /** lang in routerconsole.lang property, else current locale */
-    public String _(String key) {
+    public String _t(String key) {
         return Translate.getString(key, _context, BUNDLE_NAME);
     }
 
-    public static String _(String key, I2PAppContext ctx) {
+    public static String _t(String key, I2PAppContext ctx) {
         return Translate.getString(key, ctx, BUNDLE_NAME);
     }
 
@@ -32,11 +32,11 @@ public class Messages {
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
-    public String _(String s, Object o) {
+    public String _t(String s, Object o) {
         return Translate.getString(s, o, _context, BUNDLE_NAME);
     }
 
diff --git a/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java b/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java
index 19302a624851d9aad90894b9e1a58a24a42eba75..7132a7da2f8848652fa61d1b4992d8757a78bd51 100644
--- a/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java
+++ b/apps/i2ptunnel/java/test/junit/net/i2p/i2ptunnel/I2PTunnelHTTPServerTest.java
@@ -28,7 +28,7 @@ public class I2PTunnelHTTPServerTest extends TestCase {
 		headerString += "BLAH: something\r\n";
 		headerString += "\r\n";
 		InputStream in = fillInputStream(headerString);
-		Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext());
+		Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(null, in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext());
 		assertEquals(headers.size(), 1); //One header
 	}
 	
@@ -38,7 +38,7 @@ public class I2PTunnelHTTPServerTest extends TestCase {
 		headerString += "someHeader: oh my, duplication!\r\n";
 		headerString += "\r\n";
 		InputStream in = fillInputStream(headerString);
-		Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext());
+		Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(null, in, new StringBuilder(128), new String[0], I2PAppContext.getGlobalContext());
 		assertEquals(headers.size(), 1);
 		assertEquals(headers.get("someHeader").size(), 2);
 	}
@@ -51,7 +51,7 @@ public class I2PTunnelHTTPServerTest extends TestCase {
 		headerString += "\r\n";
 		InputStream in = fillInputStream(headerString);
 		StringBuilder builder = new StringBuilder(128);
-		Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(in, builder, new String[0], I2PAppContext.getGlobalContext());
+		Map<String, List<String>> headers = I2PTunnelHTTPServer.readHeaders(null, in, builder, new String[0], I2PAppContext.getGlobalContext());
 		String result = I2PTunnelHTTPServer.formatHeaders(headers, builder);
 		int first = result.indexOf("abc");
 		assertTrue(first >= 0);
diff --git a/apps/i2ptunnel/jsp/editClient.jsp b/apps/i2ptunnel/jsp/editClient.jsp
index c0dd04cf47b8718984004c456f950e3c72028b8c..b09b2ed545811b4025fe117142cc4dba06a83a34 100644
--- a/apps/i2ptunnel/jsp/editClient.jsp
+++ b/apps/i2ptunnel/jsp/editClient.jsp
@@ -16,7 +16,7 @@
 %>
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
-    <title><%=intl._("Hidden Services Manager")%> - <%=intl._("Edit Client Tunnel")%></title>
+    <title><%=intl._t("Hidden Services Manager")%> - <%=intl._t("Edit Client Tunnel")%></title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
     <link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
@@ -49,14 +49,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                 if (curTunnel >= 0) {
                     tunnelTypeName = editBean.getTunnelType(curTunnel);
                     tunnelType = editBean.getInternalType(curTunnel);
-                  %><h4><%=intl._("Edit proxy settings")%></h4><% 
+                  %><h4><%=intl._t("Edit proxy settings")%></h4><% 
                 } else {
                     tunnelTypeName = editBean.getTypeName(request.getParameter("type"));
                     tunnelType = net.i2p.data.DataHelper.stripHTML(request.getParameter("type"));
-                  %><h4><%=intl._("New proxy settings")%></h4><% 
+                  %><h4><%=intl._t("New proxy settings")%></h4><% 
                 } %>
                 <input type="hidden" name="tunnel" value="<%=curTunnel%>" />
-                <input type="hidden" name="nonce" value="<%=editBean.getNextNonce()%>" />
+                <input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
                 <input type="hidden" name="type" value="<%=tunnelType%>" />
                 <%
                 // these are four keys that are generated automatically on first save,
@@ -87,17 +87,17 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
             <div id="nameField" class="rowItem">
                 <label for="name" accesskey="N">
-                    <%=intl._("Name")%>:(<span class="accessKey">N</span>)
+                    <%=intl._t("Name")%>:(<span class="accessKey">N</span>)
                 </label>
                 <input type="text" size="30" maxlength="50" name="name" id="name" title="Tunnel Name" value="<%=editBean.getTunnelName(curTunnel)%>" class="freetext" />               
             </div>
             <div id="typeField" class="rowItem">
-                <label><%=intl._("Type")%>:</label>
+                <label><%=intl._t("Type")%>:</label>
                 <span class="text"><%=tunnelTypeName%></span>
             </div>
             <div id="descriptionField" class="rowItem">
                 <label for="description" accesskey="e">
-                    <%=intl._("Description")%>:(<span class="accessKey">E</span>)
+                    <%=intl._t("Description")%>:(<span class="accessKey">E</span>)
                 </label>
                 <input type="text" size="60" maxlength="80" name="nofilter_description"  id="description" title="Tunnel Description" value="<%=editBean.getTunnelDescription(curTunnel)%>" class="freetext" />                
             </div>
@@ -108,9 +108,9 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                  
             <div id="accessField" class="rowItem">
          <% if ("streamrclient".equals(tunnelType)) { %>
-                <label><%=intl._("Target")%>:</label>
+                <label><%=intl._t("Target")%>:</label>
          <% } else { %>
-                <label><%=intl._("Access Point")%>:</label>
+                <label><%=intl._t("Access Point")%>:</label>
          <% } /* streamrclient */ %>
             </div>
             <div id="portField" class="rowItem">
@@ -119,7 +119,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                     <% String value = editBean.getClientPort(curTunnel);
                        if (value == null || "".equals(value.trim())) {
                            out.write(" <font color=\"red\">(");
-                           out.write(intl._("required"));
+                           out.write(intl._t("required"));
                            out.write(")</font>");
                        }
                      %>
@@ -134,14 +134,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                        String targetHost = editBean.getTargetHost(curTunnel);
                        if (targetHost == null || "".equals(targetHost.trim())) {
                            out.write(" <font color=\"red\">(");
-                           out.write(intl._("required"));
+                           out.write(intl._t("required"));
                            out.write(")</font>");
                        }   
           %>
                 </label>
                 <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=targetHost%>" class="freetext" />                
          <% } else { %>
-                    <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
+                    <%=intl._t("Reachable by")%>(<span class="accessKey">R</span>):
                 </label>
                 <select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
               <%
@@ -163,7 +163,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if ("client".equals(tunnelType) || "ircclient".equals(tunnelType)) {
           %><div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Use SSL?")%>
+                    <%=intl._t("Use SSL?")%>
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="useSSL" title="Clients use SSL to connect" <%=(editBean.isSSLEnabled(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
@@ -176,41 +176,41 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <% if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
           %><div id="destinationField" class="rowItem">
                 <label for="proxyList" accesskey="x">
-                    <%=intl._("Outproxies")%>(<span class="accessKey">x</span>):
+                    <%=intl._t("Outproxies")%>(<span class="accessKey">x</span>):
                 </label>
                 <input type="text" size="30" id="proxyList" name="proxyList" title="List of Outproxy I2P destinations" value="<%=editBean.getClientDestination(curTunnel)%>" class="freetext" />                
             </div>
               <% if ("httpclient".equals(tunnelType)) {
                  %><div id="destinationField" class="rowItem">
                    <label>
-                       <%=intl._("SSL Outproxies")%>:
+                       <%=intl._t("SSL Outproxies")%>:
                    </label>
                    <input type="text" size="30" id="sslProxyList" name="sslProxies" title="List of Outproxy I2P destinations" value="<%=editBean.getSslProxies(curTunnel)%>" class="freetext" />                
                    </div>
               <% }  // httpclient %>
             <div id="startupField" class="rowItem">
                 <label>
-                    <%=intl._("Use Outproxy Plugin")%>:
+                    <%=intl._t("Use Outproxy Plugin")%>:
                 </label>
                 <input value="1" type="checkbox" id="shared" name="useOutproxyPlugin" title="Use plugin instead of above-listed proxies if available"<%=(editBean.getUseOutproxyPlugin(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <span class="comment"><%=intl._("(Check the Box for 'YES')")%></span>
+                <span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
             </div>
             <% } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) {
           %><div id="destinationField" class="rowItem">
                 <label for="targetDestination" accesskey="T">
-                    <%=intl._("Tunnel Destination")%>(<span class="accessKey">T</span>):
+                    <%=intl._t("Tunnel Destination")%>(<span class="accessKey">T</span>):
                     <% String value2 = editBean.getClientDestination(curTunnel);
                        if (value2 == null || "".equals(value2.trim())) {
                            out.write(" <font color=\"red\">(");
-                           out.write(intl._("required"));
+                           out.write(intl._t("required"));
                            out.write(")</font>");
                        }   
                      %>
                 </label>
                 <input type="text" size="30" id="targetDestination" name="targetDestination" title="Destination of the Tunnel" value="<%=editBean.getClientDestination(curTunnel)%>" class="freetext" />                
-                <span class="comment">(<%=intl._("name, name:port, or destination")%>
+                <span class="comment">(<%=intl._t("name, name:port, or destination")%>
                      <% if ("streamrclient".equals(tunnelType)) { /* deferred resolution unimplemented in streamr client */ %>
-                         - <%=intl._("b32 not recommended")%>
+                         - <%=intl._t("b32 not recommended")%>
                      <% } %> )
                 </span>
             </div>
@@ -218,26 +218,26 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if (!"streamrclient".equals(tunnelType)) { %>
             <div id="sharedtField" class="rowItem">
                 <label for="shared" accesskey="h">
-                    <%=intl._("Shared Client")%>(<span class="accessKey">h</span>):
+                    <%=intl._t("Shared Client")%>(<span class="accessKey">h</span>):
                 </label>
                 <input value="true" type="checkbox" id="shared" name="shared" title="Share tunnels with other clients"<%=(editBean.isSharedClient(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <span class="comment"><%=intl._("(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)")%></span>
+                <span class="comment"><%=intl._t("(Share tunnels with other clients and irc/httpclients? Change requires restart of client proxy)")%></span>
             </div>
          <% } // !streamrclient %>
             <div id="startupField" class="rowItem">
                 <label for="startOnLoad" accesskey="a">
-                    <%=intl._("Auto Start")%>(<span class="accessKey">A</span>):
+                    <%=intl._t("Auto Start")%>(<span class="accessKey">A</span>):
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="startOnLoad" title="Start Tunnel Automatically"<%=(editBean.startAutomatically(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <span class="comment"><%=intl._("(Check the Box for 'YES')")%></span>
+                <span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
             </div>
          <% if ("ircclient".equals(tunnelType)) { %>
             <div id="startupField" class="rowItem">
                 <label for="dcc" accesskey="d">
-                    <%=intl._("Enable DCC")%>:
+                    <%=intl._t("Enable DCC")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="DCC" title="Enable DCC"<%=(editBean.getDCC(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <span class="comment"><%=intl._("(Check the Box for 'YES')")%></span>
+                <span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
             </div>
          <% } // ircclient %>
             
@@ -247,8 +247,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
         <div id="tunnelAdvancedNetworking" class="panel">
             <div class="header">
-                <h4><%=intl._("Advanced networking options")%></h4><br />
-                <span class="comment"><%=intl._("(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)")%></span>
+                <h4><%=intl._t("Advanced networking options")%></h4><br />
+                <span class="comment"><%=intl._t("(NOTE: when this client proxy is configured to share tunnels, then these options are for all the shared proxy clients!)")%></span>
             </div>
 
             <div class="separator">
@@ -256,42 +256,47 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             </div>
             
             <div id="tunnelOptionsField" class="rowItem">
-                <label><%=intl._("Tunnel Options")%>:</label>
+                <label><%=intl._t("Tunnel Options")%>:</label>
             </div>
             <div id="depthField" class="rowItem">
                 <label for="tunnelDepth" accesskey="t">
-                    <%=intl._("Length")%>(<span class="accessKey">t</span>):
+                    <%=intl._t("Length")%>(<span class="accessKey">t</span>):
                 </label>
                 <select id="tunnelDepth" name="tunnelDepth" title="Length of each Tunnel" class="selectbox">
                     <% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 3);
-                  %><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>><%=intl._("0 hop tunnel (no anonymity)")%></option>
-                    <option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 hop tunnel (low anonymity)")%></option>
-                    <option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 hop tunnel (medium anonymity)")%></option>
-                    <option value="3"<%=(tunnelDepth == 3 ? " selected=\"selected\"" : "") %>><%=intl._("3 hop tunnel (high anonymity)")%></option>
-                <% if (tunnelDepth > 3) { 
-                %>    <option value="<%=tunnelDepth%>" selected="selected"><%=tunnelDepth%> <%=intl._("hop tunnel (very poor performance)")%></option>
+                  %><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 hop tunnel (no anonymity)")%></option>
+                    <option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>><%=intl._t("1 hop tunnel (low anonymity)")%></option>
+                    <option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>><%=intl._t("2 hop tunnel (medium anonymity)")%></option>
+                    <option value="3"<%=(tunnelDepth == 3 ? " selected=\"selected\"" : "") %>><%=intl._t("3 hop tunnel (high anonymity)")%></option>
+                <% if (editBean.isAdvanced()) {
+                  %><option value="4"<%=(tunnelDepth == 4 ? " selected=\"selected\"" : "") %>>4 hop tunnel</option>
+                    <option value="5"<%=(tunnelDepth == 5 ? " selected=\"selected\"" : "") %>>5 hop tunnel</option>
+                    <option value="6"<%=(tunnelDepth == 6 ? " selected=\"selected\"" : "") %>>6 hop tunnel</option>
+                    <option value="7"<%=(tunnelDepth == 7 ? " selected=\"selected\"" : "") %>>7 hop tunnel</option>
+                <% } else if (tunnelDepth > 3) { 
+                %>    <option value="<%=tunnelDepth%>" selected="selected"><%=tunnelDepth%> <%=intl._t("hop tunnel (very poor performance)")%></option>
                 <% }
               %></select>
             </div>
             <div id="varianceField" class="rowItem">
                 <label for="tunnelVariance" accesskey="v">
-                    <%=intl._("Variance")%>(<span class="accessKey">V</span>):
+                    <%=intl._t("Variance")%>(<span class="accessKey">V</span>):
                 </label>
                 <select id="tunnelVariance" name="tunnelVariance" title="Level of Randomization for Tunnel Length" class="selectbox">
                     <% int tunnelVariance = editBean.getTunnelVariance(curTunnel, 0);
-                  %><option value="0"<%=(tunnelVariance  ==  0 ? " selected=\"selected\"" : "") %>><%=intl._("0 hop variance (no randomisation, consistant performance)")%></option>
-                    <option value="1"<%=(tunnelVariance  ==  1 ? " selected=\"selected\"" : "") %>><%=intl._("+ 0-1 hop variance (medium additive randomisation, subtractive performance)")%></option>
-                    <option value="2"<%=(tunnelVariance  ==  2 ? " selected=\"selected\"" : "") %>><%=intl._("+ 0-2 hop variance (high additive randomisation, subtractive performance)")%></option>
-                    <option value="-1"<%=(tunnelVariance == -1 ? " selected=\"selected\"" : "") %>><%=intl._("+/- 0-1 hop variance (standard randomisation, standard performance)")%></option>
-                    <option value="-2"<%=(tunnelVariance == -2 ? " selected=\"selected\"" : "") %>><%=intl._("+/- 0-2 hop variance (not recommended)")%></option>
+                  %><option value="0"<%=(tunnelVariance  ==  0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 hop variance (no randomisation, consistant performance)")%></option>
+                    <option value="1"<%=(tunnelVariance  ==  1 ? " selected=\"selected\"" : "") %>><%=intl._t("+ 0-1 hop variance (medium additive randomisation, subtractive performance)")%></option>
+                    <option value="2"<%=(tunnelVariance  ==  2 ? " selected=\"selected\"" : "") %>><%=intl._t("+ 0-2 hop variance (high additive randomisation, subtractive performance)")%></option>
+                    <option value="-1"<%=(tunnelVariance == -1 ? " selected=\"selected\"" : "") %>><%=intl._t("+/- 0-1 hop variance (standard randomisation, standard performance)")%></option>
+                    <option value="-2"<%=(tunnelVariance == -2 ? " selected=\"selected\"" : "") %>><%=intl._t("+/- 0-2 hop variance (not recommended)")%></option>
                 <% if (tunnelVariance > 2 || tunnelVariance < -2) {
-                %>    <option value="<%=tunnelVariance%>" selected="selected"><%= (tunnelVariance > 2 ? "+ " : "+/- ") %>0-<%=tunnelVariance%> <%=intl._("hop variance")%></option>
+                %>    <option value="<%=tunnelVariance%>" selected="selected"><%= (tunnelVariance > 2 ? "+ " : "+/- ") %>0-<%=tunnelVariance%> <%=intl._t("hop variance")%></option>
                 <% }
               %></select>                
             </div>                
             <div id="countField" class="rowItem">
                 <label for="tunnelQuantity" accesskey="C">
-                    <%=intl._("Count")%>(<span class="accessKey">C</span>):
+                    <%=intl._t("Count")%>(<span class="accessKey">C</span>):
                 </label>
                 <select id="tunnelQuantity" name="tunnelQuantity" title="Number of Tunnels in Group" class="selectbox">
                     <%=editBean.getQuantityOptions(curTunnel)%>
@@ -299,16 +304,16 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             </div>
             <div id="backupField" class="rowItem">
                 <label for="tunnelBackupQuantity" accesskey="b">
-                    <%=intl._("Backup Count")%>(<span class="accessKey">B</span>):
+                    <%=intl._t("Backup Count")%>(<span class="accessKey">B</span>):
                 </label>
                 <select id="tunnelBackupQuantity" name="tunnelBackupQuantity" title="Number of Reserve Tunnels" class="selectbox">
                     <% int tunnelBackupQuantity = editBean.getTunnelBackupQuantity(curTunnel, 0);
-                  %><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>><%=intl._("0 backup tunnels (0 redundancy, no added resource usage)")%></option>
-                    <option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 backup tunnel each direction (low redundancy, low resource usage)")%></option>
-                    <option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 backup tunnels each direction (medium redundancy, medium resource usage)")%></option>
-                    <option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._("3 backup tunnels each direction (high redundancy, high resource usage)")%></option>
+                  %><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 backup tunnels (0 redundancy, no added resource usage)")%></option>
+                    <option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._t("1 backup tunnel each direction (low redundancy, low resource usage)")%></option>
+                    <option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._t("2 backup tunnels each direction (medium redundancy, medium resource usage)")%></option>
+                    <option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._t("3 backup tunnels each direction (high redundancy, high resource usage)")%></option>
                 <% if (tunnelBackupQuantity > 3) {
-                %>    <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> <%=intl._("backup tunnels")%></option>
+                %>    <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> <%=intl._t("backup tunnels")%></option>
                 <% }
               %></select>                
             </div>
@@ -320,20 +325,20 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if (!"streamrclient".equals(tunnelType)) { %>
             <div id="profileField" class="rowItem">
                 <label for="profile" accesskey="f">
-                    <%=intl._("Profile")%>(<span class="accessKey">f</span>):
+                    <%=intl._t("Profile")%>(<span class="accessKey">f</span>):
                 </label>
                 <select id="profile" name="profile" title="Connection Profile" class="selectbox">
                     <% boolean interactiveProfile = editBean.isInteractive(curTunnel);
-                  %><option <%=(interactiveProfile == true  ? "selected=\"selected\" " : "")%>value="interactive"><%=intl._("interactive connection")%> </option>
-                    <option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk"><%=intl._("bulk connection (downloads/websites/BT)")%> </option>
+                  %><option <%=(interactiveProfile == true  ? "selected=\"selected\" " : "")%>value="interactive"><%=intl._t("interactive connection")%> </option>
+                    <option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk"><%=intl._t("bulk connection (downloads/websites/BT)")%> </option>
                 </select>                
             </div>
             <div id="delayConnectField" class="rowItem">
                 <label for="connectDelay" accesskey="y">
-                    <%=intl._("Delay Connect")%>(<span class="accessKey">y</span>):
+                    <%=intl._t("Delay Connect")%>(<span class="accessKey">y</span>):
                 </label>
                 <input value="1000" type="checkbox" id="connectDelay" name="connectDelay" title="Delay Connection"<%=(editBean.shouldDelay(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <span class="comment">(<%=intl._("for request/response connections")%>)</span>
+                <span class="comment">(<%=intl._t("for request/response connections")%>)</span>
             </div>
 
             <div class="subdivider">
@@ -342,17 +347,17 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% } // !streamrclient %>
 
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Router I2CP Address")%>:</label>
+                <label><%=intl._t("Router I2CP Address")%>:</label>
             </div>
             <div id="optionsHostField" class="rowItem">
                 <label for="clientHost" accesskey="o">
-                    <%=intl._("Host")%>(<span class="accessKey">o</span>):
+                    <%=intl._t("Host")%>(<span class="accessKey">o</span>):
                 </label>
                 <input type="text" id="clientHost" name="clientHost" size="20" title="I2CP Hostname or IP" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext" <% if (editBean.isRouterContext()) { %> readonly="readonly" <% } %> />                
             </div>
             <div id="optionsPortField" class="rowItem">
                 <label for="clientPort" accesskey="r">
-                    <%=intl._("Port")%>(<span class="accessKey">r</span>):
+                    <%=intl._t("Port")%>(<span class="accessKey">r</span>):
                 </label>
                 <input type="text" id="clientPort" name="clientport" size="20" title="I2CP Port Number" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext" <% if (editBean.isRouterContext()) { %> readonly="readonly" <% } %> />                
             </div>
@@ -364,12 +369,12 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
             <div id="optionsField" class="rowItem">
                 <label for="reduce" accesskey="c">
-                    <%=intl._("Delay tunnel open until required")%>(<span class="accessKey">D</span>):
+                    <%=intl._t("Delay tunnel open until required")%>(<span class="accessKey">D</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
                 <label for="access" accesskey="c">
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="delayOpen" title="Delay Tunnel Open"<%=(editBean.getDelayOpen(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
@@ -381,24 +386,24 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            
             <div id="optionsField" class="rowItem">
                 <label for="reduce" accesskey="d">
-                    <%=intl._("Reduce tunnel quantity when idle")%>(<span class="accessKey">d</span>):
+                    <%=intl._t("Reduce tunnel quantity when idle")%>(<span class="accessKey">d</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
                 <label for="access" accesskey="d">
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="reduce" title="Reduce Tunnels"<%=(editBean.getReduce(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="portField" class="rowItem">
                 <label for="reduceCount" accesskey="d">
-                    <%=intl._("Reduced tunnel count")%>:
+                    <%=intl._t("Reduced tunnel count")%>:
                 </label>
                 <input type="text" id="port" name="reduceCount" size="1" maxlength="1" title="Reduced Tunnel Count" value="<%=editBean.getReduceCount(curTunnel)%>" class="freetext" />                
             </div>
             <div id="portField" class="rowItem">
                 <label for="reduceTime" accesskey="d">
-                    <%=intl._("Idle minutes")%>:
+                    <%=intl._t("Idle minutes")%>:
                 </label>
                 <input type="text" id="port" name="reduceTime" size="4" maxlength="4" title="Reduced Tunnel Idle Time" value="<%=editBean.getReduceTime(curTunnel)%>" class="freetext" />                
             </div>
@@ -409,31 +414,31 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            
             <div id="optionsField" class="rowItem">
                 <label for="reduce" accesskey="c">
-                    <%=intl._("Close tunnels when idle")%>(<span class="accessKey">C</span>):
+                    <%=intl._t("Close tunnels when idle")%>(<span class="accessKey">C</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
                 <label for="access" accesskey="c">
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="close" title="Close Tunnels"<%=(editBean.getClose(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="portField" class="rowItem">
                 <label for="access" accesskey="c">
-                    <%=intl._("New Keys on Reopen")%>:
+                    <%=intl._t("New Keys on Reopen")%>:
                 </label>
                 <table border="0"><tr><!-- I give up -->
                 <td><input value="1" type="radio" id="startOnLoad" name="newDest" title="New Destination"
                      <%=(editBean.getNewDest(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" /></td>
-                <td><%=intl._("Enable")%></td>
+                <td><%=intl._t("Enable")%></td>
                 <td><input value="0" type="radio" id="startOnLoad" name="newDest" title="New Destination"
                      <%=(editBean.getNewDest(curTunnel) || editBean.getPersistentClientKey(curTunnel) ? "" : " checked=\"checked\"")%> class="tickbox" /></td>
-                <td><%=intl._("Disable")%></td></tr>
+                <td><%=intl._t("Disable")%></td></tr>
                 </table>
             </div>
             <div id="portField" class="rowItem">
                 <label for="reduceTime" accesskey="c">
-                    <%=intl._("Idle minutes")%>:
+                    <%=intl._t("Idle minutes")%>:
                 </label>
                 <input type="text" id="port" name="closeTime" size="4" maxlength="4" title="Close Tunnel Idle Time" value="<%=editBean.getCloseTime(curTunnel)%>" class="freetext" />                
             </div>
@@ -445,16 +450,16 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "socksirctunnel".equals(tunnelType) || "sockstunnel".equals(tunnelType)) { %>
             <div id="optionsField" class="rowItem">
                 <label for="privKeyFile" accesskey="k">
-                    <%=intl._("Persistent private key")%>(<span class="accessKey">k</span>):
+                    <%=intl._t("Persistent private key")%>(<span class="accessKey">k</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
-                <label><%=intl._("Enable")%>:</label>
+                <label><%=intl._t("Enable")%>:</label>
                 <input value="2" type="radio" id="startOnLoad" name="newDest" title="New Destination"
                      <%=(editBean.getPersistentClientKey(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="reachField" class="rowItem">
-                <label><%=intl._("File")%>:</label>
+                <label><%=intl._t("File")%>:</label>
                 <input type="text" size="30" id="clientHost" name="privKeyFile" title="Path to Private Key File" value="<%=editBean.getPrivateKeyFile(curTunnel)%>" class="freetext" />               
             </div>
          <%
@@ -462,12 +467,12 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             if (destb64.length() > 0) {
            %>   <div id="destinationField" class="rowItem">
                     <label for="localDestination" accesskey="L">
-                        <%=intl._("Local destination")%>(<span class="accessKey">L</span>):
+                        <%=intl._t("Local destination")%>(<span class="accessKey">L</span>):
                     </label>
                     <textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=destb64%></textarea>               
                 </div>
                 <div id="destinationField" class="rowItem">
-                    <label><%=intl._("Local Base 32")%>:</label>
+                    <label><%=intl._t("Local Base 32")%>:</label>
                     <%=editBean.getDestHashBase32(curTunnel)%>
                 </div>
          <% } // if destb64  %>
@@ -479,31 +484,31 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
          <% if ("httpclient".equals(tunnelType)) { %>
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Pass User-Agent header through")%>:</label>
+                <label><%=intl._t("Pass User-Agent header through")%>:</label>
             </div>
             <div id="portField" class="rowItem">
-                <label><%=intl._("Enable")%>:</label>
+                <label><%=intl._t("Enable")%>:</label>
                 <input value="1" type="checkbox" id="startOnLoad" name="allowUserAgent" title="Do not spoof user agent string when checked"<%=(editBean.getAllowUserAgent(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div><br />
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Pass Referer header through")%>:</label>
+                <label><%=intl._t("Pass Referer header through")%>:</label>
             </div>
             <div id="portField" class="rowItem">
-                <label><%=intl._("Enable")%>:</label>
+                <label><%=intl._t("Enable")%>:</label>
                 <input value="1" type="checkbox" id="startOnLoad" name="allowReferer" title="Do not block referer header when checked"<%=(editBean.getAllowReferer(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div><br />
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Pass Accept headers through")%>:</label>
+                <label><%=intl._t("Pass Accept headers through")%>:</label>
             </div>
             <div id="portField" class="rowItem">
-                <label><%=intl._("Enable")%>:</label>
+                <label><%=intl._t("Enable")%>:</label>
                 <input value="1" type="checkbox" id="startOnLoad" name="allowAccept" title="Do not block accept headers when checked"<%=(editBean.getAllowAccept(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div><br />
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Allow SSL to I2P addresses")%>:</label>
+                <label><%=intl._t("Allow SSL to I2P addresses")%>:</label>
             </div>
             <div id="portField" class="rowItem">
-                <label><%=intl._("Enable")%>:</label>
+                <label><%=intl._t("Enable")%>:</label>
                 <input value="1" type="checkbox" id="startOnLoad" name="allowInternalSSL" title="Allow SSL to I2P addresses when checked"<%=(editBean.getAllowInternalSSL(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div class="subdivider">
@@ -516,8 +521,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            %>
             <div id="tunnelOptionsField" class="rowItem">
                 <label>
-                    <%=intl._("Signature type")%>
-                    (<%=intl._("Experts only!")%>)
+                    <%=intl._t("Signature type")%>
+                    (<%=intl._t("Experts only!")%>)
                 </label>
             </div>
             <div id="hostField" class="rowItem">
@@ -558,23 +563,23 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
          <% if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %>
             <div id="accessField" class="rowItem">
-                <label><%=intl._("Local Authorization")%>:</label>
+                <label><%=intl._t("Local Authorization")%>:</label>
             </div>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="proxyAuth" title="Check to require authorization for this service"<%=(editBean.getProxyAuth(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Username")%>:
+                    <%=intl._t("Username")%>:
                 </label>
                 <input type="text" id="clientPort" name="proxyUsername" title="Set username for this service" value="" class="freetext" />                
             </div>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Password")%>:
+                    <%=intl._t("Password")%>:
                 </label>
                 <input type="password" id="clientPort" name="nofilter_proxyPassword" title="Set password for this service" value="" class="freetext" />                
             </div>
@@ -582,23 +587,23 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                 <hr />
             </div>
             <div id="accessField" class="rowItem">
-                <label><%=intl._("Outproxy Authorization")%>:</label>
+                <label><%=intl._t("Outproxy Authorization")%>:</label>
             </div>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="outproxyAuth" title="Check if the outproxy requires authorization"<%=(editBean.getOutproxyAuth(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Username")%>:
+                    <%=intl._t("Username")%>:
                 </label>
                 <input type="text" id="clientPort" name="outproxyUsername" title="Enter username required by outproxy" value="<%=editBean.getOutproxyUsername(curTunnel)%>" class="freetext" />                
             </div>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Password")%>:
+                    <%=intl._t("Password")%>:
                 </label>
                 <input type="password" id="clientPort" name="nofilter_outproxyPassword" title="Enter password required by outproxy" value="<%=editBean.getOutproxyPassword(curTunnel)%>" class="freetext" />                
             </div>
@@ -609,7 +614,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
          <% if ("httpclient".equals(tunnelType)) { %>
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Jump URL List")%>:</label>
+                <label><%=intl._t("Jump URL List")%>:</label>
             </div>
             <div id="hostField" class="rowItem">
                 <textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="jumpList" title="List of helper URLs to offer when a host is not found in your addressbook" wrap="off" spellcheck="false"><%=editBean.getJumpList(curTunnel)%></textarea>               
@@ -621,7 +626,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
             <div id="customOptionsField" class="rowItem">
                 <label for="customOptions" accesskey="u">
-                    <%=intl._("Custom options")%>(<span class="accessKey">u</span>):
+                    <%=intl._t("Custom options")%>(<span class="accessKey">u</span>):
                 </label>
                 <input type="text" id="customOptions" name="nofilter_customOptions" size="60" title="Custom Options" value="<%=editBean.getCustomOptions(curTunnel)%>" class="freetext" spellcheck="false"/>                
             </div>
@@ -634,9 +639,9 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <div class="footer">
                 <div class="toolbox">
                     <input type="hidden" value="true" name="removeConfirm" />
-                    <button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel"><%=intl._("Cancel")%></button>
-                    <button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><%=intl._("Delete")%>(<span class="accessKey">D</span>)</button>
-                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><%=intl._("Save")%>(<span class="accessKey">S</span>)</button>
+                    <button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel"><%=intl._t("Cancel")%></button>
+                    <button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><%=intl._t("Delete")%>(<span class="accessKey">D</span>)</button>
+                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><%=intl._t("Save")%>(<span class="accessKey">S</span>)</button>
                 </div>
             </div> 
         </div>
diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp
index 0d7c050937b112045bf2e97dfb2a03f233290918..22810a2eebad638e4a9fecd64f3a15de8d64b27c 100644
--- a/apps/i2ptunnel/jsp/editServer.jsp
+++ b/apps/i2ptunnel/jsp/editServer.jsp
@@ -16,7 +16,7 @@
 %>
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
-    <title><%=intl._("Hidden Services Manager")%> - <%=intl._("Edit Hidden Service")%></title>
+    <title><%=intl._t("Hidden Services Manager")%> - <%=intl._t("Edit Hidden Service")%></title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
     <link href="/themes/console/images/favicon.ico" type="image/x-icon" rel="shortcut icon" />
@@ -49,14 +49,14 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                 if (curTunnel >= 0) {
                     tunnelTypeName = editBean.getTunnelType(curTunnel);
                     tunnelType = editBean.getInternalType(curTunnel);
-                  %><h4><%=intl._("Edit server settings")%></h4><% 
+                  %><h4><%=intl._t("Edit server settings")%></h4><% 
                 } else {
                     tunnelTypeName = editBean.getTypeName(request.getParameter("type"));
                     tunnelType = net.i2p.data.DataHelper.stripHTML(request.getParameter("type"));
-                  %><h4><%=intl._("New server settings")%></h4><% 
+                  %><h4><%=intl._t("New server settings")%></h4><% 
                 } %>
                 <input type="hidden" name="tunnel" value="<%=curTunnel%>" />
-                <input type="hidden" name="nonce" value="<%=editBean.getNextNonce()%>" />
+                <input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
                 <input type="hidden" name="type" value="<%=tunnelType%>" />
                 <%
                 // these are four keys that are generated automatically on first save,
@@ -87,26 +87,26 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
             <div id="nameField" class="rowItem">
                 <label for="name" accesskey="N">
-                    <%=intl._("Name")%>(<span class="accessKey">N</span>):
+                    <%=intl._t("Name")%>(<span class="accessKey">N</span>):
                 </label>
                 <input type="text" size="30" maxlength="50" name="name" id="name" title="Tunnel Name" value="<%=editBean.getTunnelName(curTunnel)%>" class="freetext" />               
             </div>
             <div id="typeField" class="rowItem">
-                <label><%=intl._("Type")%>:</label>
+                <label><%=intl._t("Type")%>:</label>
                 <span class="text"><%=tunnelTypeName%></span>
             </div>
             <div id="descriptionField" class="rowItem">
                 <label for="description" accesskey="e">
-                    <%=intl._("Description")%>(<span class="accessKey">e</span>):
+                    <%=intl._t("Description")%>(<span class="accessKey">e</span>):
                 </label>
                 <input type="text" size="60" maxlength="80" name="nofilter_description"  id="description" title="Tunnel Description" value="<%=editBean.getTunnelDescription(curTunnel)%>" class="freetext" />                
             </div>
             <div id="startupField" class="rowItem">
                 <label for="startOnLoad" accesskey="a">
-                    <%=intl._("Auto Start")%>(<span class="accessKey">A</span>):
+                    <%=intl._t("Auto Start")%>(<span class="accessKey">A</span>):
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="startOnLoad" title="Start Tunnel Automatically"<%=(editBean.startAutomatically(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <span class="comment"><%=intl._("(Check the Box for 'YES')")%></span>
+                <span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
             </div>
                  
             <div class="subdivider">
@@ -115,26 +115,26 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                  
             <div id="targetField" class="rowItem">
          <% if ("streamrserver".equals(tunnelType)) { %>
-                <label><%=intl._("Access Point")%>:</label>
+                <label><%=intl._t("Access Point")%>:</label>
          <% } else { %>
-                <label><%=intl._("Target")%>:</label>
+                <label><%=intl._t("Target")%>:</label>
          <% } %>
             </div>
          <% if (!"streamrserver".equals(tunnelType)) { %>
             <div id="hostField" class="rowItem">
                 <label for="targetHost" accesskey="H">
-                    <%=intl._("Host")%>(<span class="accessKey">H</span>):
+                    <%=intl._t("Host")%>(<span class="accessKey">H</span>):
                 </label>
                 <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=editBean.getTargetHost(curTunnel)%>" class="freetext" />                
             </div>
          <% } /* !streamrserver */ %>
             <div id="portField" class="rowItem">
                 <label for="targetPort" accesskey="P">
-                    <%=intl._("Port")%>(<span class="accessKey">P</span>):
+                    <%=intl._t("Port")%>(<span class="accessKey">P</span>):
                     <% String value = editBean.getTargetPort(curTunnel);
                        if (value == null || "".equals(value.trim())) {
                            out.write(" <font color=\"red\">(");
-                           out.write(intl._("required"));
+                           out.write(intl._t("required"));
                            out.write(")</font>");
                        }   
                      %>
@@ -144,7 +144,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if (!"streamrserver".equals(tunnelType)) { %>
             <div id="portField" class="rowItem">
                 <label>
-                    <%=intl._("Use SSL?")%>
+                    <%=intl._t("Use SSL?")%>
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="useSSL" title="Use SSL to connect to target" <%=(editBean.isSSLEnabled(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
@@ -155,7 +155,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                 <hr />
             </div>
             <div id="accessField" class="rowItem">
-                <label><%=intl._("Access Point")%>:</label>
+                <label><%=intl._t("Access Point")%>:</label>
             </div> 
             <div id="portField" class="rowItem">
            	<label for="port" accesskey="P">
@@ -163,7 +163,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            	     <% String value4 = editBean.getClientPort(curTunnel);
            	        if (value4 == null || "".equals(value4.trim())) {
            	            out.write(" <font color=\"red\">(");
-           	            out.write(intl._("required"));
+           	            out.write(intl._t("required"));
            	            out.write(")</font>");
            	        }
                	      %>
@@ -174,7 +174,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if ("httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) { %>
             <div id="reachField" class="rowItem">
                 <label for="reachableBy" accesskey="r">
-                    <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
+                    <%=intl._t("Reachable by")%>(<span class="accessKey">R</span>):
                 </label>
                 <select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
               <%
@@ -201,19 +201,19 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
           %><div id="websiteField" class="rowItem">
                 <label for="spoofedHost" accesskey="W">
-                    <%=intl._("Website name")%>(<span class="accessKey">W</span>):
+                    <%=intl._t("Website name")%>(<span class="accessKey">W</span>):
                 </label>
                 <input type="text" size="20" id="targetHost" name="spoofedHost" title="Website Host Name" value="<%=editBean.getSpoofedHost(curTunnel)%>" class="freetext" />                
-                <span class="comment"><%=intl._("(leave blank for outproxies)")%></span>
+                <span class="comment"><%=intl._t("(leave blank for outproxies)")%></span>
             </div>
             <% }
           %><div id="privKeyField" class="rowItem">
                 <label for="privKeyFile" accesskey="k">
-                    <%=intl._("Private key file")%>(<span class="accessKey">k</span>):
+                    <%=intl._t("Private key file")%>(<span class="accessKey">k</span>):
                     <% String value3 = editBean.getPrivateKeyFile(curTunnel);
                        if (value3 == null || "".equals(value3.trim())) {
                            out.write(" <font color=\"red\">(");
-                           out.write(intl._("required"));
+                           out.write(intl._t("required"));
                            out.write(")</font>");
                        }
                      %>
@@ -223,7 +223,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
             <div id="destinationField" class="rowItem">
                 <label for="localDestination" accesskey="L">
-                    <%=intl._("Local destination")%>(<span class="accessKey">L</span>):
+                    <%=intl._t("Local destination")%>(<span class="accessKey">L</span>):
                 </label>
                 <textarea rows="1" style="height: 3em;" cols="60" readonly="readonly" id="localDestination" title="Read Only: Local Destination (if known)" wrap="off" spellcheck="false"><%=editBean.getDestinationBase64(curTunnel)%></textarea>               
          <% String b64 = editBean.getDestinationBase64(curTunnel);
@@ -232,7 +232,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                 if (name == null || name.equals(""))
                     name = editBean.getTunnelName(curTunnel);
                 if (!"".equals(name)) { %>
-                    <a href="/susidns/addressbook.jsp?book=private&amp;hostname=<%=name%>&amp;destination=<%=b64%>#add"><%=intl._("Add to local addressbook")%></a>    
+                    <a href="/susidns/addressbook.jsp?book=private&amp;hostname=<%=name%>&amp;destination=<%=b64%>#add"><%=intl._t("Add to local addressbook")%></a>    
          <%     }
             } %>
             </div>
@@ -240,7 +240,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
           %><div id="sigField" class="rowItem">
                 <label for="signature">
-                    <%=intl._("Hostname Signature")%>
+                    <%=intl._t("Hostname Signature")%>
                 </label>
                 <input type="text" size="30" readonly="readonly" title="Use to prove that the website name is for this destination" value="<%=editBean.getNameSignature(curTunnel)%>" wrap="off" class="freetext" />                
             </div>
@@ -252,7 +252,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
         <div id="tunnelAdvancedNetworking" class="panel">
             <div class="header">
-                <h4><%=intl._("Advanced networking options")%></h4>
+                <h4><%=intl._t("Advanced networking options")%></h4>
             </div>
 
             <div class="separator">
@@ -260,42 +260,47 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             </div>
             
             <div id="tunnelOptionsField" class="rowItem">
-                <label><%=intl._("Tunnel Options")%>:</label>
+                <label><%=intl._t("Tunnel Options")%>:</label>
             </div>
             <div id="depthField" class="rowItem">
                 <label for="tunnelDepth" accesskey="t">
-                    <%=intl._("Length")%>(<span class="accessKey">t</span>):
+                    <%=intl._t("Length")%>(<span class="accessKey">t</span>):
                 </label>
                 <select id="tunnelDepth" name="tunnelDepth" title="Length of each Tunnel" class="selectbox">
                     <% int tunnelDepth = editBean.getTunnelDepth(curTunnel, 3);
-                  %><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>><%=intl._("0 hop tunnel (no anonymity)")%></option>
-                    <option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 hop tunnel (low anonymity)")%></option>
-                    <option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 hop tunnel (medium anonymity)")%></option>
-                    <option value="3"<%=(tunnelDepth == 3 ? " selected=\"selected\"" : "") %>><%=intl._("3 hop tunnel (high anonymity)")%></option>
-                <% if (tunnelDepth > 3) { 
-                %>    <option value="<%=tunnelDepth%>" selected="selected"><%=tunnelDepth%> <%=intl._("hop tunnel (very poor performance)")%></option>
+                  %><option value="0"<%=(tunnelDepth == 0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 hop tunnel (no anonymity)")%></option>
+                    <option value="1"<%=(tunnelDepth == 1 ? " selected=\"selected\"" : "") %>><%=intl._t("1 hop tunnel (low anonymity)")%></option>
+                    <option value="2"<%=(tunnelDepth == 2 ? " selected=\"selected\"" : "") %>><%=intl._t("2 hop tunnel (medium anonymity)")%></option>
+                    <option value="3"<%=(tunnelDepth == 3 ? " selected=\"selected\"" : "") %>><%=intl._t("3 hop tunnel (high anonymity)")%></option>
+                <% if (editBean.isAdvanced()) {
+                  %><option value="4"<%=(tunnelDepth == 4 ? " selected=\"selected\"" : "") %>>4 hop tunnel</option>
+                    <option value="5"<%=(tunnelDepth == 5 ? " selected=\"selected\"" : "") %>>5 hop tunnel</option>
+                    <option value="6"<%=(tunnelDepth == 6 ? " selected=\"selected\"" : "") %>>6 hop tunnel</option>
+                    <option value="7"<%=(tunnelDepth == 7 ? " selected=\"selected\"" : "") %>>7 hop tunnel</option>
+                <% } else if (tunnelDepth > 3) { 
+                %>    <option value="<%=tunnelDepth%>" selected="selected"><%=tunnelDepth%> <%=intl._t("hop tunnel (very poor performance)")%></option>
                 <% }
               %></select>
             </div>
             <div id="varianceField" class="rowItem">
                 <label for="tunnelVariance" accesskey="v">
-                    <%=intl._("Variance")%>(<span class="accessKey">V</span>):
+                    <%=intl._t("Variance")%>(<span class="accessKey">V</span>):
                 </label>
                 <select id="tunnelVariance" name="tunnelVariance" title="Level of Randomization for Tunnel Depth" class="selectbox">
                     <% int tunnelVariance = editBean.getTunnelVariance(curTunnel, 0);
-                  %><option value="0"<%=(tunnelVariance  ==  0 ? " selected=\"selected\"" : "") %>><%=intl._("0 hop variance (no randomisation, consistant performance)")%></option>
-                    <option value="1"<%=(tunnelVariance  ==  1 ? " selected=\"selected\"" : "") %>><%=intl._("+ 0-1 hop variance (medium additive randomisation, subtractive performance)")%></option>
-                    <option value="2"<%=(tunnelVariance  ==  2 ? " selected=\"selected\"" : "") %>><%=intl._("+ 0-2 hop variance (high additive randomisation, subtractive performance)")%></option>
-                    <option value="-1"<%=(tunnelVariance == -1 ? " selected=\"selected\"" : "") %>><%=intl._("+/- 0-1 hop variance (standard randomisation, standard performance)")%></option>
-                    <option value="-2"<%=(tunnelVariance == -2 ? " selected=\"selected\"" : "") %>><%=intl._("+/- 0-2 hop variance (not recommended)")%></option>
+                  %><option value="0"<%=(tunnelVariance  ==  0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 hop variance (no randomisation, consistant performance)")%></option>
+                    <option value="1"<%=(tunnelVariance  ==  1 ? " selected=\"selected\"" : "") %>><%=intl._t("+ 0-1 hop variance (medium additive randomisation, subtractive performance)")%></option>
+                    <option value="2"<%=(tunnelVariance  ==  2 ? " selected=\"selected\"" : "") %>><%=intl._t("+ 0-2 hop variance (high additive randomisation, subtractive performance)")%></option>
+                    <option value="-1"<%=(tunnelVariance == -1 ? " selected=\"selected\"" : "") %>><%=intl._t("+/- 0-1 hop variance (standard randomisation, standard performance)")%></option>
+                    <option value="-2"<%=(tunnelVariance == -2 ? " selected=\"selected\"" : "") %>><%=intl._t("+/- 0-2 hop variance (not recommended)")%></option>
                 <% if (tunnelVariance > 2 || tunnelVariance < -2) {
-                %>    <option value="<%=tunnelVariance%>" selected="selected"><%= (tunnelVariance > 2 ? "+ " : "+/- ") %>0-<%=tunnelVariance%> <%=intl._("hop variance")%></option>
+                %>    <option value="<%=tunnelVariance%>" selected="selected"><%= (tunnelVariance > 2 ? "+ " : "+/- ") %>0-<%=tunnelVariance%> <%=intl._t("hop variance")%></option>
                 <% }
               %></select>                
             </div>
             <div id="countField" class="rowItem">
                 <label for="tunnelQuantity" accesskey="C">
-                    <%=intl._("Count")%>(<span class="accessKey">C</span>):
+                    <%=intl._t("Count")%>(<span class="accessKey">C</span>):
                 </label>
                 <select id="tunnelQuantity" name="tunnelQuantity" title="Number of Tunnels in Group" class="selectbox">
                     <%=editBean.getQuantityOptions(curTunnel)%>
@@ -303,16 +308,16 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             </div>
             <div id="backupField" class="rowItem">
                 <label for="tunnelBackupQuantity" accesskey="b">
-                    <%=intl._("Backup Count")%>(<span class="accessKey">B</span>):
+                    <%=intl._t("Backup Count")%>(<span class="accessKey">B</span>):
                 </label>
                 <select id="tunnelBackupQuantity" name="tunnelBackupQuantity" title="Number of Reserve Tunnels" class="selectbox">
                     <% int tunnelBackupQuantity = editBean.getTunnelBackupQuantity(curTunnel, 0);
-                  %><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>><%=intl._("0 backup tunnels (0 redundancy, no added resource usage)")%></option>
-                    <option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._("1 backup tunnel each direction (low redundancy, low resource usage)")%></option>
-                    <option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._("2 backup tunnels each direction (medium redundancy, medium resource usage)")%></option>
-                    <option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._("3 backup tunnels each direction (high redundancy, high resource usage)")%></option>
+                  %><option value="0"<%=(tunnelBackupQuantity == 0 ? " selected=\"selected\"" : "") %>><%=intl._t("0 backup tunnels (0 redundancy, no added resource usage)")%></option>
+                    <option value="1"<%=(tunnelBackupQuantity == 1 ? " selected=\"selected\"" : "") %>><%=intl._t("1 backup tunnel each direction (low redundancy, low resource usage)")%></option>
+                    <option value="2"<%=(tunnelBackupQuantity == 2 ? " selected=\"selected\"" : "") %>><%=intl._t("2 backup tunnels each direction (medium redundancy, medium resource usage)")%></option>
+                    <option value="3"<%=(tunnelBackupQuantity == 3 ? " selected=\"selected\"" : "") %>><%=intl._t("3 backup tunnels each direction (high redundancy, high resource usage)")%></option>
                 <% if (tunnelBackupQuantity > 3) {
-                %>    <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> <%=intl._("backup tunnels")%></option>
+                %>    <option value="<%=tunnelBackupQuantity%>" selected="selected"><%=tunnelBackupQuantity%> <%=intl._t("backup tunnels")%></option>
                 <% }
               %></select>                
             </div>
@@ -324,12 +329,12 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% if (!"streamrserver".equals(tunnelType)) { %>
             <div id="profileField" class="rowItem">
                 <label for="profile" accesskey="f">
-                    <%=intl._("Profile")%>(<span class="accessKey">f</span>):
+                    <%=intl._t("Profile")%>(<span class="accessKey">f</span>):
                 </label>
                 <select id="profile" name="profile" title="Connection Profile" class="selectbox">
                     <% boolean interactiveProfile = editBean.isInteractive(curTunnel);
-                  %><option <%=(interactiveProfile == true  ? "selected=\"selected\" " : "")%>value="interactive"><%=intl._("interactive connection")%> </option>
-                    <option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk"><%=intl._("bulk connection (downloads/websites/BT)")%> </option>
+                  %><option <%=(interactiveProfile == true  ? "selected=\"selected\" " : "")%>value="interactive"><%=intl._t("interactive connection")%> </option>
+                    <option <%=(interactiveProfile == false ? "selected=\"selected\" " : "")%>value="bulk"><%=intl._t("bulk connection (downloads/websites/BT)")%> </option>
                 </select>                
             </div> 
 
@@ -339,17 +344,17 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
          <% } /* !streamrserver */ %>
 
             <div id="optionsField" class="rowItem">
-                <label><%=intl._("Router I2CP Address")%>:</label>
+                <label><%=intl._t("Router I2CP Address")%>:</label>
             </div>
             <div id="optionsHostField" class="rowItem">
                 <label for="clientHost" accesskey="o">
-                    <%=intl._("Host")%>(<span class="accessKey">o</span>):
+                    <%=intl._t("Host")%>(<span class="accessKey">o</span>):
                 </label>
                 <input type="text" id="clientHost" name="clientHost" size="20" title="I2CP Hostname or IP" value="<%=editBean.getI2CPHost(curTunnel)%>" class="freetext" <% if (editBean.isRouterContext()) { %> readonly="readonly" <% } %> />                
             </div>
             <div id="optionsPortField" class="rowItem">
                 <label for="clientPort" accesskey="r">
-                    <%=intl._("Port")%>(<span class="accessKey">r</span>):
+                    <%=intl._t("Port")%>(<span class="accessKey">r</span>):
                 </label>
                 <input type="text" id="clientPort" name="clientport" size="20" title="I2CP Port Number" value="<%=editBean.getI2CPPort(curTunnel)%>" class="freetext" <% if (editBean.isRouterContext()) { %> readonly="readonly" <% } %> />                
             </div>
@@ -360,27 +365,27 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            
             <div id="optionsField" class="rowItem">
                 <label for="encrypt" accesskey="e">
-                    <%=intl._("Encrypt Leaseset")%>(<span class="accessKey">E</span>):
+                    <%=intl._t("Encrypt Leaseset")%>(<span class="accessKey">E</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
                 <label for="encrypt" accesskey="e">
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="encrypt" title="ONLY clients with the encryption key will be able to connect"<%=(editBean.getEncrypt(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="portField" class="rowItem">
                 <label for="encrypt" accesskey="e">
-                    <%=intl._("Encryption Key")%>:
+                    <%=intl._t("Encryption Key")%>:
                 </label>
                 <textarea rows="1" style="height: 3em;" cols="44" id="portField" name="encryptKey" title="Encrypt Key" wrap="off" spellcheck="false"><%=editBean.getEncryptKey(curTunnel)%></textarea>               
             </div>
             <div id="portField" class="rowItem">
                 <label for="force" accesskey="c">
-                    <%=intl._("Generate New Key")%>:
+                    <%=intl._t("Generate New Key")%>:
                 </label>
-                <button accesskey="S" class="control" type="submit" name="action" value="Generate" title="Generate New Key Now"><%=intl._("Generate")%></button>
-                <span class="comment"><%=intl._("(Tunnel must be stopped first)")%></span>
+                <button accesskey="S" class="control" type="submit" name="action" value="Generate" title="Generate New Key Now"><%=intl._t("Generate")%></button>
+                <span class="comment"><%=intl._t("(Tunnel must be stopped first)")%></span>
             </div>
                  
             <div class="subdivider">
@@ -389,20 +394,20 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            
             <div id="optionsField" class="rowItem">
                 <label for="access" accesskey="s">
-                    <%=intl._("Restricted Access List")%>(<span class="accessKey">s</span>):
+                    <%=intl._t("Restricted Access List")%>(<span class="accessKey">s</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
-                <label><%=intl._("Disable")%></label>
+                <label><%=intl._t("Disable")%></label>
                 <input value="0" type="radio" id="startOnLoad" name="accessMode" title="Allow all clients"<%=(editBean.getAccessMode(curTunnel).equals("0") ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <label><%=intl._("Whitelist")%></label>
+                <label><%=intl._t("Whitelist")%></label>
                 <input value="1" type="radio" id="startOnLoad" name="accessMode" title="Allow listed clients only"<%=(editBean.getAccessMode(curTunnel).equals("1") ? " checked=\"checked\"" : "")%> class="tickbox" />                
-                <label><%=intl._("Blacklist")%></label>
+                <label><%=intl._t("Blacklist")%></label>
                 <input value="2" type="radio" id="startOnLoad" name="accessMode" title="Reject listed clients"<%=(editBean.getAccessMode(curTunnel).equals("2") ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="hostField" class="rowItem">
                 <label for="accessList" accesskey="s">
-                    <%=intl._("Access List")%>:
+                    <%=intl._t("Access List")%>:
                 </label>
                 <textarea rows="2" style="height: 8em;" cols="60" id="hostField" name="accessList" title="Access List" wrap="off" spellcheck="false"><%=editBean.getAccessList(curTunnel)%></textarea>               
             </div>
@@ -411,12 +416,12 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             %><div class="rowItem">
                 <div id="optionsField" class="rowItem">
                     <label>
-                        <%=intl._("Block Access via Inproxies")%>:
+                        <%=intl._t("Block Access via Inproxies")%>:
                     </label>
                 </div>
                 <div id="portField" class="rowItem">
                     <label for="access" accesskey="d">
-                        <%=intl._("Enable")%>:
+                        <%=intl._t("Enable")%>:
                     </label>
                     <input value="1" type="checkbox" id="startOnLoad" name="rejectInproxy" title="Deny inproxy access when enabled"<%=(editBean.isRejectInproxy(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
                 </div>
@@ -425,12 +430,12 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             %><div class="rowItem">
                 <div id="optionsField" class="rowItem">
                     <label>
-                        <%=intl._("Unique Local Address per Client")%>:
+                        <%=intl._t("Unique Local Address per Client")%>:
                     </label>
                 </div>
                 <div id="portField" class="rowItem">
                     <label for="access" accesskey="d">
-                        <%=intl._("Enable")%>:
+                        <%=intl._t("Enable")%>:
                     </label>
                     <input value="1" type="checkbox" id="startOnLoad" name="uniqueLocal" title="Use unique IP addresses for each connecting client (local non-SSL servers only)"<%=(editBean.getUniqueLocal(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
                 </div>
@@ -438,12 +443,12 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <div class="rowItem">
                 <div id="optionsField" class="rowItem">
                     <label>
-                        <%=intl._("Optimize for Multihoming")%>:
+                        <%=intl._t("Optimize for Multihoming")%>:
                     </label>
                 </div>
                 <div id="portField" class="rowItem">
                     <label for="access" accesskey="d">
-                        <%=intl._("Enable")%>:
+                        <%=intl._t("Enable")%>:
                     </label>
                     <input value="1" type="checkbox" id="startOnLoad" name="multihome" title="Only enable if you are hosting this service on multiple routers"<%=(editBean.getMultihome(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
                 </div>
@@ -454,24 +459,24 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 
             <div class="rowItem">
               <div id="optionsField" class="rowItem">
-                  <label><%=intl._("Inbound connection limits (0=unlimited)")%><br /><%=intl._("Per client")%>:</label>
+                  <label><%=intl._t("Inbound connection limits (0=unlimited)")%><br /><%=intl._t("Per client")%>:</label>
               </div>
               <div id="portField" class="rowItem">
-                  <label><%=intl._("Per minute")%>:</label>
+                  <label><%=intl._t("Per minute")%>:</label>
                   <input type="text" id="port" name="limitMinute" value="<%=editBean.getLimitMinute(curTunnel)%>" class="freetext" />                
               </div>
               <div id="portField" class="rowItem">
-                  <label><%=intl._("Per hour")%>:</label>
+                  <label><%=intl._t("Per hour")%>:</label>
                   <input type="text" id="port" name="limitHour" value="<%=editBean.getLimitHour(curTunnel)%>" class="freetext" />                
               </div>
               <div id="portField" class="rowItem">
-                  <label><%=intl._("Per day")%>:</label>
+                  <label><%=intl._t("Per day")%>:</label>
                   <input type="text" id="port" name="limitDay" value="<%=editBean.getLimitDay(curTunnel)%>" class="freetext" />                
               </div>
             </div>
             <div class="rowItem">
               <div id="optionsField" class="rowItem">
-                  <label><%=intl._("Total")%>:</label>
+                  <label><%=intl._t("Total")%>:</label>
               </div>
               <div id="portField" class="rowItem">
                   <input type="text" id="port" name="totalMinute" value="<%=editBean.getTotalMinute(curTunnel)%>" class="freetext" />                
@@ -485,7 +490,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             </div>
             <div class="rowItem">
               <div id="optionsField" class="rowItem">
-                  <label><%=intl._("Max concurrent connections (0=unlimited)")%>:</label>
+                  <label><%=intl._t("Max concurrent connections (0=unlimited)")%>:</label>
               </div>
               <div id="portField" class="rowItem">
                   <input type="text" id="port" name="maxStreams" value="<%=editBean.getMaxStreams(curTunnel)%>" class="freetext" />                
@@ -495,20 +500,20 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <% if (("httpserver".equals(tunnelType)) || ("httpbidirserver".equals(tunnelType))) {
               %><div class="rowItem">
                   <div id="optionsField" class="rowItem">
-                      <label><%=intl._("POST limits (0=unlimited)")%><br /><%=intl._("Per client")%>:</label>
+                      <label><%=intl._t("POST limits (0=unlimited)")%><br /><%=intl._t("Per client")%>:</label>
                   </div>
                   <div id="portField" class="rowItem">
-                      <label><%=intl._("Per period")%>:</label>
+                      <label><%=intl._t("Per period")%>:</label>
                       <input type="text" id="port" name="postMax" value="<%=editBean.getPostMax(curTunnel)%>" class="freetext" />                
                   </div>
                   <div id="portField" class="rowItem">
-                      <label><%=intl._("Ban minutes")%>:</label>
+                      <label><%=intl._t("Ban minutes")%>:</label>
                       <input type="text" id="port" name="postBanTime" value="<%=editBean.getPostBanTime(curTunnel)%>" class="freetext" />                
                   </div>
                 </div>
                 <div class="rowItem">
                   <div id="optionsField" class="rowItem">
-                      <label><%=intl._("Total")%>:</label>
+                      <label><%=intl._t("Total")%>:</label>
                   </div>
                   <div id="portField" class="rowItem">
                       <input type="text" id="port" name="postTotalMax" value="<%=editBean.getPostTotalMax(curTunnel)%>" class="freetext" />                
@@ -519,7 +524,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                 </div>
                 <div class="rowItem">
                   <div id="optionsField" class="rowItem">
-                      <label><%=intl._("POST limit period (minutes)")%>:</label>
+                      <label><%=intl._t("POST limit period (minutes)")%>:</label>
                   </div>
                   <div id="portField" class="rowItem">
                       <input type="text" id="port" name="postCheckTime" value="<%=editBean.getPostCheckTime(curTunnel)%>" class="freetext" />                
@@ -532,24 +537,24 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            
             <div id="optionsField" class="rowItem">
                 <label for="reduce" accesskey="d">
-                    <%=intl._("Reduce tunnel quantity when idle")%>(<span class="accessKey">d</span>):
+                    <%=intl._t("Reduce tunnel quantity when idle")%>(<span class="accessKey">d</span>):
                 </label>
             </div>
             <div id="portField" class="rowItem">
                 <label for="access" accesskey="d">
-                    <%=intl._("Enable")%>:
+                    <%=intl._t("Enable")%>:
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="reduce" title="Reduce Tunnels"<%=(editBean.getReduce(curTunnel) ? " checked=\"checked\"" : "")%> class="tickbox" />                
             </div>
             <div id="portField" class="rowItem">
                 <label for="reduceCount" accesskey="d">
-                    <%=intl._("Reduced tunnel count")%>:
+                    <%=intl._t("Reduced tunnel count")%>:
                 </label>
                 <input type="text" id="port" name="reduceCount" size="1" maxlength="1" title="Reduced Tunnel Count" value="<%=editBean.getReduceCount(curTunnel)%>" class="freetext" />                
             </div>
             <div id="portField" class="rowItem">
                 <label for="reduceTime" accesskey="d">
-                    <%=intl._("Idle minutes")%>:
+                    <%=intl._t("Idle minutes")%>:
                 </label>
                 <input type="text" id="port" name="reduceTime" size="4" maxlength="4" title="Reduced Tunnel Idle Time" value="<%=editBean.getReduceTime(curTunnel)%>" class="freetext" />                
             </div>
@@ -561,34 +566,34 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 <% /***************** %>
             <div id="tunnelOptionsField" class="rowItem">
                 <label for="cert" accesskey="c">
-                    <%=intl._("New Certificate type")%>(<span class="accessKey">C</span>):
+                    <%=intl._t("New Certificate type")%>(<span class="accessKey">C</span>):
                 </label>
             </div>
             <div id="hostField" class="rowItem">
               <div id="portField" class="rowItem">
-                <label><%=intl._("None")%></label>
+                <label><%=intl._t("None")%></label>
                 <input value="0" type="radio" id="startOnLoad" name="cert" title="No Certificate"<%=(editBean.getCert(curTunnel)==0 ? " checked=\"checked\"" : "")%> class="tickbox" />                
               </div>
               <div id="portField" class="rowItem">
-                <label><%=intl._("Hashcash (effort)")%></label>
+                <label><%=intl._t("Hashcash (effort)")%></label>
                 <input value="1" type="radio" id="startOnLoad" name="cert" title="Hashcash Certificate"<%=(editBean.getCert(curTunnel)==1 ? " checked=\"checked\"" : "")%> class="tickbox" />                
                 <input type="text" id="port" name="effort" size="2" maxlength="2" title="Hashcash Effort" value="<%=editBean.getEffort(curTunnel)%>" class="freetext" />                
               </div>
             </div>
             <div id="portField" class="rowItem">
                 <label for="force" accesskey="c">
-                    <%=intl._("Hashcash Calc Time")%>:
+                    <%=intl._t("Hashcash Calc Time")%>:
                 </label>
-                <button accesskey="S" class="control" type="submit" name="action" value="Estimate" title="Estimate Calculation Time"><%=intl._("Estimate")%></button>
+                <button accesskey="S" class="control" type="submit" name="action" value="Estimate" title="Estimate Calculation Time"><%=intl._t("Estimate")%></button>
             </div>
             <div id="hostField" class="rowItem">
               <div id="portField" class="rowItem">
-                <label><%=intl._("Hidden")%></label>
+                <label><%=intl._t("Hidden")%></label>
                 <input value="2" type="radio" id="startOnLoad" name="cert" title="Hidden Certificate"<%=(editBean.getCert(curTunnel)==2 ? " checked=\"checked\"" : "")%> class="tickbox" />                
               </div>
               <div id="portField" class="rowItem">
                 <label for="signer" accesskey="c">
-                    <%=intl._("Signed (signed by)")%>:
+                    <%=intl._t("Signed (signed by)")%>:
                 </label>
                 <input value="3" type="radio" id="startOnLoad" name="cert" title="Signed Certificate"<%=(editBean.getCert(curTunnel)==3 ? " checked=\"checked\"" : "")%> class="tickbox" />                
                 <input type="text" id="port" name="signer" size="50" title="Cert Signer" value="<%=editBean.getSigner(curTunnel)%>" class="freetext" />                
@@ -596,10 +601,10 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             </div>
             <div id="portField" class="rowItem">
                 <label for="force" accesskey="c">
-                    <%=intl._("Modify Certificate")%>:
+                    <%=intl._t("Modify Certificate")%>:
                 </label>
-                <button accesskey="S" class="control" type="submit" name="action" value="Modify" title="Force New Cert Now"><%=intl._("Modify")%></button>
-                <span class="comment"><%=intl._("(Tunnel must be stopped first)")%></span>
+                <button accesskey="S" class="control" type="submit" name="action" value="Modify" title="Force New Cert Now"><%=intl._t("Modify")%></button>
+                <span class="comment"><%=intl._t("(Tunnel must be stopped first)")%></span>
             </div>
 <% **********************/ %>
 
@@ -608,8 +613,8 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
            %>
             <div id="tunnelOptionsField" class="rowItem">
                 <label>
-                    <%=intl._("Signature type")%>
-                    (<%=intl._("Experts only! Changes B32!")%>)
+                    <%=intl._t("Signature type")%>
+                    (<%=intl._t("Experts only! Changes B32!")%>)
                 </label>
             </div>
             <div id="hostField" class="rowItem">
@@ -650,7 +655,7 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
                  
             <div id="customOptionsField" class="rowItem">
                 <label for="customOptions" accesskey="u">
-                    <%=intl._("Custom options")%>(<span class="accessKey">u</span>):
+                    <%=intl._t("Custom options")%>(<span class="accessKey">u</span>):
                 </label>
                 <input type="text" id="customOptions" name="nofilter_customOptions" size="60" title="Custom Options" value="<%=editBean.getCustomOptions(curTunnel)%>" class="freetext" spellcheck="false"/>                
             </div>
@@ -663,9 +668,9 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
             <div class="footer">
                 <div class="toolbox">
                     <input type="hidden" value="true" name="removeConfirm" />
-                    <button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel"><%=intl._("Cancel")%></button>
-                    <button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><%=intl._("Delete")%>(<span class="accessKey">D</span>)</button>
-                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><%=intl._("Save")%>(<span class="accessKey">S</span>)</button>
+                    <button id="controlCancel" class="control" type="submit" name="action" value="" title="Cancel"><%=intl._t("Cancel")%></button>
+                    <button id="controlDelete" <%=(editBean.allowJS() ? "onclick=\"if (!confirm('Are you sure you want to delete?')) { return false; }\" " : "")%>accesskey="D" class="control" type="submit" name="action" value="Delete this proxy" title="Delete this Proxy"><%=intl._t("Delete")%>(<span class="accessKey">D</span>)</button>
+                    <button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Changes"><%=intl._t("Save")%>(<span class="accessKey">S</span>)</button>
                 </div>
             </div> 
         </div>
diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp
index feff5539cb91b45f6364f437009378739ec8eb6f..9e2c06492259731dd01f761743c8a865ef904442 100644
--- a/apps/i2ptunnel/jsp/index.jsp
+++ b/apps/i2ptunnel/jsp/index.jsp
@@ -19,7 +19,7 @@
 <jsp:useBean class="net.i2p.i2ptunnel.web.Messages" id="intl" scope="request" />
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
-    <title><%=intl._("Hidden Services Manager")%></title>
+    <title><%=intl._t("Hidden Services Manager")%></title>
     
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
@@ -38,7 +38,7 @@
 
     <div id="statusMessagePanel" class="panel">
         <div class="header">
-            <h4><%=intl._("Status Messages")%></h4>
+            <h4><%=intl._t("Status Messages")%></h4>
         </div>
 
         <div class="separator">
@@ -53,26 +53,27 @@
 
         <div class="footer">
             <div class="toolbox">
-                <a class="control" href="list"><%=intl._("Refresh")%></a>
+                <a class="control" href="list"><%=intl._t("Refresh")%></a>
             </div>
         </div>    
     </div>
 <%
 
   if (indexBean.isInitialized()) {
+      String nextNonce = net.i2p.i2ptunnel.web.IndexBean.getNextNonce();
 
 %>
     <div id="globalOperationsPanel" class="panel">
         <div class="header"></div>
         <div class="footer">
             <div class="toolbox">
-                <a class="control" href="wizard"><%=intl._("Tunnel Wizard")%></a>
-                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Stop%20all"><%=intl._("Stop All")%></a>
-                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Start%20all"><%=intl._("Start All")%></a>
-                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Restart%20all"><%=intl._("Restart All")%></a>
+                <a class="control" href="wizard"><%=intl._t("Tunnel Wizard")%></a>
+                <a class="control" href="list?nonce=<%=nextNonce%>&amp;action=Stop%20all"><%=intl._t("Stop All")%></a>
+                <a class="control" href="list?nonce=<%=nextNonce%>&amp;action=Start%20all"><%=intl._t("Start All")%></a>
+                <a class="control" href="list?nonce=<%=nextNonce%>&amp;action=Restart%20all"><%=intl._t("Restart All")%></a>
 <%--
                 //this is really bad because it stops and restarts all tunnels, which is probably not what you want
-                <a class="control" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=Reload%20configuration"><%=intl._("Reload Config")%></a>
+                <a class="control" href="list?nonce=<%=nextNonce%>&amp;action=Reload%20configuration"><%=intl._t("Reload Config")%></a>
 --%>
             </div>
         </div> 
@@ -83,23 +84,23 @@
     <div id="localServerTunnelList" class="panel">
         <div class="header">
             
-    <h4><%=intl._("I2P Hidden Services")%></h4>
+    <h4><%=intl._t("I2P Hidden Services")%></h4>
         </div>
 
         
   <div class="separator"> </div>
 
         <div class="nameHeaderField rowItem">
-            <label><%=intl._("Name")%>:</label>
+            <label><%=intl._t("Name")%>:</label>
         </div>
         <div class="previewHeaderField rowItem">
-            <label><%=intl._("Points at")%>:</label>
+            <label><%=intl._t("Points at")%>:</label>
         </div>
         <div class="targetHeaderField rowItem">
-            <label><%=intl._("Preview")%>:</label>
+            <label><%=intl._t("Preview")%>:</label>
         </div>
         <div class="statusHeaderField rowItem">
-            <label><%=intl._("Status")%>:</label>
+            <label><%=intl._t("Status")%>:</label>
 <hr />        </div>
         
         <%
@@ -108,11 +109,11 @@
             
       %>
         <div class="nameField rowItem">
-            <label><%=intl._("Name")%>:</label>
+            <label><%=intl._t("Name")%>:</label>
             <span class="text"><a href="edit?tunnel=<%=curServer%>" title="Edit Server Tunnel Settings for <%=indexBean.getTunnelName(curServer)%>"><%=indexBean.getTunnelName(curServer)%></a></span>
         </div>
         <div class="previewField rowItem">
-            <label><%=intl._("Points at")%>:</label>
+            <label><%=intl._t("Points at")%>:</label>
             <span class="text">
         <%
             if (indexBean.isServerTargetLinkValid(curServer)) {
@@ -135,41 +136,41 @@
         <div class="targetField rowItem">
             <%
             if (("httpserver".equals(indexBean.getInternalType(curServer)) || ("httpbidirserver".equals(indexBean.getInternalType(curServer)))) && indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
-          %><label><%=intl._("Preview")%>:</label>    
-            <a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>" target="_top"><%=intl._("Preview")%></a>
+          %><label><%=intl._t("Preview")%>:</label>    
+            <a class="control" title="Test HTTP server through I2P" href="http://<%=indexBean.getDestHashBase32(curServer)%>" target="_top"><%=intl._t("Preview")%></a>
             <%
             } else if (indexBean.getTunnelStatus(curServer) == IndexBean.RUNNING) {
-          %><span class="text"><%=intl._("Base32 Address")%>:<br /><%=indexBean.getDestHashBase32(curServer)%></span>
+          %><span class="text"><%=intl._t("Base32 Address")%>:<br /><%=indexBean.getDestHashBase32(curServer)%></span>
         <%
             } else {
-          %><span class="comment"><%=intl._("No Preview")%></span>
+          %><span class="comment"><%=intl._t("No Preview")%></span>
         <%
             }
       %></div>
         <div class="statusField rowItem">
-            <label><%=intl._("Status")%>:</label>
+            <label><%=intl._t("Status")%>:</label>
             <%
             switch (indexBean.getTunnelStatus(curServer)) {
                 case IndexBean.STARTING:
-          %><div class="statusStarting text"><%=intl._("Starting...")%></div>    
-            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curServer%>"><%=intl._("Stop")%></a>
+          %><div class="statusStarting text"><%=intl._t("Starting...")%></div>    
+            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=stop&amp;tunnel=<%=curServer%>"><%=intl._t("Stop")%></a>
         <%
                 break;
                 case IndexBean.RUNNING:
-          %><div class="statusRunning text"><%=intl._("Running")%></div>    
-            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curServer%>"><%=intl._("Stop")%></a>
+          %><div class="statusRunning text"><%=intl._t("Running")%></div>    
+            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=stop&amp;tunnel=<%=curServer%>"><%=intl._t("Stop")%></a>
         <%
                 break;
                 case IndexBean.NOT_RUNNING:
-          %><div class="statusNotRunning text"><%=intl._("Stopped")%></div>    
-            <a class="control" title="Start this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=start&amp;tunnel=<%=curServer%>"><%=intl._("Start")%></a>
+          %><div class="statusNotRunning text"><%=intl._t("Stopped")%></div>    
+            <a class="control" title="Start this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=start&amp;tunnel=<%=curServer%>"><%=intl._t("Start")%></a>
         <%
                 break;
             }
       %></div>
 
         <div class="descriptionField rowItem">
-            <label><%=intl._("Description")%>:</label>
+            <label><%=intl._t("Description")%>:</label>
             <div class="text"><%=indexBean.getTunnelDescription(curServer)%></div>
         </div>
 
@@ -187,15 +188,15 @@
             <form id="addNewServerTunnelForm" action="edit"> 
             <div class="toolbox">
                     
-        <label><%=intl._("New hidden service")%>:</label>
+        <label><%=intl._t("New hidden service")%>:</label>
                     <select name="type">
                         <option value="httpserver">HTTP</option>
-                        <option value="server"><%=intl._("Standard")%></option>
+                        <option value="server"><%=intl._t("Standard")%></option>
                         <option value="httpbidirserver">HTTP bidir</option>
                         <option value="ircserver">IRC</option>
                         <option value="streamrserver">Streamr</option>
                     </select>
-                    <input class="control" type="submit" value="<%=intl._("Create")%>" />
+                    <input class="control" type="submit" value="<%=intl._t("Create")%>" />
                 </div>
             </form>
         </div>
@@ -205,26 +206,26 @@
     <div id="localClientTunnelList" class="panel">
         <div class="header">
             
-    <h4><%=intl._("I2P Client Tunnels")%></h4>
+    <h4><%=intl._t("I2P Client Tunnels")%></h4>
         </div>
 
         
   <div class="separator"> </div>
         
         <div class="nameHeaderField rowItem">
-            <label><%=intl._("Name")%>:</label>
+            <label><%=intl._t("Name")%>:</label>
         </div>
         <div class="portHeaderField rowItem">
-            <label><%=intl._("Port")%>:</label>
+            <label><%=intl._t("Port")%>:</label>
         </div>
         <div class="typeHeaderField rowItem">
-            <label><%=intl._("Type")%>:</label>
+            <label><%=intl._t("Type")%>:</label>
         </div>
         <div class="interfaceHeaderField rowItem">
-            <label><%=intl._("Interface")%>:</label>
+            <label><%=intl._t("Interface")%>:</label>
         </div>
         <div class="statusHeaderField rowItem">
-            <label><%=intl._("Status")%>:</label>
+            <label><%=intl._t("Status")%>:</label>
         </div>
 
         <div class="separator">
@@ -235,11 +236,11 @@
             if (!indexBean.isClient(curClient)) continue;
       %>
         <div class="nameField rowItem">
-            <label><%=intl._("Name")%>:</label>
+            <label><%=intl._t("Name")%>:</label>
             <span class="text"><a href="edit?tunnel=<%=curClient%>" title="Edit Tunnel Settings for <%=indexBean.getTunnelName(curClient)%>"><%=indexBean.getTunnelName(curClient)%></a></span>
         </div>
         <div class="portField rowItem">
-            <label><%=intl._("Port")%>:</label>
+            <label><%=intl._t("Port")%>:</label>
             <span class="text">
          <%
                String cPort= indexBean.getClientPort2(curClient);
@@ -250,18 +251,18 @@
             </span>
         </div>
         <div class="typeField rowItem">
-            <label><%=intl._("Type")%>:</label>
+            <label><%=intl._t("Type")%>:</label>
             <span class="text"><%=indexBean.getTunnelType(curClient)%></span>
         </div>
         <div class="interfaceField rowItem">
-            <label><%=intl._("Interface")%>:</label>
+            <label><%=intl._t("Interface")%>:</label>
             <span class="text">
          <%
                /* should only happen for streamr client */
                String cHost= indexBean.getClientInterface(curClient);
                if (cHost == null || "".equals(cHost)) {
                    out.write("<font color=\"red\">");
-                   out.write(intl._("Host not set"));
+                   out.write(intl._t("Host not set"));
                    out.write("</font>");
                } else {
                    out.write(cHost);
@@ -270,27 +271,27 @@
             </span>
         </div>
         <div class="statusField rowItem">
-            <label><%=intl._("Status")%>:</label>
+            <label><%=intl._t("Status")%>:</label>
             <%
             switch (indexBean.getTunnelStatus(curClient)) {
                 case IndexBean.STARTING:
-          %><div class="statusStarting text"><%=intl._("Starting...")%></div>
-            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._("Stop")%></a>
+          %><div class="statusStarting text"><%=intl._t("Starting...")%></div>
+            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
         <%
                 break;
                 case IndexBean.STANDBY:
-          %><div class="statusStarting text"><%=intl._("Standby")%></div>
-            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._("Stop")%></a>
+          %><div class="statusStarting text"><%=intl._t("Standby")%></div>
+            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
         <%
                 break;
                 case IndexBean.RUNNING:
-          %><div class="statusRunning text"><%=intl._("Running")%></div>
-            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._("Stop")%></a>
+          %><div class="statusRunning text"><%=intl._t("Running")%></div>
+            <a class="control" title="Stop this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=stop&amp;tunnel=<%=curClient%>"><%=intl._t("Stop")%></a>
         <%
                 break;
                 case IndexBean.NOT_RUNNING:
-          %><div class="statusNotRunning text"><%=intl._("Stopped")%></div>
-            <a class="control" title="Start this Tunnel" href="list?nonce=<%=indexBean.getNextNonce()%>&amp;action=start&amp;tunnel=<%=curClient%>"><%=intl._("Start")%></a>
+          %><div class="statusNotRunning text"><%=intl._t("Stopped")%></div>
+            <a class="control" title="Start this Tunnel" href="list?nonce=<%=nextNonce%>&amp;action=start&amp;tunnel=<%=curClient%>"><%=intl._t("Start")%></a>
         <%
                 break;
             }
@@ -300,15 +301,15 @@
             <label>
             <% if ("httpclient".equals(indexBean.getInternalType(curClient)) || "connectclient".equals(indexBean.getInternalType(curClient)) ||
                    "sockstunnel".equals(indexBean.getInternalType(curClient)) || "socksirctunnel".equals(indexBean.getInternalType(curClient))) { %>
-                <%=intl._("Outproxy")%>:
+                <%=intl._t("Outproxy")%>:
             <% } else { %>
-                <%=intl._("Destination")%>:
+                <%=intl._t("Destination")%>:
             <% } %>
             </label>
             <div class="text">
             <%
                if (indexBean.getIsUsingOutproxyPlugin(curClient)) {
-                   %><%=intl._("internal plugin")%><%
+                   %><%=intl._t("internal plugin")%><%
                } else {
                    String cdest = indexBean.getClientDestination(curClient);
                    if (cdest.length() > 70) { // Probably a B64 (a B32 is 60 chars) so truncate
@@ -316,7 +317,7 @@
                    } else if (cdest.length() > 0) {
                        %><%=cdest%><%
                    } else {
-                       %><i><%=intl._("none")%></i><%
+                       %><i><%=intl._t("none")%></i><%
                    }
                } %>
             </div>
@@ -324,7 +325,7 @@
         <% /* TODO SSL outproxy for httpclient if plugin not present */ %>
 
         <div class="descriptionField rowItem">
-            <label><%=intl._("Description")%>:</label>
+            <label><%=intl._t("Description")%>:</label>
             <div class="text"><%=indexBean.getTunnelDescription(curClient)%></div>
         </div>
 
@@ -342,9 +343,9 @@
             <form id="addNewClientTunnelForm" action="edit">
                 <div class="toolbox">
                     
-        <label><%=intl._("New client tunnel")%>:</label>
+        <label><%=intl._t("New client tunnel")%>:</label>
                     <select name="type">
-                        <option value="client"><%=intl._("Standard")%></option>
+                        <option value="client"><%=intl._t("Standard")%></option>
                         <option value="httpclient">HTTP/CONNECT</option>
                         <option value="ircclient">IRC</option>
                         <option value="sockstunnel">SOCKS 4/4a/5</option>
@@ -352,7 +353,7 @@
                         <option value="connectclient">CONNECT</option>
                         <option value="streamrclient">Streamr</option>
                     </select>
-                    <input class="control" type="submit" value="<%=intl._("Create")%>" />
+                    <input class="control" type="submit" value="<%=intl._t("Create")%>" />
                 </div>
             </form>
         </div>
diff --git a/apps/i2ptunnel/jsp/wizard.jsp b/apps/i2ptunnel/jsp/wizard.jsp
index ed08bd1670cce6d2b45ece169babb23deb605f90..fefd8a8772ec46bd42ff998aa1912c5374b5fe24 100644
--- a/apps/i2ptunnel/jsp/wizard.jsp
+++ b/apps/i2ptunnel/jsp/wizard.jsp
@@ -53,7 +53,7 @@
 %>
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <head>
-    <title><%=intl._("I2P Tunnel Manager - Tunnel Creation Wizard")%></title>
+    <title><%=intl._t("I2P Tunnel Manager - Tunnel Creation Wizard")%></title>
 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
@@ -76,23 +76,23 @@
             <div class="header">
                 <%
                 if (curPage == 1) {
-                  %><h4><%=intl._("Server or client tunnel?")%></h4><%
+                  %><h4><%=intl._t("Server or client tunnel?")%></h4><%
                 } else if (curPage == 2) {
-                  %><h4><%=intl._("Tunnel type")%></h4><%
+                  %><h4><%=intl._t("Tunnel type")%></h4><%
                 } else if (curPage == 3) {
-                  %><h4><%=intl._("Tunnel name and description")%></h4><%
+                  %><h4><%=intl._t("Tunnel name and description")%></h4><%
                 } else if (curPage == 4 && tunnelIsClient) {
-                  %><h4><%=intl._("Tunnel destination")%></h4><%
+                  %><h4><%=intl._t("Tunnel destination")%></h4><%
                 } else if (curPage == 5) {
-                  %><h4><%=intl._("Binding address and port")%></h4><%
+                  %><h4><%=intl._t("Binding address and port")%></h4><%
                 } else if (curPage == 6) {
-                  %><h4><%=intl._("Tunnel auto-start")%></h4><%
+                  %><h4><%=intl._t("Tunnel auto-start")%></h4><%
                 } else if (curPage == 7) {
-                  %><h4><%=intl._("Wizard completed")%></h4><%
+                  %><h4><%=intl._t("Wizard completed")%></h4><%
                 } %>
                 <input type="hidden" name="page" value="<%=curPage%>" />
                 <input type="hidden" name="tunnel" value="null" />
-                <input type="hidden" name="nonce" value="<%=editBean.getNextNonce()%>" />
+                <input type="hidden" name="nonce" value="<%=net.i2p.i2ptunnel.web.IndexBean.getNextNonce()%>" />
             </div>
 
             <div class="separator">
@@ -103,17 +103,17 @@
 
             if (curPage == 1) {
             %><p>
-                <%=intl._("This wizard will take you through the various options available for creating tunnels in I2P.")%>
+                <%=intl._t("This wizard will take you through the various options available for creating tunnels in I2P.")%>
             </p>
             <p>
-                <%=intl._("The first thing to decide is whether you want to create a server or a client tunnel.")%>
-                <%=intl._("If you need to connect to a remote service, such as an IRC server inside I2P or a code repository, then you will require a CLIENT tunnel.")%>
-                <%=intl._("On the other hand, if you wish to host a service for others to connect to you'll need to create a SERVER tunnel.")%>
+                <%=intl._t("The first thing to decide is whether you want to create a server or a client tunnel.")%>
+                <%=intl._t("If you need to connect to a remote service, such as an IRC server inside I2P or a code repository, then you will require a CLIENT tunnel.")%>
+                <%=intl._t("On the other hand, if you wish to host a service for others to connect to you'll need to create a SERVER tunnel.")%>
             </p>
             <div id="typeField" class="rowItem">
-                <label><%=intl._("Server Tunnel")%></label>
+                <label><%=intl._t("Server Tunnel")%></label>
                 <input value="false" type="radio" id="baseType" name="isClient" class="tickbox" />
-                <label><%=intl._("Client Tunnel")%></label>
+                <label><%=intl._t("Client Tunnel")%></label>
                 <input value="true" type="radio" id="baseType" name="isClient" class="tickbox" checked="checked" />
             </div><%
             } else {
@@ -126,64 +126,64 @@
 
             if (curPage == 2) {
             %><p>
-                <%=intl._("There are several types of tunnels to choose from:")%>
+                <%=intl._t("There are several types of tunnels to choose from:")%>
             </p>
             <table><%
                 if (tunnelIsClient) {
                 %>
-                <tr><td><%=intl._("Standard")%></td><td>
-                    <%=intl._("Basic tunnel for connecting to a single service inside I2P.")%>
-                    <%=intl._("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
+                <tr><td><%=intl._t("Standard")%></td><td>
+                    <%=intl._t("Basic tunnel for connecting to a single service inside I2P.")%>
+                    <%=intl._t("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
                 </td></tr>
                 <tr><td>HTTP</td><td>
-                    <%=intl._("Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P.")%>
-                    <%=intl._("Set your browser to use this tunnel as an http proxy, or set your \"http_proxy\" environment variable for command-line applications in GNU/Linux.")%>
-                    <%=intl._("Websites outside I2P can also be reached if an HTTP proxy within I2P is known.")%>
+                    <%=intl._t("Tunnel that acts as an HTTP proxy for reaching eepsites inside I2P.")%>
+                    <%=intl._t("Set your browser to use this tunnel as an http proxy, or set your \"http_proxy\" environment variable for command-line applications in GNU/Linux.")%>
+                    <%=intl._t("Websites outside I2P can also be reached if an HTTP proxy within I2P is known.")%>
                 </td></tr>
                 <tr><td>IRC</td><td>
-                    <%=intl._("Customised client tunnel specific for IRC connections.")%>
-                    <%=intl._("With this tunnel type, your IRC client will be able to connect to an IRC network inside I2P.")%>
-                    <%=intl._("Each IRC network in I2P that you wish to connect to will require its own tunnel. (See Also, SOCKS IRC)")%>
+                    <%=intl._t("Customised client tunnel specific for IRC connections.")%>
+                    <%=intl._t("With this tunnel type, your IRC client will be able to connect to an IRC network inside I2P.")%>
+                    <%=intl._t("Each IRC network in I2P that you wish to connect to will require its own tunnel. (See Also, SOCKS IRC)")%>
                 </td></tr>
                 <tr><td>SOCKS 4/4a/5</td><td>
-                    <%=intl._("A tunnel that implements the SOCKS protocol.")%>
-                    <%=intl._("This enables both TCP and UDP connections to be made through a SOCKS outproxy within I2P.")%>
+                    <%=intl._t("A tunnel that implements the SOCKS protocol.")%>
+                    <%=intl._t("This enables both TCP and UDP connections to be made through a SOCKS outproxy within I2P.")%>
                 </td></tr>
                 <tr><td>SOCKS IRC</td><td>
-                    <%=intl._("A client tunnel implementing the SOCKS protocol, which is customised for connecting to IRC networks.")%>
-                    <%=intl._("With this tunnel type, IRC networks in I2P can be reached by typing the I2P address into your IRC client, and configuring the IRC client to use this SOCKS tunnel.")%>
-                    <%=intl._("This means that only one I2P tunnel is required rather than a separate tunnel per IRC network.")%>
-                    <%=intl._("IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P is known, though it depends on whether or not the outproxy has been blocked by the IRC network.")%>
+                    <%=intl._t("A client tunnel implementing the SOCKS protocol, which is customised for connecting to IRC networks.")%>
+                    <%=intl._t("With this tunnel type, IRC networks in I2P can be reached by typing the I2P address into your IRC client, and configuring the IRC client to use this SOCKS tunnel.")%>
+                    <%=intl._t("This means that only one I2P tunnel is required rather than a separate tunnel per IRC network.")%>
+                    <%=intl._t("IRC networks outside I2P can also be reached if a SOCKS outproxy within I2P is known, though it depends on whether or not the outproxy has been blocked by the IRC network.")%>
                 </td></tr>
                 <tr><td>CONNECT</td><td>
-                    <%=intl._("A client tunnel that implements the HTTP CONNECT command.")%>
-                    <%=intl._("This enables TCP connections to be made through an HTTP outproxy, assuming the proxy supports the CONNECT command.")%>
+                    <%=intl._t("A client tunnel that implements the HTTP CONNECT command.")%>
+                    <%=intl._t("This enables TCP connections to be made through an HTTP outproxy, assuming the proxy supports the CONNECT command.")%>
                 </td></tr>
                 <tr><td>Streamr</td><td>
-                    <%=intl._("A customised client tunnel for Streamr.")%><%
-                    //XXX TODO<%=intl._("I have no idea what this is.")%>
+                    <%=intl._t("A customised client tunnel for Streamr.")%><%
+                    //XXX TODO<%=intl._t("I have no idea what this is.")%>
                 </td></tr><%
                 } else {
                 %>
-                <tr><td><%=intl._("Standard")%></td><td>
-                    <%=intl._("A basic server tunnel for hosting a generic service inside I2P.")%>
-                    <%=intl._("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
+                <tr><td><%=intl._t("Standard")%></td><td>
+                    <%=intl._t("A basic server tunnel for hosting a generic service inside I2P.")%>
+                    <%=intl._t("Try this if none of the tunnel types below fit your requirements, or you don't know what type of tunnel you need.")%>
                 </td></tr>
                 <tr><td>HTTP</td><td>
-                    <%=intl._("A server tunnel that is customised for HTTP connections.")%>
-                    <%=intl._("Use this tunnel type if you want to host an eepsite.")%>
+                    <%=intl._t("A server tunnel that is customised for HTTP connections.")%>
+                    <%=intl._t("Use this tunnel type if you want to host an eepsite.")%>
                 </td></tr>
                 <tr><td>HTTP bidir</td><td>
-                    <%=intl._("A customised server tunnel that can both serve HTTP data and connect to other server tunnels.")%>
-                    <%=intl._("This tunnel type is predominantly used when running a Seedless server.")%>
+                    <%=intl._t("A customised server tunnel that can both serve HTTP data and connect to other server tunnels.")%>
+                    <%=intl._t("This tunnel type is predominantly used when running a Seedless server.")%>
                 </td></tr>
                 <tr><td>IRC</td><td>
-                    <%=intl._("A customised server tunnel for hosting IRC networks inside I2P.")%>
-                    <%=intl._("Usually, a separate tunnel needs to be created for each IRC server that is to be accessible inside I2P.")%>
+                    <%=intl._t("A customised server tunnel for hosting IRC networks inside I2P.")%>
+                    <%=intl._t("Usually, a separate tunnel needs to be created for each IRC server that is to be accessible inside I2P.")%>
                 </td></tr>
                 <tr><td>Streamr</td><td>
-                    <%=intl._("A customised server tunnel for Streamr.")%><%
-                    //XXX TODO<%=intl._("I have no idea what this is.")%>
+                    <%=intl._t("A customised server tunnel for Streamr.")%><%
+                    //XXX TODO<%=intl._t("I have no idea what this is.")%>
                 </td></tr><%
                 }
                 %>
@@ -192,7 +192,7 @@
                 <%
                 if (tunnelIsClient) {
                 %><select name="type">
-                    <option value="client"><%=intl._("Standard")%></option>
+                    <option value="client"><%=intl._t("Standard")%></option>
                     <option value="httpclient">HTTP/CONNECT</option>
                     <option value="ircclient">IRC</option>
                     <option value="sockstunnel">SOCKS 4/4a/5</option>
@@ -202,7 +202,7 @@
                 </select><%
                 } else {
                 %><select name="type">
-                    <option value="server"><%=intl._("Standard")%></option>
+                    <option value="server"><%=intl._t("Standard")%></option>
                     <option value="httpserver">HTTP</option>
                     <option value="httpbidirserver">HTTP bidir</option>
                     <option value="ircserver">IRC</option>
@@ -220,18 +220,18 @@
 
             if (curPage == 3) {
             %><p>
-                <%=intl._("Choose a name and description for your tunnel.")%>
-                <%=intl._("These can be anything you want - they are just for ease of identifying the tunnel in the routerconsole.")%>
+                <%=intl._t("Choose a name and description for your tunnel.")%>
+                <%=intl._t("These can be anything you want - they are just for ease of identifying the tunnel in the routerconsole.")%>
             </p>
             <div id="nameField" class="rowItem">
                 <label for="name" accesskey="N">
-                    <%=intl._("Name")%>:(<span class="accessKey">N</span>)
+                    <%=intl._t("Name")%>:(<span class="accessKey">N</span>)
                 </label>
                 <input type="text" size="30" maxlength="50" name="name" id="name" title="Tunnel Name" value="<%=(!"null".equals(request.getParameter("name")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("name")) : "" ) %>" class="freetext" />
             </div>
             <div id="descriptionField" class="rowItem">
                 <label for="description" accesskey="e">
-                    <%=intl._("Description")%>:(<span class="accessKey">E</span>)
+                    <%=intl._t("Description")%>:(<span class="accessKey">E</span>)
                 </label>
                 <input type="text" size="60" maxlength="80" name="nofilter_description"  id="description" title="Tunnel Description" value="<%=(!"null".equals(request.getParameter("nofilter_description")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description")) : "" ) %>" class="freetext" />
             </div><%
@@ -248,12 +248,12 @@
               if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) {
                 if (curPage == 4) {
           %><p>
-                <%=intl._("If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in below.")%>
-                <%=intl._("Separate multiple proxies with commas.")%>
+                <%=intl._t("If you know of any outproxies for this type of tunnel (either HTTP or SOCKS), fill them in below.")%>
+                <%=intl._t("Separate multiple proxies with commas.")%>
             </p>
             <div id="destinationField" class="rowItem">
                 <label for="proxyList" accesskey="x">
-                    <%=intl._("Outproxies")%>(<span class="accessKey">x</span>):
+                    <%=intl._t("Outproxies")%>(<span class="accessKey">x</span>):
                 </label>
                 <input type="text" size="30" id="proxyList" name="proxyList" title="List of Outproxy I2P destinations" value="<%=(!"null".equals(request.getParameter("proxyList")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList")) : "" ) %>" class="freetext" />
             </div><%
@@ -263,17 +263,17 @@
               } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) {
                 if (curPage == 4) {
           %><p>
-                <%=intl._("Type in the I2P destination of the service that this client tunnel should connect to.")%>
-                <%=intl._("This could be the full base 64 destination key, or an I2P URL from your address book.")%>
+                <%=intl._t("Type in the I2P destination of the service that this client tunnel should connect to.")%>
+                <%=intl._t("This could be the full base 64 destination key, or an I2P URL from your address book.")%>
             </p>
             <div id="destinationField" class="rowItem">
                 <label for="targetDestination" accesskey="T">
-                    <%=intl._("Tunnel Destination")%>(<span class="accessKey">T</span>):
+                    <%=intl._t("Tunnel Destination")%>(<span class="accessKey">T</span>):
                 </label>
                 <input type="text" size="30" id="targetDestination" name="targetDestination" title="Destination of the Tunnel" value="<%=(!"null".equals(request.getParameter("targetDestination")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetDestination")) : "" ) %>" class="freetext" />
-                <span class="comment">(<%=intl._("name, name:port, or destination")%>
+                <span class="comment">(<%=intl._t("name, name:port, or destination")%>
                      <% if ("streamrclient".equals(tunnelType)) { /* deferred resolution unimplemented in streamr client */ %>
-                         - <%=intl._("b32 not recommended")%>
+                         - <%=intl._t("b32 not recommended")%>
                      <% } %> )
                 </span>
             </div><%
@@ -290,12 +290,12 @@
             if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) {
               if (curPage == 5) {
             %><p>
-                <%=intl._("This is the IP that your service is running on, this is usually on the same machine so 127.0.0.1 is autofilled.")%><%
-                //XXX TODO<%=intl._("For some reason streamrclient also uses this.")%>
+                <%=intl._t("This is the IP that your service is running on, this is usually on the same machine so 127.0.0.1 is autofilled.")%><%
+                //XXX TODO<%=intl._t("For some reason streamrclient also uses this.")%>
             </p>
             <div id="hostField" class="rowItem">
                 <label for="targetHost" accesskey="H">
-                    <%=intl._("Host")%>(<span class="accessKey">H</span>):
+                    <%=intl._t("Host")%>(<span class="accessKey">H</span>):
                 </label>
                 <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=(!"null".equals(request.getParameter("targetHost")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost")) : "127.0.0.1" ) %>" class="freetext" />
             </div><%
@@ -307,11 +307,11 @@
             if (!tunnelIsClient) {
               if (curPage == 5) {
             %><p>
-                <%=intl._("This is the port that the service is accepting connections on.")%>
+                <%=intl._t("This is the port that the service is accepting connections on.")%>
             </p>
             <div id="portField" class="rowItem">
                 <label for="targetPort" accesskey="P">
-                    <%=intl._("Port")%>(<span class="accessKey">P</span>):
+                    <%=intl._t("Port")%>(<span class="accessKey">P</span>):
                 </label>
                 <input type="text" size="6" maxlength="5" id="targetPort" name="targetPort" title="Target Port Number" value="<%=(!"null".equals(request.getParameter("targetPort")) ? net.i2p.data.DataHelper.stripHTML(request.getParameter("targetPort")) : "" ) %>" class="freetext" />
             </div><%
@@ -323,8 +323,8 @@
             if (tunnelIsClient || "httpbidirserver".equals(tunnelType)) {
               if (curPage == 5) {
             %><p>
-                <%=intl._("This is the port that the client tunnel will be accessed from locally.")%>
-                <%=intl._("This is also the client port for the HTTPBidir server tunnel.")%>
+                <%=intl._t("This is the port that the client tunnel will be accessed from locally.")%>
+                <%=intl._t("This is also the client port for the HTTPBidir server tunnel.")%>
             </p>
             <div id="portField" class="rowItem">
                 <label for="port" accesskey="P">
@@ -340,14 +340,14 @@
             if ((tunnelIsClient && !"streamrclient".equals(tunnelType)) || "httpbidirserver".equals(tunnelType) || "streamrserver".equals(tunnelType)) {
               if (curPage == 5) {
             %><p>
-                <%=intl._("How do you want this tunnel to be accessed? By just this machine, your entire subnet, or external internet?")%>
-                <%=intl._("You will most likely want to just allow 127.0.0.1")%><%
-                //XXX TODO<%=intl._("Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.")%><%
-                //XXX TODO<%=intl._("So the wording may need to change slightly for the client vs. server tunnels.")%>
+                <%=intl._t("How do you want this tunnel to be accessed? By just this machine, your entire subnet, or external internet?")%>
+                <%=intl._t("You will most likely want to just allow 127.0.0.1")%><%
+                //XXX TODO<%=intl._t("Note that it is relevant to most Client tunnels, and httpbidirserver and streamrserver tunnels.")%><%
+                //XXX TODO<%=intl._t("So the wording may need to change slightly for the client vs. server tunnels.")%>
             </p>
             <div id="reachField" class="rowItem">
                 <label for="reachableBy" accesskey="r">
-                    <%=intl._("Reachable by")%>(<span class="accessKey">R</span>):
+                    <%=intl._t("Reachable by")%>(<span class="accessKey">R</span>):
                 </label>
                 <select id="reachableBy" name="reachableBy" title="IP for Client Access" class="selectbox">
               <%
@@ -379,15 +379,15 @@
 
             if (curPage == 6) {
             %><p>
-                <%=intl._("The I2P router can automatically start this tunnel for you when the router is started.")%>
-                <%=intl._("This can be useful for frequently-used tunnels (especially server tunnels), but for tunnels that are only used occassionally it would mean that the I2P router is creating and maintaining unnecessary tunnels.")%>
+                <%=intl._t("The I2P router can automatically start this tunnel for you when the router is started.")%>
+                <%=intl._t("This can be useful for frequently-used tunnels (especially server tunnels), but for tunnels that are only used occassionally it would mean that the I2P router is creating and maintaining unnecessary tunnels.")%>
             </p>
             <div id="startupField" class="rowItem">
                 <label for="startOnLoad" accesskey="a">
-                    <%=intl._("Auto Start")%>(<span class="accessKey">A</span>):
+                    <%=intl._t("Auto Start")%>(<span class="accessKey">A</span>):
                 </label>
                 <input value="1" type="checkbox" id="startOnLoad" name="startOnLoad" title="Start Tunnel Automatically"<%=("1".equals(request.getParameter("startOnLoad")) ? " checked=\"checked\"" : "")%> class="tickbox" />
-                <span class="comment"><%=intl._("(Check the Box for 'YES')")%></span>
+                <span class="comment"><%=intl._t("(Check the Box for 'YES')")%></span>
             </div><%
             } else {
               if ("1".equals(request.getParameter("startOnLoad"))) {
@@ -401,27 +401,27 @@
 
             if (curPage == 7) {
             %><p>
-                <%=intl._("The wizard has now collected enough information to create your tunnel.")%>
-                <%=intl._("Upon clicking the Save button below, the wizard will set up the tunnel, and take you back to the main I2PTunnel page.")%>
+                <%=intl._t("The wizard has now collected enough information to create your tunnel.")%>
+                <%=intl._t("Upon clicking the Save button below, the wizard will set up the tunnel, and take you back to the main I2PTunnel page.")%>
                 <%
                 if ("1".equals(request.getParameter("startOnLoad"))) {
-                %><%=intl._("Because you chose to automatically start the tunnel when the router starts, you don't have to do anything further.")%>
-                <%=intl._("The router will start the tunnel once it has been set up.")%><%
+                %><%=intl._t("Because you chose to automatically start the tunnel when the router starts, you don't have to do anything further.")%>
+                <%=intl._t("The router will start the tunnel once it has been set up.")%><%
                 } else {
-                %><%=intl._("Because you chose not to automatically start the tunnel, you will have to manually start it.")%>
-                <%=intl._("You can do this by clicking the Start button on the main page which corresponds to the new tunnel.")%><%
+                %><%=intl._t("Because you chose not to automatically start the tunnel, you will have to manually start it.")%>
+                <%=intl._t("You can do this by clicking the Start button on the main page which corresponds to the new tunnel.")%><%
                 } %>
             </p>
             <p>
-                <%=intl._("Below is a summary of the options you chose:")%>
+                <%=intl._t("Below is a summary of the options you chose:")%>
             </p>
             <table>
-                <tr><td><%=intl._("Server or client tunnel?")%></td><td>
+                <tr><td><%=intl._t("Server or client tunnel?")%></td><td>
                     <%=(tunnelIsClient ? "Client" : "Server")%>
                 </td></tr>
-                <tr><td><%=intl._("Tunnel type")%></td><td><%
+                <tr><td><%=intl._t("Tunnel type")%></td><td><%
                 if ("client".equals(tunnelType) || "server".equals(tunnelType)) { %>
-                    <%=intl._("Standard")%><%
+                    <%=intl._t("Standard")%><%
                 } else if ("httpclient".equals(tunnelType) || "httpserver".equals(tunnelType)) { %>
                     HTTP<%
                 } else if ("httpbidirserver".equals(tunnelType)) { %>
@@ -438,12 +438,12 @@
                     Streamr<%
                 } %>
                 </td></tr>
-                <tr><td><%=intl._("Tunnel name and description")%></td><td>
+                <tr><td><%=intl._t("Tunnel name and description")%></td><td>
                     <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("name"))%><br />
                     <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("nofilter_description"))%>
                 </td></tr><%
                 if (tunnelIsClient) { %>
-                <tr><td><%=intl._("Tunnel destination")%></td><td><%
+                <tr><td><%=intl._t("Tunnel destination")%></td><td><%
                   if ("httpclient".equals(tunnelType) || "connectclient".equals(tunnelType) || "sockstunnel".equals(tunnelType) || "socksirctunnel".equals(tunnelType)) { %>
                     <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("proxyList"))%><%
                   } else if ("client".equals(tunnelType) || "ircclient".equals(tunnelType) || "streamrclient".equals(tunnelType)) { %>
@@ -451,7 +451,7 @@
                   } %>
                 </td></tr><%
                 } %>
-                <tr><td><%=intl._("Binding address and port")%></td><td><%
+                <tr><td><%=intl._t("Binding address and port")%></td><td><%
                 if ((tunnelIsClient && "streamrclient".equals(tunnelType)) || (!tunnelIsClient && !"streamrserver".equals(tunnelType))) { %>
                     <%=net.i2p.data.DataHelper.stripHTML(request.getParameter("targetHost"))%><br /><%
                 }
@@ -465,7 +465,7 @@
                     <br /><%=net.i2p.data.DataHelper.stripHTML(request.getParameter("reachableBy"))%><%
                 } %>
                 </td></tr>
-                <tr><td><%=intl._("Tunnel auto-start")%></td><td><%
+                <tr><td><%=intl._t("Tunnel auto-start")%></td><td><%
                 if ("1".equals(request.getParameter("startOnLoad"))) { %>
                     Yes<%
                 } else { %>
@@ -474,8 +474,8 @@
                 </td></tr>
             </table>
             <p>
-                <%=intl._("Alongside these basic settings, there are a number of advanced options for tunnel configuration.")%>
-                <%=intl._("The wizard will set reasonably sensible default values for these, but you can view and/or edit these by clicking on the tunnel's name in the main I2PTunnel page.")%>
+                <%=intl._t("Alongside these basic settings, there are a number of advanced options for tunnel configuration.")%>
+                <%=intl._t("The wizard will set reasonably sensible default values for these, but you can view and/or edit these by clicking on the tunnel's name in the main I2PTunnel page.")%>
             </p>
 
             <input type="hidden" name="tunnelDepth" value="3" />
@@ -533,16 +533,16 @@ http://stats.i2p/cgi-bin/jump.cgi?a=" /><%
             <div class="header"></div>
             <div class="footer">
                 <div class="toolbox">
-                    <a class="control" href="list"><%=intl._("Cancel")%></a>
+                    <a class="control" href="list"><%=intl._t("Cancel")%></a>
                     <% if (curPage != 1 && curPage != 7) {
-                    %><button id="controlPrevious" accesskey="P" class="control" type="submit" name="action" value="Previous page" title="Previous Page"><%=intl._("Previous")%>(<span class="accessKey">P</span>)</button><%
+                    %><button id="controlPrevious" accesskey="P" class="control" type="submit" name="action" value="Previous page" title="Previous Page"><%=intl._t("Previous")%>(<span class="accessKey">P</span>)</button><%
                     } %>
                     <% if (curPage == 7) {
-                    %><button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Tunnel"><%=intl._("Save Tunnel")%>(<span class="accessKey">S</span>)</button><%
+                    %><button id="controlSave" accesskey="S" class="control" type="submit" name="action" value="Save changes" title="Save Tunnel"><%=intl._t("Save Tunnel")%>(<span class="accessKey">S</span>)</button><%
                     } else if (curPage == 6) {
-                    %><button id="controlFinish" accesskey="F" class="control" type="submit" name="action" value="Next page" title="Finish Wizard"><%=intl._("Finish")%>(<span class="accessKey">F</span>)</button><%
+                    %><button id="controlFinish" accesskey="F" class="control" type="submit" name="action" value="Next page" title="Finish Wizard"><%=intl._t("Finish")%>(<span class="accessKey">F</span>)</button><%
                     } else {
-                    %><button id="controlNext" accesskey="N" class="control" type="submit" name="action" value="Next page" title="Next Page"><%=intl._("Next")%>(<span class="accessKey">N</span>)</button><%
+                    %><button id="controlNext" accesskey="N" class="control" type="submit" name="action" value="Next page" title="Next Page"><%=intl._t("Next")%>(<span class="accessKey">N</span>)</button><%
                     } %>
                 </div>
             </div>
diff --git a/apps/i2ptunnel/locale-proxy/messages_pt_BR.po b/apps/i2ptunnel/locale-proxy/messages_pt_BR.po
index bc9fd6335b66cff1be1302d5d9aff33aeb4bbfde..4b55ae30fc4c702f6fc7bdb1911e33b3e5ddf758 100644
--- a/apps/i2ptunnel/locale-proxy/messages_pt_BR.po
+++ b/apps/i2ptunnel/locale-proxy/messages_pt_BR.po
@@ -12,7 +12,7 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-20 21:06+0000\n"
+"PO-Revision-Date: 2015-06-10 16:40+0000\n"
 "Last-Translator: blueboy\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
@@ -97,7 +97,7 @@ msgstr "Informação: novo nome de host com auxiliar de endereço"
 msgid ""
 "The address helper link you followed is for a new host name that is not in "
 "your address book."
-msgstr ""
+msgstr "O linque do auxiliar de endereço que você acompanhou é para um novo nome de host que não está no seu livro de endereços."
 
 #: ../java/build/Proxy.java:13
 msgid "You may save this host name to your local address book."
@@ -106,7 +106,7 @@ msgstr "Você pode salvar esse nome de host no seu livro local de endereços."
 #: ../java/build/Proxy.java:14
 msgid ""
 "If you save it to your address book, you will not see this message again."
-msgstr ""
+msgstr "Se você salvá-lo no seu livro de endereços, não verá novamente essa mensagem."
 
 #: ../java/build/Proxy.java:15
 msgid ""
@@ -118,7 +118,7 @@ msgstr ""
 msgid ""
 "If you do not wish to visit this host, click the \"back\" button on your "
 "browser."
-msgstr ""
+msgstr "Se você não deseja visitar esse host, clique no botão \"voltar\" no seu navegador."
 
 #: ../java/build/Proxy.java:17 ../java/build/Proxy.java:23
 msgid "Warning: Destination Key Conflict"
@@ -211,7 +211,7 @@ msgstr ""
 msgid ""
 "The proxy could be temporarily unavailable, too busy, or it has blocked your"
 " access."
-msgstr ""
+msgstr "O proxy pode estar temporariamente indisponível, sobrecarregado ou bloqueando o seu acesso."
 
 #: ../java/build/Proxy.java:65 ../java/build/Proxy.java:147
 #: ../java/build/Proxy.java:181 ../java/build/Proxy.java:193
@@ -227,7 +227,7 @@ msgstr ""
 msgid ""
 "If you continue to have trouble you may want to edit your outproxy list "
 "{0}here{1}."
-msgstr ""
+msgstr "Se continuar a ter problemas e quiser editar a sua lista de proxies de saída, {0}clique aqui{1}."
 
 #: ../java/build/Proxy.java:75
 msgid ""
@@ -255,7 +255,7 @@ msgstr "O seu navegador está mal-configurado."
 msgid ""
 "Do not use the proxy to access the router console, localhost, or local LAN "
 "destinations."
-msgstr ""
+msgstr "Não use o proxy para acessar o painel do roteador, localhost ou destinos da LAN local."
 
 #: ../java/build/Proxy.java:86 ../java/build/Proxy.java:92
 msgid "Warning: No Outproxy Configured"
@@ -279,7 +279,7 @@ msgstr "O website estava inalcançável."
 msgid ""
 "The website is offline, there is network congestion, or your router is not "
 "yet well-integrated with peers."
-msgstr ""
+msgstr "O website está fora do ar, há congestionamento na rede ou o seu roteador não está ainda bem integrado com os pares."
 
 #: ../java/build/Proxy.java:106 ../java/build/Proxy.java:112
 msgid "Warning: Invalid Destination"
@@ -315,7 +315,7 @@ msgstr ""
 
 #: ../java/build/Proxy.java:127
 msgid "Other protocols such as FTP are not allowed."
-msgstr ""
+msgstr "Outros protocolos como FTP não são permitidos."
 
 #: ../java/build/Proxy.java:135
 msgid "The connection to the website was reset while the page was loading."
@@ -325,7 +325,7 @@ msgstr ""
 msgid ""
 "The website could be temporarily unavailable, too busy, or it has blocked "
 "your access."
-msgstr ""
+msgstr "O site pode estar temporariamente indisponível, sobrecarregado ou bloqueando o seu acesso."
 
 #: ../java/build/Proxy.java:139 ../java/build/Proxy.java:145
 msgid "Outproxy Unreachable"
@@ -339,7 +339,7 @@ msgstr ""
 
 #: ../java/build/Proxy.java:150
 msgid "Website Unknown"
-msgstr ""
+msgstr "Site Desconhecido"
 
 #: ../java/build/Proxy.java:156
 msgid "Website Not Found in Addressbook"
@@ -402,7 +402,7 @@ msgstr "O proxy de saída está provavelmente fora do ar, mas pode ser também c
 
 #: ../java/build/Proxy.java:191
 msgid "The HTTP Outproxy was not found."
-msgstr ""
+msgstr "O Proxy de Saída HTTP não foi encontrado."
 
 #: ../java/build/Proxy.java:192
 msgid ""
diff --git a/apps/i2ptunnel/locale-proxy/messages_sv.po b/apps/i2ptunnel/locale-proxy/messages_sv.po
index 9117584b61bf6061703a8f7f91184114729bd25d..d5680b9af5dbb5a225789e12b416bb5516a7c9cf 100644
--- a/apps/i2ptunnel/locale-proxy/messages_sv.po
+++ b/apps/i2ptunnel/locale-proxy/messages_sv.po
@@ -5,6 +5,7 @@
 # 
 # Translators:
 # Calle Rundgren <samaire@samaire.net>, 2013
+# cacapo <handelsehorisont@gmail.com>, 2015
 # hottuna <i2p@robertfoss.se>, 2013
 # hottuna <i2p@robertfoss.se>, 2012
 # WinterFairy <winterfairy@riseup.net>, 2014
@@ -12,9 +13,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-05-14 08:33+0000\n"
+"PO-Revision-Date: 2015-06-06 18:32+0000\n"
+"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
 "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -35,7 +36,7 @@ msgstr "Information: Nytt Värdnamn"
 #: ../java/build/Proxy.java:129 ../java/build/Proxy.java:140
 #: ../java/build/Proxy.java:151 ../java/build/Proxy.java:164
 #: ../java/build/Proxy.java:173 ../java/build/Proxy.java:185
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:207
 msgid "Router Console"
 msgstr "Routerkonsol"
 
@@ -60,7 +61,7 @@ msgstr "Routerkonsol"
 #: ../java/build/Proxy.java:131 ../java/build/Proxy.java:142
 #: ../java/build/Proxy.java:153 ../java/build/Proxy.java:166
 #: ../java/build/Proxy.java:175 ../java/build/Proxy.java:187
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Configuration"
 msgstr "Konfiguration"
 
@@ -73,7 +74,7 @@ msgstr "Konfiguration"
 #: ../java/build/Proxy.java:132 ../java/build/Proxy.java:143
 #: ../java/build/Proxy.java:154 ../java/build/Proxy.java:167
 #: ../java/build/Proxy.java:176 ../java/build/Proxy.java:188
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Help"
 msgstr "Hjälp"
 
@@ -86,7 +87,7 @@ msgstr "Hjälp"
 #: ../java/build/Proxy.java:133 ../java/build/Proxy.java:144
 #: ../java/build/Proxy.java:155 ../java/build/Proxy.java:168
 #: ../java/build/Proxy.java:177 ../java/build/Proxy.java:189
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Addressbook"
 msgstr "Adressbok"
 
@@ -135,7 +136,7 @@ msgstr "Adresshjälpar-länken du följde specifierad en annan mål-nyckel än f
 msgid ""
 "Someone could be trying to impersonate another website, or people have given"
 " two websites identical names."
-msgstr ""
+msgstr "Någon kanske försöker imitera en annan webbsida, eller så har människor givit två olika webbsidor samma namn."
 
 #: ../java/build/Proxy.java:26
 msgid ""
@@ -175,16 +176,16 @@ msgstr "Du försökte ansluta till en icke-I2P webbsida eller plats."
 #: ../java/build/Proxy.java:68 ../java/build/Proxy.java:74
 #: ../java/build/Proxy.java:95 ../java/build/Proxy.java:101
 msgid "Website Unreachable"
-msgstr ""
+msgstr "Webbsidan onåbar"
 
 #: ../java/build/Proxy.java:52
 msgid "The website was not reachable, because its lease set was not found."
-msgstr ""
+msgstr "Denna webbsida var inte nåbar, eftersom dess leaseset inte kunde hittas."
 
 #: ../java/build/Proxy.java:53
 msgid ""
 "The website is probably down, but there could also be network congestion."
-msgstr ""
+msgstr "Webbsidan är förmodligen nere, men det kan också vara överbelastning på nätverket."
 
 #: ../java/build/Proxy.java:54 ../java/build/Proxy.java:104
 #: ../java/build/Proxy.java:116 ../java/build/Proxy.java:137
@@ -202,17 +203,17 @@ msgstr "Kunde inte hitta följande mål:"
 #: ../java/build/Proxy.java:56 ../java/build/Proxy.java:62
 #: ../java/build/Proxy.java:128 ../java/build/Proxy.java:134
 msgid "Connection Reset"
-msgstr ""
+msgstr "Starta om anslutning"
 
 #: ../java/build/Proxy.java:63
 msgid "The connection to the proxy was reset."
-msgstr ""
+msgstr "Anslutningen till proxyn startades om."
 
 #: ../java/build/Proxy.java:64
 msgid ""
 "The proxy could be temporarily unavailable, too busy, or it has blocked your"
 " access."
-msgstr ""
+msgstr "Proxyn kanske är tillfälligt off-line, under hög belastning, eller har blockerat dig."
 
 #: ../java/build/Proxy.java:65 ../java/build/Proxy.java:147
 #: ../java/build/Proxy.java:181 ../java/build/Proxy.java:193
@@ -234,11 +235,11 @@ msgstr "Om du fortsätter att ha problem, så kanske du vill ändra din utproxy-
 msgid ""
 "The website was not reachable, because it uses encryption options that are "
 "not supported by your I2P or Java version."
-msgstr ""
+msgstr "Webbsidan kunde inte nås eftersom den använder krypteringsalternativ som inte stöds av din I2P eller Java-version."
 
 #: ../java/build/Proxy.java:76 ../java/build/Proxy.java:149
 msgid "Could not connect to the following destination:"
-msgstr ""
+msgstr "Kunde inte ansluta till följande destination:"
 
 #: ../java/build/Proxy.java:77
 msgid "Error: Request Denied"
@@ -274,13 +275,13 @@ msgstr "Var god ställ in en utproxy i I2PTunnel."
 
 #: ../java/build/Proxy.java:102
 msgid "The website was not reachable."
-msgstr ""
+msgstr "Webbsidan var inte nåbar."
 
 #: ../java/build/Proxy.java:103
 msgid ""
 "The website is offline, there is network congestion, or your router is not "
 "yet well-integrated with peers."
-msgstr ""
+msgstr "Webbsidan är offline, nätverket är under stor belastning eller så är din router inte välintegrerad med peers."
 
 #: ../java/build/Proxy.java:106 ../java/build/Proxy.java:112
 msgid "Warning: Invalid Destination"
@@ -290,7 +291,7 @@ msgstr "Varning: Ogiltigt MÃ¥l"
 msgid ""
 "The website destination specified was not valid, or was otherwise "
 "unreachable."
-msgstr ""
+msgstr "Webbsidans angivna destination var inte giltig, eller på annat sätt onåbar. "
 
 #: ../java/build/Proxy.java:114
 msgid ""
@@ -312,43 +313,43 @@ msgstr "Förfrågan använder ett dåligt protokoll."
 
 #: ../java/build/Proxy.java:126
 msgid "The I2P HTTP Proxy supports HTTP and HTTPS requests only."
-msgstr ""
+msgstr "I2P-proxyn stöder endast HTTP och HTTPS-requests."
 
 #: ../java/build/Proxy.java:127
 msgid "Other protocols such as FTP are not allowed."
-msgstr ""
+msgstr "Andra protokoll som FTP är inte tillåtna."
 
 #: ../java/build/Proxy.java:135
 msgid "The connection to the website was reset while the page was loading."
-msgstr ""
+msgstr "Anslutningen till webbsidan startade om medan sidan laddades."
 
 #: ../java/build/Proxy.java:136
 msgid ""
 "The website could be temporarily unavailable, too busy, or it has blocked "
 "your access."
-msgstr ""
+msgstr "Webbsidan kan vara tillfälligt onåbar, belastad, eller ha blockerat dig."
 
 #: ../java/build/Proxy.java:139 ../java/build/Proxy.java:145
 msgid "Outproxy Unreachable"
-msgstr ""
+msgstr "Utproxy Onåbar"
 
 #: ../java/build/Proxy.java:146
 msgid ""
 "The HTTP outproxy was not reachable, because it uses encryption options that"
 " are not supported by your I2P or Java version."
-msgstr ""
+msgstr "HTTP-proxyn kunde inte nås eftersom den använder krypteringsinställningar som inte stöd av din I2P eller Java-version."
 
 #: ../java/build/Proxy.java:150
 msgid "Website Unknown"
-msgstr ""
+msgstr "Okänd Webbsida"
 
 #: ../java/build/Proxy.java:156
 msgid "Website Not Found in Addressbook"
-msgstr ""
+msgstr "Webbsidan inte funnen i Adressboken"
 
 #: ../java/build/Proxy.java:157
 msgid "The website was not found in your router's addressbook."
-msgstr ""
+msgstr "Webbsidan kunde inte hittas i din routers adressbok."
 
 #: ../java/build/Proxy.java:158
 msgid "Check the link or find a Base 32 or Base 64 address."
@@ -389,17 +390,17 @@ msgstr "Om du klicka på en länk, kontrollera slutet av URI:n efter andra tecke
 #: ../java/build/Proxy.java:172 ../java/build/Proxy.java:178
 #: ../java/build/Proxy.java:184 ../java/build/Proxy.java:190
 msgid "Outproxy Not Found"
-msgstr ""
+msgstr "Outproxy Kunde Ej Hittas"
 
 #: ../java/build/Proxy.java:179
 msgid ""
 "The HTTP outproxy was not reachable, because its lease set was not found."
-msgstr ""
+msgstr "HTTP-outproxyn kunde inte nås, eftersom dess leaseset inte hittades."
 
 #: ../java/build/Proxy.java:180
 msgid ""
 "The outproxy is probably down, but there could also be network congestion."
-msgstr ""
+msgstr "Outproxyn är förmodligen nere, men det kan också vara överbelastning på  nätverket."
 
 #: ../java/build/Proxy.java:191
 msgid "The HTTP Outproxy was not found."
@@ -439,15 +440,15 @@ msgid ""
 "tunnel."
 msgstr "För att slå av autentisering, ta bort inställningen {0}i2ptunnel.proxy.auth=basic{1}, stanna och starta sedan om  HTTP Porxy tunneln."
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:610
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:634
 msgid "This seems to be a bad destination:"
 msgstr "Detta verkar vara ett felaktigt mål"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:611
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:635
 msgid "i2paddresshelper cannot help you with a destination like that!"
 msgstr "i2padresshjälp kan inte hjälpa dig med ett sådant  mål!"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:684
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:709
 #, java-format
 msgid ""
 "To visit the destination in your host database, click <a "
@@ -455,79 +456,79 @@ msgid ""
 "click <a href=\"{1}\">here</a>."
 msgstr "För att besöka målet i din värd databas href=\"{0}\"> klicka <a här </ a>. För att besöka de motstridiga hjälpaddresserna,<a href=\"{1}\"> klicka <a här </ a>."
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1095
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1119
 msgid "Destination lease set not found"
-msgstr ""
+msgstr "Destinationens leaseset kunde inte hittas"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1245
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1271
 msgid "Host"
 msgstr "Värd"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1249
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1275
 msgid "Base 32"
 msgstr "Bas 32"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1253
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1279
 msgid "Destination"
 msgstr "MÃ¥l"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1259
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1285
 #, java-format
 msgid "Continue to {0} without saving"
 msgstr "Fortsätt till {0} utan att spara"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1265
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1291
 #, java-format
 msgid "Save {0} to router address book and continue to website"
-msgstr ""
+msgstr "Spara {0} till routerns adressbok och fortsätt till webbsidan."
 
 #. only blockfile supports multiple books
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1268
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1294
 #, java-format
 msgid "Save {0} to master address book and continue to website"
-msgstr ""
+msgstr "Spara {0} till huvudadressboken och fortsätt till webbsidan."
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1269
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1295
 #, java-format
 msgid "Save {0} to private address book and continue to website"
-msgstr ""
+msgstr "Spara {0} till privata adressboken och fortsätt till webbsidan."
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:156
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:169
 #, java-format
 msgid "Added via address helper from {0}"
 msgstr "Tillagd via adresshjälpare från {0}"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:158
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:171
 msgid "Added via address helper"
 msgstr "Tillagd via adresshjälpen "
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:175
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:188
 msgid "router"
 msgstr "router"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:177
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
 msgid "master"
 msgstr "master"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:179
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
 msgid "private"
 msgstr "privat"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:186
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
 #, java-format
 msgid "Redirecting to {0}"
 msgstr "Om dirigerar till  {0}"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:213
 #, java-format
 msgid "Saved {0} to the {1} addressbook, redirecting now."
 msgstr "Spara {0} till {1}adressboken, omdirigerar nu "
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:199
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:214
 #, java-format
 msgid "Failed to save {0} to the {1} addressbook, redirecting now."
 msgstr "Misslyckades med att spara {0} till {1}adressboken, omdirigerar nu "
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:216
 msgid "Click here if you are not redirected automatically."
 msgstr "Klicka här om du inte omdirigeras automatiskt "
diff --git a/apps/i2ptunnel/locale-proxy/messages_uk.po b/apps/i2ptunnel/locale-proxy/messages_uk.po
index c2ca97ac18c2164d8814fc04b31b34ad61e62582..6bb879d82bfcaac7cd5c39c8b9476e45b4d7a9ce 100644
--- a/apps/i2ptunnel/locale-proxy/messages_uk.po
+++ b/apps/i2ptunnel/locale-proxy/messages_uk.po
@@ -4,8 +4,9 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# Denis Blank <gribua@gmail.com>, 2011
-# Denis Blank <gribua@gmail.com>, 2012
+# Denis Lysenko <gribua@gmail.com>, 2015
+# Denis Lysenko <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2012
 # jonny_nut, 2014
 # madjong <madjong@i2pmail.org>, 2014
 # puxud <puxud@alivance.com>, 2014
@@ -13,10 +14,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"POT-Creation-Date: 2015-05-14 08:33+0000\n"
+"PO-Revision-Date: 2015-08-07 17:15+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -36,7 +37,7 @@ msgstr ""
 #: ../java/build/Proxy.java:129 ../java/build/Proxy.java:140
 #: ../java/build/Proxy.java:151 ../java/build/Proxy.java:164
 #: ../java/build/Proxy.java:173 ../java/build/Proxy.java:185
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:207
 msgid "Router Console"
 msgstr "Консоль роутера"
 
@@ -50,7 +51,7 @@ msgstr "Консоль роутера"
 #: ../java/build/Proxy.java:152 ../java/build/Proxy.java:165
 #: ../java/build/Proxy.java:174 ../java/build/Proxy.java:186
 msgid "I2P Router Console"
-msgstr "Консоль роутера"
+msgstr "Консоль роутера I2P"
 
 #: ../java/build/Proxy.java:8 ../java/build/Proxy.java:20
 #: ../java/build/Proxy.java:30 ../java/build/Proxy.java:40
@@ -61,7 +62,7 @@ msgstr "Консоль роутера"
 #: ../java/build/Proxy.java:131 ../java/build/Proxy.java:142
 #: ../java/build/Proxy.java:153 ../java/build/Proxy.java:166
 #: ../java/build/Proxy.java:175 ../java/build/Proxy.java:187
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Configuration"
 msgstr "Настройки"
 
@@ -74,7 +75,7 @@ msgstr "Настройки"
 #: ../java/build/Proxy.java:132 ../java/build/Proxy.java:143
 #: ../java/build/Proxy.java:154 ../java/build/Proxy.java:167
 #: ../java/build/Proxy.java:176 ../java/build/Proxy.java:188
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Help"
 msgstr "Допомога"
 
@@ -87,7 +88,7 @@ msgstr "Допомога"
 #: ../java/build/Proxy.java:133 ../java/build/Proxy.java:144
 #: ../java/build/Proxy.java:155 ../java/build/Proxy.java:168
 #: ../java/build/Proxy.java:177 ../java/build/Proxy.java:189
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Addressbook"
 msgstr "Адресна книга"
 
@@ -440,15 +441,15 @@ msgid ""
 "tunnel."
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:610
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:634
 msgid "This seems to be a bad destination:"
 msgstr "Скоріше всього це поганий адрес призначення:"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:611
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:635
 msgid "i2paddresshelper cannot help you with a destination like that!"
 msgstr "i2paddresshelper не може допомогти Вам з місцем призначення як це!"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:684
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:709
 #, java-format
 msgid ""
 "To visit the destination in your host database, click <a "
@@ -456,79 +457,79 @@ msgid ""
 "click <a href=\"{1}\">here</a>."
 msgstr "Для того щоб перейти по локальному посиланню з локальної адресної книги, натисніть ось<a href=\"{0}\">тут</a>. Для переходу по новому addresshelper-посиланню, натисніть будь-ласка <a href=\"{1}\">тут</a>."
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1095
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1119
 msgid "Destination lease set not found"
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1245
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1271
 msgid "Host"
 msgstr "Адрес"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1249
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1275
 msgid "Base 32"
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1253
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1279
 msgid "Destination"
 msgstr "Адреса призначення"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1259
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1285
 #, java-format
 msgid "Continue to {0} without saving"
 msgstr "Продовжити до {0} без збереження"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1265
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1291
 #, java-format
 msgid "Save {0} to router address book and continue to website"
 msgstr ""
 
 #. only blockfile supports multiple books
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1268
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1294
 #, java-format
 msgid "Save {0} to master address book and continue to website"
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1269
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1295
 #, java-format
 msgid "Save {0} to private address book and continue to website"
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:156
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:169
 #, java-format
 msgid "Added via address helper from {0}"
 msgstr "Додано через address helper {0}"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:158
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:171
 msgid "Added via address helper"
 msgstr "Додано через address helper"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:175
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:188
 msgid "router"
 msgstr "роутер"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:177
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
 msgid "master"
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:179
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
 msgid "private"
 msgstr ""
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:186
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
 #, java-format
 msgid "Redirecting to {0}"
 msgstr "Перенаправляємо до {0}"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:213
 #, java-format
 msgid "Saved {0} to the {1} addressbook, redirecting now."
 msgstr "{0} збережено в {1} адресної книги, перенапрявляємо."
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:199
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:214
 #, java-format
 msgid "Failed to save {0} to the {1} addressbook, redirecting now."
 msgstr "Не вдалось зберегти {0} в {1} адресної книги, перенаправляємо."
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:216
 msgid "Click here if you are not redirected automatically."
 msgstr "Клацніть тут якщо вас не перенаправило автоматично."
diff --git a/apps/i2ptunnel/locale-proxy/messages_zh.po b/apps/i2ptunnel/locale-proxy/messages_zh.po
index 46634f334a4f53f2e8855549cb2217edddfe9b23..7448e0789ce93148f13c987604150cb876160ac1 100644
--- a/apps/i2ptunnel/locale-proxy/messages_zh.po
+++ b/apps/i2ptunnel/locale-proxy/messages_zh.po
@@ -15,8 +15,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-03-29 16:46+0000\n"
+"POT-Creation-Date: 2015-05-14 08:33+0000\n"
+"PO-Revision-Date: 2015-06-27 10:25+0000\n"
 "Last-Translator: YF <yfdyh000@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
@@ -38,7 +38,7 @@ msgstr "信息:新站点地址"
 #: ../java/build/Proxy.java:129 ../java/build/Proxy.java:140
 #: ../java/build/Proxy.java:151 ../java/build/Proxy.java:164
 #: ../java/build/Proxy.java:173 ../java/build/Proxy.java:185
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:207
 msgid "Router Console"
 msgstr "路由控制台"
 
@@ -63,7 +63,7 @@ msgstr "I2P 路由控制台"
 #: ../java/build/Proxy.java:131 ../java/build/Proxy.java:142
 #: ../java/build/Proxy.java:153 ../java/build/Proxy.java:166
 #: ../java/build/Proxy.java:175 ../java/build/Proxy.java:187
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Configuration"
 msgstr "配置"
 
@@ -76,7 +76,7 @@ msgstr "配置"
 #: ../java/build/Proxy.java:132 ../java/build/Proxy.java:143
 #: ../java/build/Proxy.java:154 ../java/build/Proxy.java:167
 #: ../java/build/Proxy.java:176 ../java/build/Proxy.java:188
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Help"
 msgstr "帮助"
 
@@ -89,7 +89,7 @@ msgstr "帮助"
 #: ../java/build/Proxy.java:133 ../java/build/Proxy.java:144
 #: ../java/build/Proxy.java:155 ../java/build/Proxy.java:168
 #: ../java/build/Proxy.java:177 ../java/build/Proxy.java:189
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:193
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:208
 msgid "Addressbook"
 msgstr "地址簿"
 
@@ -200,7 +200,7 @@ msgstr "您可能希望{0}重试{1}。"
 #: ../java/build/Proxy.java:138 ../java/build/Proxy.java:162
 #: ../java/build/Proxy.java:183 ../java/build/Proxy.java:195
 msgid "Could not find the following destination:"
-msgstr "无法直到如下目标:"
+msgstr "未能找到下列目的地:"
 
 #: ../java/build/Proxy.java:56 ../java/build/Proxy.java:62
 #: ../java/build/Proxy.java:128 ../java/build/Proxy.java:134
@@ -442,15 +442,15 @@ msgid ""
 "tunnel."
 msgstr "要禁用身份认证,请删除配置 {0}i2ptunnel.proxy.auth=basic{1}, 然后停止并重启 HTTP Proxy 隧道。"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:610
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:634
 msgid "This seems to be a bad destination:"
 msgstr "目标似乎无效:"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:611
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:635
 msgid "i2paddresshelper cannot help you with a destination like that!"
 msgstr "i2paddresshelper 对您输入的目标无能为力!"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:684
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:709
 #, java-format
 msgid ""
 "To visit the destination in your host database, click <a "
@@ -458,79 +458,79 @@ msgid ""
 "click <a href=\"{1}\">here</a>."
 msgstr "要访问您地址簿中设置的目标,请点击<a href=\"{0}\">这里</a>。要访问地址助手返回的目标,请点<a href=\"{1}\">这里</a>。"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1095
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1119
 msgid "Destination lease set not found"
 msgstr "找不到目标租赁"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1245
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1271
 msgid "Host"
 msgstr "主机"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1249
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1275
 msgid "Base 32"
 msgstr "Base 32"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1253
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1279
 msgid "Destination"
 msgstr "目标"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1259
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1285
 #, java-format
 msgid "Continue to {0} without saving"
 msgstr "继续{0},而不保存"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1265
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1291
 #, java-format
 msgid "Save {0} to router address book and continue to website"
 msgstr "保存 {0} 到路由器地址簿并继续访问网站"
 
 #. only blockfile supports multiple books
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1268
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1294
 #, java-format
 msgid "Save {0} to master address book and continue to website"
 msgstr "保存 {0} 到主地址簿并继续访问网站"
 
-#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1269
+#: ../java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java:1295
 #, java-format
 msgid "Save {0} to private address book and continue to website"
 msgstr "保存 {0} 到私有地址簿并继续访问网站"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:156
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:169
 #, java-format
 msgid "Added via address helper from {0}"
 msgstr "已通过地址助手 {0} 添加"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:158
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:171
 msgid "Added via address helper"
 msgstr "已通过地址助手添加"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:175
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:188
 msgid "router"
 msgstr "路由器"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:177
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:190
 msgid "master"
 msgstr "主"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:179
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:192
 msgid "private"
 msgstr "私有"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:186
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
 #, java-format
 msgid "Redirecting to {0}"
 msgstr "正在重定向至{0}"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:198
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:213
 #, java-format
 msgid "Saved {0} to the {1} addressbook, redirecting now."
 msgstr "目标{0}已保存至{1}地址簿中,正在重定向至此目标。"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:199
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:214
 #, java-format
 msgid "Failed to save {0} to the {1} addressbook, redirecting now."
 msgstr "目标{0}在{1}地址簿中保存失败,正在重定向至此目标。"
 
-#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:201
+#: ../java/src/net/i2p/i2ptunnel/localServer/LocalHTTPServer.java:216
 msgid "Click here if you are not redirected automatically."
 msgstr "如果未能自动转到,请点击这里。"
diff --git a/apps/i2ptunnel/locale/messages_sv.po b/apps/i2ptunnel/locale/messages_sv.po
index 9a18890a0c4d969216b5f3d661d52b1ec12dc032..9bc348aea562344e2c8564fb87eb8c3966983472 100644
--- a/apps/i2ptunnel/locale/messages_sv.po
+++ b/apps/i2ptunnel/locale/messages_sv.po
@@ -4,6 +4,7 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# Anders Nilsson <locally@devode.se>, 2015
 # Calle Rundgren <samaire@samaire.net>, 2013
 # cacapo <handelsehorisont@gmail.com>, 2015
 # hottuna <i2p@robertfoss.se>, 2013
@@ -14,9 +15,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-04-09 17:35+0000\n"
-"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
-"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
+"PO-Revision-Date: 2015-08-25 20:41+0000\n"
+"Last-Translator: Anders Nilsson <locally@devode.se>\n"
+"Language-Team: Swedish (Sweden) (http://www.transifex.com/otf/I2P/language/sv_SE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -108,7 +109,7 @@ msgstr "Standard klient"
 
 #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:378
 msgid "HTTP/HTTPS client"
-msgstr "HTTP/HTTPS klient"
+msgstr "HTTP/HTTPS-klient"
 
 #: ../java/src/net/i2p/i2ptunnel/web/IndexBean.java:379
 msgid "IRC client"
@@ -163,11 +164,11 @@ msgstr "Ogiltig adress"
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:82
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:85
 msgid "Hidden Services Manager"
-msgstr "Manager Dolda Tjänster"
+msgstr "Hanterare för dolda tjänster"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:86
 msgid "Edit Client Tunnel"
-msgstr "Redigera Klienttunnel"
+msgstr "Redigera klienttunnel"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:114
 msgid "Edit proxy settings"
@@ -240,11 +241,11 @@ msgstr "Utgående proxier"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:245
 msgid "SSL Outproxies"
-msgstr "SSL Outproxies"
+msgstr "SSL-utproxies"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:251
 msgid "Use Outproxy Plugin"
-msgstr "Använd Outproxy Plugin"
+msgstr "Använd Outproxy-plugin"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:255
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:293
@@ -313,22 +314,22 @@ msgstr "Längd"
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:318
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:316
 msgid "0 hop tunnel (no anonymity)"
-msgstr "0 hop tunnel (ingen anonymitet)"
+msgstr "0-hopp tunnel (ingen anonymitet)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:322
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:320
 msgid "1 hop tunnel (low anonymity)"
-msgstr "1 hop tunnel (låg anonymitet)"
+msgstr "1-hopp tunnel (låg anonymitet)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:326
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:324
 msgid "2 hop tunnel (medium anonymity)"
-msgstr "2 hot tunnel (medium anonymitet)"
+msgstr "2-hopp tunnel (medium anonymitet)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:330
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:328
 msgid "3 hop tunnel (high anonymity)"
-msgstr "3 hop tunnel (hög anonymitet)"
+msgstr "3-hopp tunnel (hög anonymitet)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:338
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:336
@@ -519,23 +520,23 @@ msgstr "Lokalt mål"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:524
 msgid "Local Base 32"
-msgstr "Lokal Base 32"
+msgstr "Lokal bas32"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:533
 msgid "Pass User-Agent header through"
-msgstr "Förmedla User-Agent header"
+msgstr "Skicka User-Agent-fältet vidare"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:539
 msgid "Pass Referer header through"
-msgstr "Förmedla Referer header"
+msgstr "Skicka Referer-fältet vidare"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:545
 msgid "Pass Accept headers through"
-msgstr "Förmedla Accept headers"
+msgstr "Skicka Accept-fältet vidare"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:551
 msgid "Allow SSL to I2P addresses"
-msgstr "Tillåt SSL till I2P adresser"
+msgstr "Tillåt SSL till I2P-adresser"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:562
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:618
@@ -591,7 +592,7 @@ msgstr "Spara"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:86
 msgid "Edit Hidden Service"
-msgstr "Redigera Dold Tjänst"
+msgstr "Redigera dold tjänst"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:114
 msgid "Edit server settings"
@@ -663,7 +664,7 @@ msgstr "Blockera tillgång via inproxies"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:497
 msgid "Unique Local Address per Client"
-msgstr "Unik Lokal Adress per Klient"
+msgstr "Unik lokal adress per klient"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:503
 msgid "Optimize for Multihoming"
@@ -745,7 +746,7 @@ msgstr "Starta Om Alla"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:126
 msgid "I2P Hidden Services"
-msgstr "I2P Dolda Tjänster"
+msgstr "I2P Dolda tjänster"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:151
diff --git a/apps/i2ptunnel/locale/messages_uk.po b/apps/i2ptunnel/locale/messages_uk.po
index 30b9a24a0bf266dcbd6dd65df8b50fe38a81baec..206a7a16265a73d5a2d638506eef88e5824ad271 100644
--- a/apps/i2ptunnel/locale/messages_uk.po
+++ b/apps/i2ptunnel/locale/messages_uk.po
@@ -5,8 +5,8 @@
 # 
 # Translators:
 # asteryx <asteryx82@gmail.com>, 2015
-# Denis Blank <gribua@gmail.com>, 2011
-# Denis Blank <gribua@gmail.com>, 2012
+# Denis Lysenko <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2012
 # LinuxChata, 2014
 # madjong <madjong@i2pmail.org>, 2014-2015
 # brianhopes <voganc-12@live.ru>, 2015
@@ -15,9 +15,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-05-07 07:43+0000\n"
-"Last-Translator: brianhopes <voganc-12@live.ru>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"PO-Revision-Date: 2015-08-07 16:31+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff --git a/apps/i2ptunnel/locale/messages_zh.po b/apps/i2ptunnel/locale/messages_zh.po
index 125247dc375fb8d3e5232bd740f614226db3e3b9..21a471e2e8c516d003971678f12897793cf40b3b 100644
--- a/apps/i2ptunnel/locale/messages_zh.po
+++ b/apps/i2ptunnel/locale/messages_zh.po
@@ -18,8 +18,8 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"PO-Revision-Date: 2015-06-07 15:37+0000\n"
+"Last-Translator: YF <yfdyh000@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -166,7 +166,7 @@ msgstr "无效地址"
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:82
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:85
 msgid "Hidden Services Manager"
-msgstr "隐藏服务管理器"
+msgstr "隐身服务管理器"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:86
 msgid "Edit Client Tunnel"
@@ -393,18 +393,18 @@ msgstr "无备用隧道(无冗余,不增加资源占用)"
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:397
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:395
 msgid "1 backup tunnel each direction (low redundancy, low resource usage)"
-msgstr "备用隧道对x1 (低冗余,低资源占用)"
+msgstr "每方向1个备用隧道 (低冗余,低资源占用)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:401
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:399
 msgid ""
 "2 backup tunnels each direction (medium redundancy, medium resource usage)"
-msgstr "备用隧道对x2 (中冗余,中资源占用)"
+msgstr "每方向2个备用隧道 (中冗余,中资源占用)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:405
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:403
 msgid "3 backup tunnels each direction (high redundancy, high resource usage)"
-msgstr "备用隧道对x3 (高冗余,高资源占用)"
+msgstr "每方向3个备用隧道 (高冗余,高资源占用)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editClient_jsp.java:413
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:411
@@ -594,7 +594,7 @@ msgstr "保存"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:86
 msgid "Edit Hidden Service"
-msgstr "编辑隐藏服务"
+msgstr "编辑隐身服务"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/editServer_jsp.java:114
 msgid "Edit server settings"
@@ -748,7 +748,7 @@ msgstr "全部重启"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:126
 msgid "I2P Hidden Services"
-msgstr "I2P 隐藏服务"
+msgstr "I2P 隐身服务"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:130
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:151
@@ -806,7 +806,7 @@ msgstr "启动"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:265
 msgid "New hidden service"
-msgstr "新建隐藏服务"
+msgstr "新建隐身服务"
 
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:267
 #: ../jsp/WEB-INF/classes/net/i2p/i2ptunnel/jsp/index_jsp.java:436
diff --git a/apps/jetty/apache-tomcat-deployer/NOTICE b/apps/jetty/apache-tomcat-deployer/NOTICE
index 932b4e744d7face86106f3cf1620f8cb81a7259b..32940950b4f5f0e7bfa5533482accb6f26bfe0cb 100644
--- a/apps/jetty/apache-tomcat-deployer/NOTICE
+++ b/apps/jetty/apache-tomcat-deployer/NOTICE
@@ -1,5 +1,5 @@
 Apache Tomcat
-Copyright 1999-2014 The Apache Software Foundation
+Copyright 1999-2015 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
diff --git a/apps/jetty/apache-tomcat-deployer/README-i2p.txt b/apps/jetty/apache-tomcat-deployer/README-i2p.txt
index c64d393b103a54d28ccaff5439c40210eb3c0da0..c354fb71af810a69c72b2b26a837384326d59123 100644
--- a/apps/jetty/apache-tomcat-deployer/README-i2p.txt
+++ b/apps/jetty/apache-tomcat-deployer/README-i2p.txt
@@ -2,7 +2,7 @@ This is Apache Tomcat 6.x, supporting Servlet 2.5 and JSP 2.1.
 The Glassfish JSP 2.1 bundled in Jetty 6 is way too old.
 
 Retrieved from the file
-	apache-tomcat-6.0.43-deployer.tar.gz
+	apache-tomcat-6.0.44-deployer.tar.gz
 
 minus the following files and directores:
 
diff --git a/apps/jetty/apache-tomcat-deployer/lib/el-api.jar b/apps/jetty/apache-tomcat-deployer/lib/el-api.jar
index def835a2561dbc3e56e151e3cdb4cf48fb9332fd..c6c52f48c15b9e22f76f87695a416f92fc42b652 100644
Binary files a/apps/jetty/apache-tomcat-deployer/lib/el-api.jar and b/apps/jetty/apache-tomcat-deployer/lib/el-api.jar differ
diff --git a/apps/jetty/apache-tomcat-deployer/lib/jasper-el.jar b/apps/jetty/apache-tomcat-deployer/lib/jasper-el.jar
index 9c779fd396379f38d12c6fc4f19d299e3fec48da..f7d19049e7bcb0eb37ab337867c59029120703c9 100644
Binary files a/apps/jetty/apache-tomcat-deployer/lib/jasper-el.jar and b/apps/jetty/apache-tomcat-deployer/lib/jasper-el.jar differ
diff --git a/apps/jetty/apache-tomcat-deployer/lib/jasper.jar b/apps/jetty/apache-tomcat-deployer/lib/jasper.jar
index c7f965777a2458f5f8db673bf150e30932a202fe..f7a2204b4d360497aaad7e4d193750db29d98654 100644
Binary files a/apps/jetty/apache-tomcat-deployer/lib/jasper.jar and b/apps/jetty/apache-tomcat-deployer/lib/jasper.jar differ
diff --git a/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar b/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar
index f405513f54d6425fb96e70fcf87f0fcbf25201f4..534a5953dd5438117f8be4cea0f067fd882cbcbb 100644
Binary files a/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar and b/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar differ
diff --git a/apps/jetty/apache-tomcat/README-i2p.txt b/apps/jetty/apache-tomcat/README-i2p.txt
index 503879d85cc8ffc9e48559ee8680b05b670f4d9a..f62c55e862898c2b60e0b83f2ef10ba23b9d8d8a 100644
--- a/apps/jetty/apache-tomcat/README-i2p.txt
+++ b/apps/jetty/apache-tomcat/README-i2p.txt
@@ -1,7 +1,7 @@
 This is Apache Tomcat 6.x, supporting Servlet 2.5 and JSP 2.1.
 
 Retrieved from the file
-	apache-tomcat-6.0.43.tar.gz
+	apache-tomcat-6.0.44.tar.gz
 
 containing only a small subset of lib/tomcat-coyote.jar.
 
diff --git a/apps/jetty/apache-tomcat/lib/tomcat-coyote-util.jar b/apps/jetty/apache-tomcat/lib/tomcat-coyote-util.jar
index 1edfeca8512bb56f6dd6093029b7dbd6f04eec5a..54e2d02d7090e07e78e941562a5152ba52bc5b9e 100644
Binary files a/apps/jetty/apache-tomcat/lib/tomcat-coyote-util.jar and b/apps/jetty/apache-tomcat/lib/tomcat-coyote-util.jar differ
diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml
index 22ee3a5fc8b7e92973e526031c17b6a65045392f..2fad37dfafe9fe236bea7bb9125e3506bd78aa35 100644
--- a/apps/jetty/build.xml
+++ b/apps/jetty/build.xml
@@ -10,7 +10,7 @@
     <property name="javac.compilerargs" value="" />
     <property name="javac.version" value="1.6" />
     <property name="tomcat.lib" value="apache-tomcat-deployer/lib" />
-    <property name="tomcat.ver" value="6.0.43" />
+    <property name="tomcat.ver" value="6.0.44" />
     <property name="tomcat2.lib" value="apache-tomcat-${tomcat.ver}/lib" />
     <property name="tomcat2.lib.small" value="apache-tomcat/lib" />
 
diff --git a/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java b/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java
index ab4b606f9a942f4de861bb87c349f30beaa4edbd..723e069f7746aaedc776ec39179d666f06049058 100644
--- a/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java
+++ b/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java
@@ -465,7 +465,7 @@ public class I2PRequestLog extends AbstractLifeCycle implements RequestLog
         else 
             _ignorePathMap = null;
         
-        _writer = new OutputStreamWriter(_out);
+        _writer = new OutputStreamWriter(_out, "UTF-8");
         _buffers = new ArrayList<Utf8StringBuilder>();
         _copy = new char[1024];
         super.doStart();
diff --git a/apps/jetty/java/src/net/i2p/jetty/JettyStart.java b/apps/jetty/java/src/net/i2p/jetty/JettyStart.java
index 4eb0d6ed158ae5cde4baa467479f027ca374fb6f..79fec449c723672239764cc8f0bd69dabba5bd4c 100644
--- a/apps/jetty/java/src/net/i2p/jetty/JettyStart.java
+++ b/apps/jetty/java/src/net/i2p/jetty/JettyStart.java
@@ -16,6 +16,7 @@ package net.i2p.jetty;
 // limitations under the License.
 // ========================================================================
 
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -25,8 +26,11 @@ import java.util.Properties;
 import net.i2p.I2PAppContext;
 import net.i2p.app.*;
 import static net.i2p.app.ClientAppState.*;
+import net.i2p.util.I2PAppThread;
+import net.i2p.util.PortMapper;
 
-import java.io.InputStream;
+import org.eclipse.jetty.server.Connector;
+import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.util.component.LifeCycle;
 import org.eclipse.jetty.util.resource.Resource;
 import org.eclipse.jetty.xml.XmlConfiguration;
@@ -45,13 +49,15 @@ public class JettyStart implements ClientApp {
     private final ClientAppManager _mgr;
     private final String[] _args;
     private final List<LifeCycle> _jettys;
+    private final I2PAppContext _context;
     private volatile ClientAppState _state;
+    private volatile int _port;
 
     /**
      *  All args must be XML file names.
      *  Does not support any of the other argument types from org.mortbay.start.Main.
      *
-     *  @param context unused, may be null
+     *  @param context may be null
      *  @param mgr may be null e.g. for use in plugins
      */
     public JettyStart(I2PAppContext context, ClientAppManager mgr, String[] args) throws Exception {
@@ -59,6 +65,7 @@ public class JettyStart implements ClientApp {
         _mgr = mgr;
         _args = args;
         _jettys = new ArrayList<LifeCycle>(args.length);
+        _context = context;
         parseArgs(args);
         _state = INITIALIZED;
     }
@@ -66,6 +73,7 @@ public class JettyStart implements ClientApp {
     /**
      *  Modified from XmlConfiguration.main()
      */
+    @SuppressWarnings({"unchecked", "rawtypes"})
     public void parseArgs(String[] args) throws Exception {
         Properties properties=new Properties();
         XmlConfiguration last=null;
@@ -92,7 +100,7 @@ public class JettyStart implements ClientApp {
         }
     }
 
-    public void startup() {
+    public synchronized void startup() {
         if (_state != INITIALIZED)
             return;
         if (_jettys.isEmpty()) {
@@ -102,7 +110,7 @@ public class JettyStart implements ClientApp {
         }
     }
 
-    private class Starter extends Thread {
+    private class Starter extends I2PAppThread {
         public Starter() {
             super("JettyStarter");
             changeState(STARTING);
@@ -116,6 +124,22 @@ public class JettyStart implements ClientApp {
                 if (!lc.isRunning()) {
                     try {
                         lc.start();
+                        if (_context != null && _context.portMapper().getPort(PortMapper.SVC_EEPSITE) <= 0) {
+                            if (lc instanceof Server) {
+                                Server server = (Server) lc;
+                                Connector[] connectors = server.getConnectors();
+                                if (connectors.length > 0) {
+                                    int port = connectors[0].getPort();
+                                    if (port > 0) {
+                                        _port = port;
+                                        String host = connectors[0].getHost();
+                                        if (host.equals("0.0.0.0") || host.equals("::"))
+                                            host = "127.0.0.1";
+                                        _context.portMapper().register(PortMapper.SVC_EEPSITE, host, port);
+                                    }
+                                }
+                            }
+                        }
                     } catch (Exception e) {
                         changeState(START_FAILED, e);
                         return;
@@ -138,7 +162,7 @@ public class JettyStart implements ClientApp {
         }
     }
 
-    private class Stopper extends Thread {
+    private class Stopper extends I2PAppThread {
         public Stopper() {
             super("JettyStopper");
             changeState(STOPPING);
@@ -154,6 +178,10 @@ public class JettyStart implements ClientApp {
                     }
                 }
             }
+            if (_context != null && _port > 0 && _context.portMapper().getPort(PortMapper.SVC_EEPSITE) == _port) {
+                _port = 0;
+                _context.portMapper().unregister(PortMapper.SVC_EEPSITE);
+            }
             changeState(STOPPED);
         }
     }
diff --git a/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java b/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java
index b8b8d39919984a5d3cc7289040401c683e951e64..8d16e5953a6a8c29e1a5916ac17de6f6938c255c 100644
--- a/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java
+++ b/apps/jetty/java/src/net/i2p/servlet/filters/XSSRequestWrapper.java
@@ -84,10 +84,10 @@ public class XSSRequestWrapper extends HttpServletRequestWrapper {
      *  Parameter names starting with "nofilter_" will not be filtered.
      */
     @Override
-    public Map getParameterMap() {
-        Map rv = new HashMap();
-        for (Enumeration keys = getParameterNames(); keys.hasMoreElements(); ) {
-             String k = (String) keys.nextElement();
+    public Map<String, String[]> getParameterMap() {
+        Map<String, String[]> rv = new HashMap<String, String[]>();
+        for (Enumeration<String> keys = getParameterNames(); keys.hasMoreElements(); ) {
+             String k = keys.nextElement();
              String[] v = getParameterValues(k);
              if (v != null)
                  rv.put(k, v);
diff --git a/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java b/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java
index 1c964b8f1974d9c84e5f445d15f7ecb06331195a..1cc3973fdb9d8301839e9690a401b25f20a5ba33 100644
--- a/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java
+++ b/apps/jetty/java/src/org/mortbay/servlet/MultiPartRequest.java
@@ -219,6 +219,7 @@ public class MultiPartRequest
     }
 
     /* ------------------------------------------------------------ */
+    @SuppressWarnings("rawtypes")
     public Hashtable[] getMultipleParams(String name) 
     {
         List<Object> parts = _partMap.getValues(name);
diff --git a/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java b/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java
index 9a3f088fb6424798592105c59c8cd0f33e5de7f5..0c98dded196d1b7815315ef19fd330da7e124b65 100644
--- a/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java
+++ b/apps/jetty/java/src/org/mortbay/util/ByteArrayPool.java
@@ -29,7 +29,7 @@ public class ByteArrayPool
     public static final int __POOL_SIZE=
         Integer.getInteger("org.mortbay.util.ByteArrayPool.pool_size",8).intValue();
     
-    public static final ThreadLocal __pools=new BAThreadLocal();
+    public static final ThreadLocal<byte[][]> __pools = new BAThreadLocal();
     public static final AtomicInteger __slot = new AtomicInteger();
     
     /* ------------------------------------------------------------ */
@@ -39,7 +39,7 @@ public class ByteArrayPool
      */
     public static byte[] getByteArray(int size)
     {
-        byte[][] pool = (byte[][])__pools.get();
+        byte[][] pool = __pools.get();
         boolean full=true;
         for (int i=pool.length;i-->0;)
         {
@@ -63,7 +63,7 @@ public class ByteArrayPool
     /* ------------------------------------------------------------ */
     public static byte[] getByteArrayAtLeast(int minSize)
     {
-        byte[][] pool = (byte[][])__pools.get();
+        byte[][] pool = __pools.get();
         for (int i=pool.length;i-->0;)
         {
             if (pool[i]!=null && pool[i].length>=minSize)
@@ -84,7 +84,7 @@ public class ByteArrayPool
         if (b==null)
             return;
         
-        byte[][] pool = (byte[][])__pools.get();
+        byte[][] pool = __pools.get();
         for (int i=pool.length;i-->0;)
         {
             if (pool[i]==null)
@@ -103,9 +103,10 @@ public class ByteArrayPool
     
     /* ------------------------------------------------------------ */
     /* ------------------------------------------------------------ */
-    private static final class BAThreadLocal extends ThreadLocal
+    private static final class BAThreadLocal extends ThreadLocal<byte[][]>
     {
-        protected Object initialValue()
+        @Override
+        protected byte[][] initialValue()
             {
                 return new byte[__POOL_SIZE][];
             }
diff --git a/apps/ministreaming/java/bundle-messages.sh b/apps/ministreaming/java/bundle-messages.sh
index 062deb2c8be14e00fc8c7bc62ec845b892b578cf..140efc61e13cd4055880713468f89f4e9b44d507 100755
--- a/apps/ministreaming/java/bundle-messages.sh
+++ b/apps/ministreaming/java/bundle-messages.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="../java/src"
@@ -63,13 +63,13 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean poupdate.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x \
+	                 --keyword=_t --keyword=_x \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java
index 99c81afdd6a48fca9cf65673a5b672ccd82ae48f..1b67bd2261ede4089c1018e36541057a28d64f68 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketEepGet.java
@@ -11,8 +11,12 @@ import java.util.Properties;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
+import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
+import net.i2p.data.Base32;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
+import net.i2p.data.Hash;
 import net.i2p.util.EepGet;
 import net.i2p.util.SocketTimeout;
 
@@ -129,9 +133,31 @@ public class I2PSocketEepGet extends EepGet {
                     }
                 }
 
-                Destination dest = _context.namingService().lookup(host);
+                // Use existing I2PSession for lookups.
+                // This is much more efficient than using the naming service
+                Destination dest;
+                I2PSession sess = _socketManager.getSession();
+                if (sess != null && !sess.isClosed()) {
+                    try {
+                        if (host.length() == 60 && host.endsWith(".b32.i2p")) {
+                            byte[] b = Base32.decode(host.substring(0, 52));
+                            if (b != null) {
+                                Hash h = Hash.create(b);
+                                dest = sess.lookupDest(h, 20*1000);
+                            } else {
+                                dest = null;
+                            }
+                        } else {
+                            dest = sess.lookupDest(host, 20*1000);
+                        }
+                    } catch (I2PSessionException ise) {
+                        dest = null;
+                    }
+                } else {
+                    dest = _context.namingService().lookup(host);
+                }
                 if (dest == null)
-                    throw new UnknownHostException("Unknown or non-i2p host");
+                    throw new UnknownHostException("Unknown or non-i2p host: " + host);
 
                 // Set the timeouts, using the other existing options in the socket manager
                 // This currently duplicates what SocketTimeout is doing in EepGet,
diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java
index 5d5e97b65e17ecce08070e3d6cb269cd7afb30a7..4be4d532b0bd5491d8fb415c4b5901de6d386738 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketException.java
@@ -124,7 +124,7 @@ public class I2PSocketException extends SocketException {
 
             default:
                 // Translate this one here, can't do it later
-                return _("Failure code") + ": " + _status;
+                return _t("Failure code") + ": " + _status;
         }
     }
 
@@ -136,13 +136,13 @@ public class I2PSocketException extends SocketException {
         String s = getMessage();
         if (s == null)
             return null;
-        return _(s);
+        return _t(s);
     }
 
     /**
      *  Translate
      */
-    private static String _(String s) {
+    private static String _t(String s) {
         return Translate.getString(s, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
     }
 
diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java
index 5d1819b702b5f7294475a94749bfe74e232a3cd0..a969581bd0aa677b2e5ddd06f30198216f675927 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java
@@ -5,17 +5,20 @@
 package net.i2p.client.streaming;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InterruptedIOException;
 import java.net.ConnectException;
 import java.net.NoRouteToHostException;
 import java.net.ServerSocket;
 import java.net.Socket;
+import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
 import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.Destination;
 
 
@@ -34,6 +37,26 @@ public interface I2PSocketManager {
      */
     public I2PSession getSession();
     
+    /**
+     *  @return a new subsession, non-null
+     *  @param privateKeyStream null for transient, if non-null must have same encryption keys as primary session
+     *                          and different signing keys
+     *  @param opts subsession options if any, may be null
+     *  @since 0.9.21
+     */
+    public I2PSession addSubsession(InputStream privateKeyStream, Properties opts) throws I2PSessionException;
+    
+    /**
+     *  @since 0.9.21
+     */
+    public void removeSubsession(I2PSession session);
+    
+    /**
+     *  @return a list of subsessions, non-null, does not include the primary session
+     *  @since 0.9.21
+     */
+    public List<I2PSession> getSubsessions();
+
     /**
      * How long should we wait for the client to .accept() a socket before
      * sending back a NACK/Close?  
diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
index 863c5d31a84f72cdbbd5e8c8bf08f52b20d2cc44..91c18cfe42e7bf477bbce3fcecbf5254e1e1796e 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManagerFactory.java
@@ -256,9 +256,9 @@ public class I2PSocketManagerFactory {
             Class<?> cls = Class.forName(classname);
             if (!I2PSocketManager.class.isAssignableFrom(cls))
                 throw new IllegalArgumentException(classname + " is not an I2PSocketManager");
-            Constructor<I2PSocketManager> con = (Constructor<I2PSocketManager>)
-                  cls.getConstructor(new Class[] {I2PAppContext.class, I2PSession.class, Properties.class, String.class});
-            I2PSocketManager mgr = con.newInstance(new Object[] {context, session, opts, name});
+            Constructor<?> con =
+                  cls.getConstructor(I2PAppContext.class, I2PSession.class, Properties.class, String.class);
+            I2PSocketManager mgr = (I2PSocketManager) con.newInstance(new Object[] {context, session, opts, name});
             return mgr;
         } catch (Throwable t) {
             getLog().log(Log.CRIT, "Error loading " + classname, t);
diff --git a/apps/ministreaming/locale/messages_ca.po b/apps/ministreaming/locale/messages_ca.po
new file mode 100644
index 0000000000000000000000000000000000000000..cdd4b85e22c5f713938be0d1b1a5d25926d0c807
--- /dev/null
+++ b/apps/ministreaming/locale/messages_ca.po
@@ -0,0 +1,95 @@
+# I2P
+# Copyright (C) 2014 The I2P Project
+# This file is distributed under the same license as the streaming package.
+# To contribute translations, see http://www.i2p2.de/newdevelopers
+# 
+# Translators:
+# icc <mail@koopic.net>, 2015
+# icc <mail@koopic.net>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-03-29 14:30+0000\n"
+"PO-Revision-Date: 2015-05-13 23:13+0000\n"
+"Last-Translator: icc <mail@koopic.net>\n"
+"Language-Team: Catalan (http://www.transifex.com/projects/p/I2P/language/ca/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ca\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:69
+msgid "Message timeout"
+msgstr "Missatge de temporització"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:72
+msgid "Failed delivery to local destination"
+msgstr "Ha fallat l'enviament a la destinació local"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:75
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:108
+msgid "Local router failure"
+msgstr "Fallada en encaminador local"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:78
+msgid "Local network failure"
+msgstr "Fallada en xarxa local"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:81
+msgid "Session closed"
+msgstr "Sessió tancada"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:84
+msgid "Invalid message"
+msgstr "Missatge invàlid"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:87
+msgid "Invalid message options"
+msgstr "Opcions de missatge invàlides"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:90
+msgid "Buffer overflow"
+msgstr "Desbordament de memòria intermèdia"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:93
+msgid "Message expired"
+msgstr "Missatge caducat"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:96
+msgid "Local lease set invalid"
+msgstr ""
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:99
+msgid "No local tunnels"
+msgstr "Cap túnel local"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:102
+msgid "Unsupported encryption options"
+msgstr "Opcions d'encriptació no admeses"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:105
+msgid "Invalid destination"
+msgstr "Destinació invàlida"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:111
+msgid "Destination lease set expired"
+msgstr ""
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:114
+msgid "Destination lease set not found"
+msgstr ""
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:117
+msgid "Local destination shutdown"
+msgstr "Destinació local apagada"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:120
+msgid "Connection was reset"
+msgstr "Connexió reinicialitzada"
+
+#. Translate this one here, can't do it later
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:127
+msgid "Failure code"
+msgstr "Fallada de codi"
diff --git a/apps/ministreaming/locale/messages_sv.po b/apps/ministreaming/locale/messages_sv.po
new file mode 100644
index 0000000000000000000000000000000000000000..4d3e8bde6c8196847ee10ee8aa2ea544180c455c
--- /dev/null
+++ b/apps/ministreaming/locale/messages_sv.po
@@ -0,0 +1,94 @@
+# I2P
+# Copyright (C) 2014 The I2P Project
+# This file is distributed under the same license as the streaming package.
+# To contribute translations, see http://www.i2p2.de/newdevelopers
+# 
+# Translators:
+# cacapo <handelsehorisont@gmail.com>, 2015
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-03-29 14:30+0000\n"
+"PO-Revision-Date: 2015-05-19 05:18+0000\n"
+"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
+"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: sv_SE\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:69
+msgid "Message timeout"
+msgstr "Meddelande-timeout"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:72
+msgid "Failed delivery to local destination"
+msgstr "Leverans till lokal destination misslyckades"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:75
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:108
+msgid "Local router failure"
+msgstr "Lokalt routerfel"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:78
+msgid "Local network failure"
+msgstr "Lokalt nätverksfel"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:81
+msgid "Session closed"
+msgstr "Sessionen stängd"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:84
+msgid "Invalid message"
+msgstr "Ogiltigt meddelande"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:87
+msgid "Invalid message options"
+msgstr "Ogiltigt meddelandealternativ"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:90
+msgid "Buffer overflow"
+msgstr "Buffer overflow"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:93
+msgid "Message expired"
+msgstr "Meddelande utgånget"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:96
+msgid "Local lease set invalid"
+msgstr "Lokalt leaseset ogiltigt"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:99
+msgid "No local tunnels"
+msgstr "Inga lokala tunnlar"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:102
+msgid "Unsupported encryption options"
+msgstr "Krypteringsalternativ stöds ej"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:105
+msgid "Invalid destination"
+msgstr "Ogiltig destination"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:111
+msgid "Destination lease set expired"
+msgstr "Destinationens leaseset har gått ut."
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:114
+msgid "Destination lease set not found"
+msgstr "Destinationens leaseset hittades inte"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:117
+msgid "Local destination shutdown"
+msgstr "Lokal destination stängs ner"
+
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:120
+msgid "Connection was reset"
+msgstr "Anslutningen startades om"
+
+#. Translate this one here, can't do it later
+#: ../java/src/net/i2p/client/streaming/I2PSocketException.java:127
+msgid "Failure code"
+msgstr "Felkod"
diff --git a/apps/ministreaming/locale/messages_uk.po b/apps/ministreaming/locale/messages_uk.po
index c10b20698b2cf0bc7beba69338577128bb4fc1af..fab6b08002903b693844967b1ddb1748cd00977d 100644
--- a/apps/ministreaming/locale/messages_uk.po
+++ b/apps/ministreaming/locale/messages_uk.po
@@ -4,6 +4,7 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# Denis Lysenko <gribua@gmail.com>, 2015
 # madjong <madjong@i2pmail.org>, 2015
 # puxud <puxud@alivance.com>, 2014
 msgid ""
@@ -11,9 +12,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-04-10 13:47+0000\n"
-"Last-Translator: madjong <madjong@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"PO-Revision-Date: 2015-08-07 17:12+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -22,11 +23,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:69
 msgid "Message timeout"
-msgstr ""
+msgstr "Тайм-аут повідомлення"
 
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:72
 msgid "Failed delivery to local destination"
-msgstr ""
+msgstr "Не вдалось доставити до локального призначення"
 
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:75
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:108
@@ -51,11 +52,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:90
 msgid "Buffer overflow"
-msgstr ""
+msgstr "Буфер заповнено"
 
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:93
 msgid "Message expired"
-msgstr ""
+msgstr "Повідомлення застаріло"
 
 #: ../java/src/net/i2p/client/streaming/I2PSocketException.java:96
 msgid "Local lease set invalid"
diff --git a/apps/routerconsole/java/bundle-messages-countries.sh b/apps/routerconsole/java/bundle-messages-countries.sh
index 38bd5d186435f688e0bed3eb03867230ceef215a..23588e440f92764d8642ebeef1d55f31092c0606 100755
--- a/apps/routerconsole/java/bundle-messages-countries.sh
+++ b/apps/routerconsole/java/bundle-messages-countries.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 #
 # generate strings/Countries.java from ../../../installer/resources/countries.txt
@@ -43,7 +43,7 @@ then
 	mkdir -p build
         echo '// Automatically generated pseudo-java for xgettext - do not edit' > $JFILE
 	echo '// Translators may wish to translate a few of these, do not bother to translate all of them!!' >> $JFILE
-	sed -e '/^#/d' -e 's/..,\(..*\)/_("\1");/' $CFILE >> $JFILE
+	sed -e '/^#/d' -e 's/..,\(..*\)/_t("\1");/' $CFILE >> $JFILE
 fi
 
 # add ../java/ so the refs will work in the po file
@@ -76,16 +76,16 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# intl.title("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -L java --from-code=UTF-8 --no-location\
-	                 --keyword=_ \
+	                 --keyword=_t \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/routerconsole/java/bundle-messages-news.sh b/apps/routerconsole/java/bundle-messages-news.sh
index 01bf734025daca2af0c23016a00fe31fdb37b313..759a3137b5319781bd94998ed7aa0d3ef435e3da 100755
--- a/apps/routerconsole/java/bundle-messages-news.sh
+++ b/apps/routerconsole/java/bundle-messages-news.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="../java/build/News.java"
@@ -62,16 +62,16 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# intl.title("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -L java --from-code=UTF-8 --no-location\
-	                 --keyword=_ \
+	                 --keyword=_t \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/routerconsole/java/bundle-messages.sh b/apps/routerconsole/java/bundle-messages.sh
index d6e44060d115fdd5f2dbe7b2f527c002abcc3015..dd100561ba7e2f499e7ac3006cefb28a9941560a 100755
--- a/apps/routerconsole/java/bundle-messages.sh
+++ b/apps/routerconsole/java/bundle-messages.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 
 # list specific files in core/ and router/ here, so we don't scan the whole tree
@@ -84,19 +84,19 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# intl.title("foo")
-		# handler._("foo")
-		# formhandler._("foo")
+		# handler._t("foo")
+		# formhandler._t("foo")
 		# net.i2p.router.web.Messages.getString("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
+	                 --keyword=_t --keyword=_x --keyword=intl._ --keyword=intl.title \
 	                 --keyword=handler._ --keyword=formhandler._ \
 	                 --keyword=net.i2p.router.web.Messages.getString \
 		         -o ${i}t
diff --git a/apps/routerconsole/java/src/net/i2p/router/news/NewsManager.java b/apps/routerconsole/java/src/net/i2p/router/news/NewsManager.java
new file mode 100644
index 0000000000000000000000000000000000000000..d85baadf5837be58154778a2d5c4e64bb94e11c6
--- /dev/null
+++ b/apps/routerconsole/java/src/net/i2p/router/news/NewsManager.java
@@ -0,0 +1,290 @@
+package net.i2p.router.news;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.Reader;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import net.i2p.I2PAppContext;
+import net.i2p.app.ClientAppManager;
+import net.i2p.app.ClientAppState;
+import static net.i2p.app.ClientAppState.*;
+import net.i2p.router.app.RouterApp;
+import net.i2p.util.FileUtil;
+import net.i2p.util.Log;
+import net.i2p.util.TranslateReader;
+
+import org.cybergarage.xml.Node;
+
+/**
+ *  Manage current news.
+ *  Keeps current entries in memory, and provide methods to
+ *  add new entries and store them to disk.
+ *
+ *  @since 0.9.23
+ */
+public class NewsManager implements RouterApp {
+
+    private final I2PAppContext _context;
+    private final Log _log;
+    private final ClientAppManager _cmgr;
+    private volatile ClientAppState _state = UNINITIALIZED;
+    private List<NewsEntry> _currentNews;
+    // TODO
+    // Metadata is persisted in the old news.xml format by
+    // NewsFetcher.outputOldNewsXML() and read in at startup by
+    // ConsoleUpdateManager.startup() and NewsFetcher.checkForUpdates().
+    // While running, the UpdateManager keeps the metadata.
+    // NewsHelper looks at the news.xml timestamp.
+    //private NewsMetadata _currentMetadata;
+
+    public static final String APP_NAME = "news";
+    private static final String BUNDLE_NAME = "net.i2p.router.news.messages";
+
+    /**
+     *  @param args ignored
+     */
+    public NewsManager(I2PAppContext ctx, ClientAppManager listener, String[] args) {
+        _context = ctx;
+        _cmgr = listener;
+        _log = ctx.logManager().getLog(NewsManager.class);
+        _state = INITIALIZED;
+    }
+
+    /**
+     *
+     *  @return non-null, sorted by updated date, newest first
+     */
+    public synchronized List<NewsEntry> getEntries() {
+        if (!_currentNews.isEmpty())
+            return new ArrayList<NewsEntry>(_currentNews);
+        // load old news.xml
+        if (_log.shouldWarn())
+            _log.warn("no real XML, falling back to news.xml");
+        List<NewsEntry> rv = parseOldNews();
+        if (!rv.isEmpty()) {
+            _currentNews = rv;
+            // don't save to disk as we don't have the UUIDs so they will be dups ??
+            return rv;
+        }
+        // load and translate initialnews
+        // We don't save it to _currentNews, as the language may change
+        if (_log.shouldWarn())
+            _log.warn("no news.xml, falling back to initialNews");
+        return parseInitialNews();
+    }
+
+    /**
+     *  Store each entry.
+     *  Old entries are always overwritten, as they may change even without the updated date changing.
+     *  Does NOT update the NewsEntry list.
+     *
+     *  @param entries each one should be "entry" at the root
+     *  @return success
+     */
+    public synchronized boolean storeEntries(List<Node> entries) {
+        return PersistNews.store(_context, entries);
+    }
+
+    /**
+     *  Add or replace each entry in the list.
+     *  Does NOT store them to disk.
+     */
+    public synchronized void addEntries(List<NewsEntry> entries) {
+        for (NewsEntry e : entries) {
+            String id = e.id;
+            if (id == null)
+                continue;
+            String title = e.title;
+            boolean found = false;
+            for (int i = 0; i < _currentNews.size(); i++) {
+                NewsEntry old = _currentNews.get(i);
+                // try to prevent dups with those created from old news.xml,
+                // where the UUID is the title
+                if (id.equals(old.id) || (title != null && title.equals(old.id))) {
+                    _currentNews.set(i, e);
+                    found = true;
+                    break;
+                }
+            }
+            if (!found)
+                _currentNews.add(e);
+        }
+        Collections.sort(_currentNews);
+    }
+
+    /////// ClientApp methods
+
+    /**
+     *  ClientApp interface
+     */
+    public synchronized void startup() {
+        changeState(STARTING);
+        _currentNews = PersistNews.load(_context);
+        if (_log.shouldWarn())
+            _log.warn("Initialized with " + _currentNews.size() + " entries");
+        changeState(RUNNING);
+        if (_cmgr != null)
+            _cmgr.register(this);
+    }
+
+    /**
+     *  ClientApp interface
+     *  @param args ignored
+     */
+    public synchronized void shutdown(String[] args) {
+        changeState(STOPPED);
+    }
+
+    public ClientAppState getState() {
+        return _state;
+    }
+
+    public String getName() {
+        return APP_NAME;
+    }
+
+    public String getDisplayName() {
+        return "News Manager";
+    }
+
+    /////// end ClientApp methods
+
+    private synchronized void changeState(ClientAppState state) {
+        _state = state;
+        if (_cmgr != null)
+            _cmgr.notify(this, state, null, null);
+    }
+
+    private List<NewsEntry> parseOldNews() {
+        File file = new File(_context.getConfigDir(), "docs/news.xml");
+        String newsContent = FileUtil.readTextFile(file.toString(), -1, true);
+        if (newsContent == null || newsContent.equals(""))
+            return Collections.emptyList();
+        return parseNews(newsContent, false);
+    }
+
+    private List<NewsEntry> parseInitialNews() {
+        NewsEntry entry = new NewsEntry();
+        File file = new File(_context.getBaseDir(), "docs/initialNews/initialNews.xml");
+        Reader reader = null;
+        try {
+            char[] buf = new char[512];
+            StringBuilder out = new StringBuilder(2048);
+            reader = new TranslateReader(_context, BUNDLE_NAME, new FileInputStream(file));
+            int len;
+            while((len = reader.read(buf)) > 0) {
+                out.append(buf, 0, len);
+            }
+            List<NewsEntry> rv = parseNews(out.toString(), true);
+            if (!rv.isEmpty()) {
+                rv.get(0).updated = RFC3339Date.parse3339Date("2015-01-01");
+            } else {
+                if (_log.shouldWarn())
+                    _log.warn("failed to load " + file);
+            }
+            return rv;
+        } catch (IOException ioe) {
+            if (_log.shouldWarn())
+                _log.warn("failed to load " + file, ioe);
+            return Collections.emptyList();
+        } finally {
+            try {
+                if (reader != null)
+                    reader.close();
+            } catch (IOException foo) {}
+        }
+    }
+
+    /**
+     *  Used for initialNews.xml and news.xml
+     *
+     *  @param addMissingDiv true for initialNews, false for news.xml
+     */
+    private List<NewsEntry> parseNews(String newsContent, boolean addMissingDiv) {
+        List<NewsEntry> rv = new ArrayList<NewsEntry>();
+        // Parse news content for headings.
+        boolean foundEntry = false;
+        int start = newsContent.indexOf("<h3>");
+        while (start >= 0) {
+            NewsEntry entry = new NewsEntry();
+            // Add offset to start:
+            // 4 - gets rid of <h3>
+            // 16 - gets rid of the date as well (assuming form "<h3>yyyy-mm-dd: Foobarbaz...")
+            // Don't truncate the "congratulations" in initial news
+            if (newsContent.length() > start + 16 &&
+                newsContent.substring(start + 4, start + 6).equals("20") &&
+                newsContent.substring(start + 14, start + 16).equals(": ")) {
+                // initialNews.xml, or old news.xml from server
+                entry.updated = RFC3339Date.parse3339Date(newsContent.substring(start + 4, start + 14));
+                newsContent = newsContent.substring(start+16);
+            } else {
+                newsContent = newsContent.substring(start+4);
+                int colon = newsContent.indexOf(": ");
+                if (colon > 0 && colon <= 10) {
+                    //  Parse the format we wrote it out in, in NewsFetcher.outputOldNewsXML()
+                    //  Doesn't work if the date has a : in it, but SHORT hopefully does not
+                    DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT);
+                    // the router sets the JVM time zone to UTC but saves the original here so we can get it
+                    String systemTimeZone = _context.getProperty("i2p.systemTimeZone");
+                    if (systemTimeZone != null)
+                        fmt.setTimeZone(TimeZone.getTimeZone(systemTimeZone));
+                    try {
+                        Date date = fmt.parse(newsContent.substring(0, colon));
+                        entry.updated = date.getTime();
+                        newsContent = newsContent.substring(colon + 2);
+                    } catch (ParseException pe) {
+                        // can't find date, will be zero
+                    }
+                }
+            }
+            int end = newsContent.indexOf("</h3>");
+            if (end >= 0) {
+                String heading = newsContent.substring(0, end);
+                entry.title = heading;
+                // use title as UUID
+                entry.id = heading;
+                newsContent = newsContent.substring(end + 5);
+                end = newsContent.indexOf("<h3>");
+                if (end > 0)
+                    entry.content = newsContent.substring(0, end);
+                else
+                    entry.content = newsContent;
+                // initialNews.xml has the <div> before the <h3>, not after, so we lose it...
+                // add it back.
+                if (addMissingDiv)
+                    entry.content = "<div>\n" + entry.content;
+                rv.add(entry);
+                start = end;
+            }
+        }
+        Collections.sort(rv);
+        return rv;
+    }
+
+/****
+    public static void main(String[] args) {
+        if (args.length != 0) {
+            System.err.println("Usage: NewsManager");
+            System.exit(1);
+        }
+        I2PAppContext ctx = new I2PAppContext();
+        NewsManager mgr = new NewsManager(ctx, null, null);
+        mgr.startup();
+        List<NewsEntry> entries = mgr.getEntries();
+        System.out.println("Loaded " + entries.size() + " news entries");
+        for (int i = 0; i < entries.size(); i++) {
+            NewsEntry e = entries.get(i);
+            System.out.println("\n****** News #" + (i+1) + ": " + e.title + ' ' + new Date(e.updated) +
+                               "\nLink: " + e.link + '\n' + e.content);
+        }
+    }
+****/
+}
diff --git a/apps/routerconsole/java/src/net/i2p/router/news/NewsMetadata.java b/apps/routerconsole/java/src/net/i2p/router/news/NewsMetadata.java
index 15adf5955f6ac0d5cf8f047fd4068eeb57009b71..9abf512ef7ade09c84619593484adaa59af7e66b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/news/NewsMetadata.java
+++ b/apps/routerconsole/java/src/net/i2p/router/news/NewsMetadata.java
@@ -1,6 +1,8 @@
 package net.i2p.router.news;
 
 import java.util.List;
+
+import net.i2p.data.DataHelper;
 import net.i2p.util.VersionComparator;
 
 /**
@@ -16,7 +18,7 @@ public class NewsMetadata {
     public String feedID;
     public long feedUpdated;
 
-    // I2P metadata
+    /** I2P metadata */
     public List<Release> releases;
 
     public static class Release implements Comparable<Release> {
@@ -31,6 +33,31 @@ public class NewsMetadata {
             // Sort latest version first.
             return VersionComparator.comp(other.i2pVersion, i2pVersion);
         }
+    
+        /**
+         *  For findbugs.
+         *  Warning, not a complete comparison.
+         *  Must be enhanced before using in a Map or Set.
+         *  @since 0.9.21
+         */
+        @Override
+        public boolean equals(Object o) {
+            if (o == null)
+                return false;
+            if (!(o instanceof Release))
+                return false;
+            Release r = (Release) o;
+            return DataHelper.eq(i2pVersion, r.i2pVersion);
+        }
+        
+        /**
+         *  For findbugs.
+         *  @since 0.9.21
+         */
+        @Override
+        public int hashCode() {
+            return DataHelper.hashCode(i2pVersion);
+        }
     }
 
     public static class Update implements Comparable<Update> {
@@ -44,6 +71,7 @@ public class NewsMetadata {
             return getTypeOrder() - other.getTypeOrder();
         }
 
+        /** lower is preferred */
         protected int getTypeOrder() {
             if ("su3".equalsIgnoreCase(type))
                 return 1;
@@ -52,5 +80,30 @@ public class NewsMetadata {
             else
                 return 3;
         }
+    
+        /**
+         *  For findbugs.
+         *  Warning, not a complete comparison.
+         *  Must be enhanced before using in a Map or Set.
+         *  @since 0.9.21
+         */
+        @Override
+        public boolean equals(Object o) {
+            if (o == null)
+                return false;
+            if (!(o instanceof Update))
+                return false;
+            Update u = (Update) o;
+            return getTypeOrder() == u.getTypeOrder();
+        }
+        
+        /**
+         *  For findbugs.
+         *  @since 0.9.21
+         */
+        @Override
+        public int hashCode() {
+            return getTypeOrder();
+        }
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/news/NewsXMLParser.java b/apps/routerconsole/java/src/net/i2p/router/news/NewsXMLParser.java
index 841dba9b495ec5aa2734178f5493b54e8643c736..5f35fa8c6dd62719376a17c0334bc62e4d92f528 100644
--- a/apps/routerconsole/java/src/net/i2p/router/news/NewsXMLParser.java
+++ b/apps/routerconsole/java/src/net/i2p/router/news/NewsXMLParser.java
@@ -97,10 +97,11 @@ public class NewsXMLParser {
      *
      *  @param file XML content only. Any su3 or gunzip handling must have
      *              already happened.
+     *  @return the root node
      *  @throws IOException on any parse error
      */
-    public void parse(File file) throws IOException {
-        parse(new BufferedInputStream(new FileInputStream(file)));
+    public Node parse(File file) throws IOException {
+        return parse(new BufferedInputStream(new FileInputStream(file)));
     }
 
     /**
@@ -108,15 +109,17 @@ public class NewsXMLParser {
      *
      *  @param in XML content only. Any su3 or gunzip handling must have
      *            already happened.
+     *  @return the root node
      *  @throws IOException on any parse error
      */
-    public void parse(InputStream in) throws IOException {
+    public Node parse(InputStream in) throws IOException {
         _entries = null;
         _metadata = null;
         XMLParser parser = new XMLParser(_context);
         try {
             Node root = parser.parse(in);
             extract(root);
+            return root;
         } catch (ParserException pe) {
             throw new I2PParserException(pe);
         }
@@ -247,6 +250,10 @@ public class NewsXMLParser {
         return rv;
     }
 
+    /**
+     *  This does not check for any missing values.
+     *  Any fields in any NewsEntry may be null.
+     */
     private List<NewsEntry> extractNewsEntries(Node feed) throws I2PParserException {
         List<NewsEntry> rv = new ArrayList<NewsEntry>();
         List<Node> entries = getNodes(feed, "entry");
@@ -260,9 +267,9 @@ public class NewsXMLParser {
             }
             n = entry.getNode("link");
             if (n != null) {
-                e.link = n.getValue();
-                if (e.link != null)
-                    e.link = e.link.trim();
+                String a = n.getAttributeValue("href");
+                if (a.length() > 0)
+                    e.link = a.trim();
             }
             n = entry.getNode("id");
             if (n != null) {
@@ -345,8 +352,10 @@ public class NewsXMLParser {
 
     /**
      *  Helper to get all Nodes matching the name
+     *
+     *  @return non-null
      */
-    private static List<Node> getNodes(Node node, String name) {
+    public static List<Node> getNodes(Node node, String name) {
         List<Node> rv = new ArrayList<Node>();
         int count = node.getNNodes();
         for (int i = 0; i < count; i++) {
@@ -432,6 +441,10 @@ public class NewsXMLParser {
     }
 
     public static void main(String[] args) {
+        if (args.length <= 0 || args.length > 2) {
+            System.err.println("Usage: NewsXMLParser file.xml [parserMode]");
+            System.exit(1);
+        }
         try {
             I2PAppContext ctx = new I2PAppContext();
             Debug.initialize(ctx);
@@ -450,9 +463,22 @@ public class NewsXMLParser {
             System.out.println("Release timestamp: " + latestRelease.date);
             System.out.println("Feed timestamp: " + ud.feedUpdated);
             System.out.println("Found " + entries.size() + " news entries");
+            Set<String> uuids = new HashSet<String>(entries.size());
             for (int i = 0; i < entries.size(); i++) {
                 NewsEntry e = entries.get(i);
-                System.out.println("News #" + (i+1) + ": " + e.title + '\n' + e.content);
+                System.out.println("\n****** News #" + (i+1) + ": " + e.title + '\n' + e.content);
+                if (e.id == null)
+                    throw new IOException("missing ID");
+                if (e.title == null)
+                    throw new IOException("missing title");
+                if (e.content == null)
+                    throw new IOException("missing content");
+                if (e.authorName == null)
+                    throw new IOException("missing author");
+                if (e.updated == 0)
+                    throw new IOException("missing updated");
+                if (!uuids.add(e.id))
+                    throw new IOException("duplicate ID");
             }
         } catch (IOException ioe) {
             ioe.printStackTrace();
diff --git a/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java b/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java
new file mode 100644
index 0000000000000000000000000000000000000000..164b04422cf87d95c7a10b4fd89aa106e4eb6193
--- /dev/null
+++ b/apps/routerconsole/java/src/net/i2p/router/news/PersistNews.java
@@ -0,0 +1,267 @@
+package net.i2p.router.news;
+
+import java.io.BufferedInputStream;
+import java.util.Collections;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.zip.GZIPInputStream;
+import java.util.zip.GZIPOutputStream;
+
+import net.i2p.I2PAppContext;
+import net.i2p.data.Base64;
+import net.i2p.data.DataHelper;
+import net.i2p.data.Hash;
+import net.i2p.util.Log;
+import net.i2p.util.SecureDirectory;
+import net.i2p.util.SecureFileOutputStream;
+
+import org.cybergarage.util.Debug;
+import org.cybergarage.xml.Node;
+import org.cybergarage.xml.ParserException;
+
+/**
+ *  Store and retrieve news entries from disk.
+ *  Each entry is stored in a separate file, with the name
+ *  derived from the UUID.
+ *
+ *  @since 0.9.23
+ */
+class PersistNews {
+
+    private static final String DIR = "docs/feed/news";
+    private static final String PFX = "news-";
+    private static final String SFX = ".xml.gz";
+    private static final String XML_START = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
+
+    /**
+     *  Store each entry.
+     *  Old entries are always overwritten, as they may change even without the updated date changing.
+     *
+     *  @param entries each one should be "entry" at the root
+     *  @return success
+     */
+    public static boolean store(I2PAppContext ctx, List<Node> entries) {
+        Log log = ctx.logManager().getLog(PersistNews.class);
+        File dir = new SecureDirectory(ctx.getConfigDir(), DIR);
+        if (!dir.exists())
+            dir.mkdirs();
+        StringBuilder buf = new StringBuilder();
+        boolean rv = true;
+        for (Node entry : entries) {
+            Node nid = entry.getNode("id");
+            if (nid == null) {
+                if (log.shouldWarn())
+                    log.warn("entry without UUID");
+                continue;
+            }
+            String id = nid.getValue();
+            if (id == null) {
+                if (log.shouldWarn())
+                    log.warn("entry without UUID");
+                continue;
+            }
+            String name = idToName(ctx, id);
+            File file = new File(dir, name);
+            Writer out = null;
+            try {
+                out = new OutputStreamWriter(new GZIPOutputStream(new SecureFileOutputStream(file)));
+                out.write(XML_START);
+                XMLParser.toString(buf, entry);
+                out.write(buf.toString());
+                buf.setLength(0);
+            } catch (IOException ioe) {
+                if (log.shouldWarn())
+                    log.warn("failed store to " + file, ioe);
+                rv = false;
+            } finally {
+                if (out != null) try { out.close(); } catch (IOException ioe) {}
+            }
+        }
+        return rv;
+    }
+
+    /**
+     *  This does not check for any missing values.
+     *  Any fields in any NewsEntry may be null.
+     *  Content is not sanitized by NewsXMLParser here, do that before storing.
+     *
+     *  @return non-null, sorted by updated date, newest first
+     */
+    public static List<NewsEntry> load(I2PAppContext ctx) {
+        Log log = ctx.logManager().getLog(PersistNews.class);
+        File dir = new File(ctx.getConfigDir(), DIR);
+        List<NewsEntry> rv = new ArrayList<NewsEntry>();
+        File[] files = dir.listFiles();
+        if (files == null)
+            return rv;
+        for (File file : files) {
+            String name = file.getName();
+            if (!name.startsWith(PFX) || !name.endsWith(SFX))
+                continue;
+            XMLParser parser = new XMLParser(ctx);
+            InputStream in = null;
+            Node node;
+            boolean error = false;
+            try {
+                in = new GZIPInputStream(new FileInputStream(file));
+                node = parser.parse(in);
+                NewsEntry entry = extract(node);
+                if (entry != null) {
+                    rv.add(entry);
+                } else {
+                    if (log.shouldWarn())
+                        log.warn("load error from " + file);
+                    error = true;
+                }
+            } catch (ParserException pe) {
+                if (log.shouldWarn())
+                    log.warn("load error from " + file, pe);
+                error = true;
+            } catch (IOException ioe) {
+                if (log.shouldWarn())
+                    log.warn("load error from " + file, ioe);
+                error = true;
+            } finally {
+                if (in != null) try { in.close(); } catch (IOException ioe) {}
+            }
+            if (error)
+                file.delete();
+        }
+        Collections.sort(rv);
+        return rv;
+    }
+
+    /**
+     *  This does not check for any missing values.
+     *  Any fields in any NewsEntry may be null.
+     *  Content is not sanitized by NewsXMLParser here, do that before storing.
+     *
+     *  @return non-null, throws on errors
+     */
+    private static NewsEntry extract(Node entry) {
+        NewsEntry e = new NewsEntry();
+        Node n = entry.getNode("title");
+        if (n != null) {
+            e.title = n.getValue();
+            if (e.title != null)
+                e.title = e.title.trim();
+        }
+        n = entry.getNode("link");
+        if (n != null) {
+            String a = n.getAttributeValue("href");
+            if (a.length() > 0)
+                e.link = a.trim();
+        }
+        n = entry.getNode("id");
+        if (n != null) {
+            e.id = n.getValue();
+            if (e.id != null)
+                e.id = e.id.trim();
+        }
+        n = entry.getNode("updated");
+        if (n != null) {
+            String v = n.getValue();
+            if (v != null) {
+                long time = RFC3339Date.parse3339Date(v.trim());
+                if (time > 0)
+                    e.updated = time;
+            }
+        }
+        n = entry.getNode("summary");
+        if (n != null) {
+            e.summary = n.getValue();
+            if (e.summary != null)
+                e.summary = e.summary.trim();
+        }
+        n = entry.getNode("author");
+        if (n != null) {
+            n = n.getNode("name");
+            if (n != null) {
+                e.authorName = n.getValue();
+                if (e.authorName != null)
+                    e.authorName = e.authorName.trim();
+            }
+        }
+        n = entry.getNode("content");
+        if (n != null) {
+            String a = n.getAttributeValue("type");
+            if (a.length() > 0)
+                e.contentType = a;
+            // now recursively sanitize
+            // and convert everything in the content to string
+            StringBuilder buf = new StringBuilder(256);
+            for (int i = 0; i < n.getNNodes(); i++) {
+                Node sn = n.getNode(i);
+                XMLParser.toString(buf, sn);
+            }
+            e.content = buf.toString();
+        }
+        return e;
+    }
+
+    /**
+     *  Unused for now, as we don't have any way to remember it's deleted.
+     *
+     *  @return success
+     */
+    public static boolean delete(I2PAppContext ctx, NewsEntry entry) {
+        String id = entry.id;
+        if (id == null)
+            return false;
+        String name = idToName(ctx, id);
+        File dir = new File(ctx.getConfigDir(), DIR);
+        File file = new File(dir, name);
+        return file.delete();
+    }
+
+    /**
+     *  @param id non-null
+     */
+    private static String idToName(I2PAppContext ctx, String id) {
+        byte[] bid = DataHelper.getUTF8(id);
+        byte[] hash = new byte[Hash.HASH_LENGTH];
+        ctx.sha().calculateHash(bid, 0, bid.length, hash, 0);
+        return PFX + Base64.encode(hash) + SFX;
+    }
+
+/****
+    public static void main(String[] args) {
+        if (args.length != 1) {
+            System.err.println("Usage: PersistNews file.xml");
+            System.exit(1);
+        }
+        I2PAppContext ctx = new I2PAppContext();
+        Debug.initialize(ctx);
+        XMLParser parser = new XMLParser(ctx);
+        InputStream in = null;
+        try {
+            in = new FileInputStream(args[0]);
+            Node root = parser.parse(in);
+            List<Node> entries = NewsXMLParser.getNodes(root, "entry");
+            store(ctx, entries);
+            System.out.println("Stored " + entries.size() + " entries");
+        } catch (ParserException pe) {
+            System.out.println("load error from " + args[0]);
+            pe.printStackTrace();
+        } catch (IOException ioe) {
+            System.out.println("load error from " + args[0]);
+            ioe.printStackTrace();
+        } finally {
+            if (in != null) try { in.close(); } catch (IOException ioe) {}
+        }
+        List<NewsEntry> entries = load(ctx);
+        System.out.println("Loaded " + entries.size() + " news entries");
+        for (int i = 0; i < entries.size(); i++) {
+            NewsEntry e = entries.get(i);
+            System.out.println("\n****** News #" + (i+1) + ": " + e.title + '\n' + e.content);
+        }
+    }
+****/
+}
diff --git a/apps/routerconsole/java/src/net/i2p/router/news/RFC3339Date.java b/apps/routerconsole/java/src/net/i2p/router/news/RFC3339Date.java
index cc676be24bfbc055cdc971fda3b80643f9541dde..6dac0b89fd920ec925e9d33cbdbc9939839af7cd 100644
--- a/apps/routerconsole/java/src/net/i2p/router/news/RFC3339Date.java
+++ b/apps/routerconsole/java/src/net/i2p/router/news/RFC3339Date.java
@@ -29,7 +29,8 @@ public abstract class RFC3339Date {
 
     private static final String TZF1, TZF2;
     static {
-        if (SystemVersion.isJava7()) {
+        // Android's SimpleDateFormat doesn't support XXX at any API
+        if (SystemVersion.isJava7() && !SystemVersion.isAndroid()) {
             // ISO 8601
             // These handle timezones like +1000, +10, and +10:00
             TZF1 = "yyyy-MM-dd'T'HH:mm:ssXXX";
@@ -81,7 +82,7 @@ public abstract class RFC3339Date {
         // strip the ':' out of the time zone, if present,
         // for Java 6 where we don't have the 'X' format
         int len = s.length();
-        if (!SystemVersion.isJava7() &&
+        if ((!SystemVersion.isJava7() || SystemVersion.isAndroid()) &&
             s.charAt(len - 1) != 'Z' &&
             s.charAt(len - 3) == ':' &&
             (s.charAt(len - 6) == '+' || s.charAt(len - 6) == '-')) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
index ea153725cbf5b3643ac423e5a80a5a18e35157df..d34492294b0a5e448dbf8d1ddeb7efb784f9d71c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
@@ -39,6 +39,7 @@ import net.i2p.util.ConcurrentHashSet;
 import net.i2p.util.FileUtil;
 import net.i2p.util.Log;
 import net.i2p.util.SimpleTimer;
+import net.i2p.util.SystemVersion;
 import net.i2p.util.VersionComparator;
 
 /**
@@ -184,7 +185,11 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
         if (newVersion != null) {
             List<URI> updateSources = uuh.getUpdateSources();
             if (updateSources != null) {
-                VersionAvailable newVA = new VersionAvailable(newVersion, "", HTTP, updateSources);
+                VersionAvailable newVA;
+                if (SystemVersion.isJava7())
+                    newVA = new VersionAvailable(newVersion, "", HTTP, updateSources);
+                else
+                    newVA = new VersionAvailable(newVersion, "Requires Java 7");
                 _available.put(new UpdateItem(ROUTER_UNSIGNED, ""), newVA);
             }
         }
@@ -197,7 +202,11 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             if (VersionComparator.comp(newVersion, RouterVersion.FULL_VERSION) > 0) {
                 List<URI> updateSources = dsuh.getUpdateSources();
                 if (updateSources != null) {
-                    VersionAvailable newVA = new VersionAvailable(newVersion, "", HTTP, updateSources);
+                    VersionAvailable newVA;
+                    if (SystemVersion.isJava7())
+                        newVA = new VersionAvailable(newVersion, "", HTTP, updateSources);
+                    else
+                        newVA = new VersionAvailable(newVersion, "Requires Java 7");
                     _available.put(new UpdateItem(ROUTER_DEV_SU3, ""), newVA);
                 }
             } else {
@@ -275,7 +284,27 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
     public String getStatus() {
         return _status;
     }
-    
+
+    /**
+     *  Is an update available?
+     *  Blocking.
+     *  An available update may still have a constraint or lack sources.
+     *  @param type the UpdateType of this request
+     *  @return new version or null if nothing newer is available
+     *  @since 0.9.21
+     */
+    public String checkAvailable(UpdateType type) {
+        return checkAvailable(type, "", DEFAULT_CHECK_TIME);
+    }
+
+    /**
+     *  Is an update available?
+     *  Blocking.
+     *  An available update may still have a constraint or lack sources.
+     *  @param type the UpdateType of this request
+     *  @param maxWait max time to block
+     *  @return new version or null if nothing newer is available
+     */
     public String checkAvailable(UpdateType type, long maxWait) {
         return checkAvailable(type, "", maxWait);
     }
@@ -284,6 +313,8 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
      *  Is an update available?
      *  Blocking.
      *  An available update may still have a constraint or lack sources.
+     *  @param type the UpdateType of this request
+     *  @param id id of this request
      *  @param maxWait max time to block
      *  @return new version or null if nothing newer is available
      */
@@ -301,7 +332,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
                     t = r.checker.check(type, r.method, id, current, maxWait);
                     if (t != null) {
                          if (_log.shouldLog(Log.INFO))
-                             _log.info("Starting " + r);
+                             _log.info("Starting " + r, new Exception());
                         _activeCheckers.add(t);
                         t.start();
                     }
@@ -344,7 +375,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
                     UpdateTask t = r.checker.check(type, r.method, id, current, DEFAULT_CHECK_TIME);
                     if (t != null) {
                          if (_log.shouldLog(Log.INFO))
-                             _log.info("Starting " + r);
+                             _log.info("Starting " + r, new Exception());
                         _activeCheckers.add(t);
                         t.start();
                         break;
@@ -648,7 +679,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
                         // race window here
                         //  store the remaining ones for retrying
                         if (_log.shouldLog(Log.INFO))
-                            _log.info("Starting " + r);
+                            _log.info("Starting " + r, new Exception());
                         _downloaders.put(t, toTry);
                         t.start();
                         return t;
@@ -824,6 +855,14 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             _available.put(ui, newVA);
             shouldUpdate = true;
         }
+
+        // save across restarts
+        if (type == ROUTER_UNSIGNED) {
+            _context.router().saveConfig(PROP_UNSIGNED_AVAILABLE, newVersion);
+        } else if (type == ROUTER_DEV_SU3) {
+            _context.router().saveConfig(PROP_DEV_SU3_AVAILABLE, newVersion);
+        }
+
         if (!shouldUpdate)
             return false;
 
@@ -835,12 +874,6 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
 
             case ROUTER_UNSIGNED:
             case ROUTER_DEV_SU3:
-                // save across restarts
-                String prop = type == ROUTER_UNSIGNED ? PROP_UNSIGNED_AVAILABLE
-                                                      : PROP_DEV_SU3_AVAILABLE;
-                _context.router().saveConfig(prop, newVersion);
-                // fall through
-
             case ROUTER_SIGNED:
             case ROUTER_SIGNED_SU3:
                 if (shouldInstall() &&
@@ -859,7 +892,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
                 break;
 
             case PLUGIN:
-                msg = "<b>" + _("New plugin version {0} is available", newVersion) + "</b>";
+                msg = "<b>" + _t("New plugin version {0} is available", newVersion) + "</b>";
                 break;
 
             default:
@@ -939,11 +972,11 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
 
             case PLUGIN:
                 if (!success) {
-                    msg = _("Update check failed for plugin {0}", task.getID());
+                    msg = _t("Update check failed for plugin {0}", task.getID());
                     _log.logAlways(Log.WARN, msg);
                     msg = "<b>" + msg + "</b>";
                 } else if (!newer) {
-                    msg = "<b>" + _("No new version is available for plugin {0}", task.getID()) + "</b>";
+                    msg = "<b>" + _t("No new version is available for plugin {0}", task.getID()) + "</b>";
                 }
                 /// else success.... message for that?
 
@@ -967,7 +1000,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             buf.append(_pct.format(pct));
         }
         buf.append("<br>\n");
-        buf.append(_("{0}B transferred", DataHelper.formatSize2(downloaded)));
+        buf.append(_t("{0}B transferred", DataHelper.formatSize2(downloaded)));
         updateStatus(buf.toString());
     }
 
@@ -1026,9 +1059,9 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             String uri = task.getURI().toString();
             if (uri.startsWith("file:") || task.getMethod() == FILE) {
                 uri = DataHelper.stripHTML(task.getURI().getPath());
-                buf.append(_("Install failed from {0}", uri));
+                buf.append(_t("Install failed from {0}", uri));
             } else {
-                buf.append(_("Transfer failed from {0}"));
+                buf.append(_t("Transfer failed from {0}", uri));
             }
             if (reason != null && reason.length() > 0) {
                 buf.append("<br>");
@@ -1303,7 +1336,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
      */
     private boolean handleRouterFile(URI uri, String actualVersion, File f, boolean isSU3) {
         String url = uri.toString();
-        updateStatus("<b>" + _("Update downloaded") + "</b>");
+        updateStatus("<b>" + _t("Update downloaded") + "</b>");
         File to = new File(_context.getRouterDir(), Router.UPDATE_FILE);
         String err;
         // Process the file
@@ -1347,7 +1380,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
 
             if ("install".equals(policy)) {
                 _log.log(Log.CRIT, "Update was downloaded and verified, restarting to install it");
-                updateStatus("<b>" + _("Update verified") + "</b><br>" + _("Restarting"));
+                updateStatus("<b>" + _t("Update verified") + "</b><br>" + _t("Restarting"));
                 restart();
             } else {
                 _log.logAlways(Log.WARN, "Update was downloaded and verified, will be installed at next restart");
@@ -1356,7 +1389,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             }
         } else {
             _log.log(Log.CRIT, err + " from " + url);
-            updateStatus("<b>" + err + ' ' + _("from {0}", linkify(url)) + " </b>");
+            updateStatus("<b>" + err + ' ' + _t("from {0}", linkify(url)) + " </b>");
         }
         return err == null;
     }
@@ -1367,11 +1400,11 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
      */
     private boolean handleUnsignedFile(URI uri, String lastmod, File updFile) {
         if (FileUtil.verifyZip(updFile)) {
-            updateStatus("<b>" + _("Update downloaded") + "</b>");
+            updateStatus("<b>" + _t("Update downloaded") + "</b>");
         } else {
             updFile.delete();
             String url = uri.toString();
-            updateStatus("<b>" + _("Unsigned update file from {0} is corrupt", url) + "</b>");
+            updateStatus("<b>" + _t("Unsigned update file from {0} is corrupt", url) + "</b>");
             _log.log(Log.CRIT, "Corrupt zip file from " + url);
             return false;
         }
@@ -1391,7 +1424,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             _context.router().saveConfig(NewsHelper.PROP_LAST_UPDATE_TIME, Long.toString(modtime));
             if ("install".equals(policy)) {
                 _log.log(Log.CRIT, "Update was downloaded, restarting to install it");
-                updateStatus("<b>" + _("Update downloaded") + "</b><br>" + _("Restarting"));
+                updateStatus("<b>" + _t("Update downloaded") + "</b><br>" + _t("Restarting"));
                 restart();
             } else {
                 _log.logAlways(Log.WARN, "Update was downloaded, will be installed at next restart");
@@ -1400,7 +1433,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
             }
         } else {
             _log.log(Log.CRIT, "Failed copy to " + to);
-            updateStatus("<b>" + _("Failed copy to {0}", to.getAbsolutePath()) + "</b>");
+            updateStatus("<b>" + _t("Failed copy to {0}", to.getAbsolutePath()) + "</b>");
         }
         return copied;
     }
@@ -1431,14 +1464,14 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
     }
 
     /** translate a string */
-    public String _(String s) {
+    public String _t(String s) {
         return Messages.getString(s, _context);
     }
 
     /**
      *  translate a string with a parameter
      */
-    public String _(String s, Object o) {
+    public String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 
@@ -1446,7 +1479,7 @@ public class ConsoleUpdateManager implements UpdateManager, RouterApp {
      *  translate a string with parameters
      *  @since 0.9.9
      */
-    public String _(String s, Object o, Object o2) {
+    public String _t(String s, Object o, Object o2) {
         return Messages.getString(s, o, o2, _context);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java
index 1e392053afbb5d8244d13dbb18cd578b8701d295..4c5cd902b13105cac40fe80b3380a6579448e8c9 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java
@@ -10,8 +10,10 @@ import net.i2p.router.RouterContext;
 import net.i2p.router.RouterVersion;
 import net.i2p.router.web.ConfigUpdateHandler;
 import net.i2p.update.*;
+import net.i2p.util.Log;
 import net.i2p.util.PartialEepGet;
 import net.i2p.util.PortMapper;
+import net.i2p.util.SystemVersion;
 import net.i2p.util.VersionComparator;
 
 /**
@@ -44,14 +46,14 @@ class DevSU3UpdateChecker extends UpdateRunner {
         if (proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
             proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
             _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-            String msg = _("HTTP client proxy tunnel must be running");
+            String msg = _t("HTTP client proxy tunnel must be running");
             if (_log.shouldWarn())
                 _log.warn(msg);
             updateStatus("<b>" + msg + "</b>");
             _mgr.notifyCheckComplete(this, false, false);
             return;
         }
-        //updateStatus("<b>" + _("Checking for development build update") + "</b>");
+        //updateStatus("<b>" + _t("Checking for development build update") + "</b>");
         _baos.reset();
         try {
             _get = new PartialEepGet(_context, proxyHost, proxyPort, _baos, _currentURI.toString(), TrustedUpdate.HEADER_BYTES);
@@ -73,10 +75,17 @@ class DevSU3UpdateChecker extends UpdateRunner {
         String newVersion = TrustedUpdate.getVersionString(new ByteArrayInputStream(_baos.toByteArray()));
         boolean newer = VersionComparator.comp(newVersion, RouterVersion.FULL_VERSION) > 0;
         if (newer) {
-            _mgr.notifyVersionAvailable(this, _currentURI, UpdateType.ROUTER_DEV_SU3, "", UpdateMethod.HTTP,
+            if (SystemVersion.isJava7()) {
+                _mgr.notifyVersionAvailable(this, _currentURI, UpdateType.ROUTER_DEV_SU3, "", UpdateMethod.HTTP,
                                         _urls, newVersion, RouterVersion.FULL_VERSION);
+            } else {
+                String ourJava = System.getProperty("java.version");
+                String msg = _mgr._t("Requires Java version {0} but installed Java version is {1}", "1.7", ourJava);
+                _log.logAlways(Log.WARN, "Cannot update to version " + newVersion + ": " + msg);
+                _mgr.notifyVersionConstraint(this, _currentURI, UpdateType.ROUTER_DEV_SU3, "", newVersion, msg);
+            }
         } else {
-            //updateStatus("<b>" + _("No new version found at {0}", linkify(url)) + "</b>");
+            //updateStatus("<b>" + _t("No new version found at {0}", linkify(url)) + "</b>");
             if (_log.shouldWarn())
                 _log.warn("Found old version \"" + newVersion + "\" at " + url);
         }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateHandler.java
index 606c781f596f663d364df9a73fbc113bf94e82cc..025c9c9f75288e3d1d1b33a485f5f8df7fad2646 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateHandler.java
@@ -88,7 +88,7 @@ class DevSU3UpdateHandler implements Checker, Updater {
             return null;
         UpdateRunner update = new DevSU3UpdateRunner(_context, _mgr, updateSources);
         // set status before thread to ensure UI feedback
-        _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>");
+        _mgr.notifyProgress(update, "<b>" + _mgr._t("Updating") + "</b>");
         return update;
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateRunner.java
index 8f9501d4ac55559c03db08cd8b0b47129094dc3e..e16bf9c3cfff70c1d8365a8308b19fc0d25bc11f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateRunner.java
@@ -37,7 +37,7 @@ class DevSU3UpdateRunner extends UpdateRunner {
         if (proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
             proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
             _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-            String msg = _("HTTP client proxy tunnel must be running");
+            String msg = _t("HTTP client proxy tunnel must be running");
             if (_log.shouldWarn())
                 _log.warn(msg);
             updateStatus("<b>" + msg + "</b>");
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java
index 7041c21da8a3ce9399f74dda2d096e0676b88f91..66799737dbf6ea44355f6a0d0fa8978d5a9f7e3f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/NewsFetcher.java
@@ -10,6 +10,7 @@ import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
@@ -18,13 +19,16 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.StringTokenizer;
+import java.util.TimeZone;
 
+import net.i2p.app.ClientAppManager;
 import net.i2p.crypto.SU3File;
 import net.i2p.crypto.TrustedUpdate;
 import net.i2p.data.DataHelper;
 import net.i2p.router.RouterContext;
 import net.i2p.router.RouterVersion;
 import net.i2p.router.news.NewsEntry;
+import net.i2p.router.news.NewsManager;
 import net.i2p.router.news.NewsMetadata;
 import net.i2p.router.news.NewsXMLParser;
 import net.i2p.router.util.RFC822Date;
@@ -40,8 +44,11 @@ import net.i2p.util.PortMapper;
 import net.i2p.util.ReusableGZIPInputStream;
 import net.i2p.util.SecureFileOutputStream;
 import net.i2p.util.SSLEepGet;
+import net.i2p.util.Translate;
 import net.i2p.util.VersionComparator;
 
+import org.cybergarage.xml.Node;
+
 /**
  * Task to fetch updates to the news.xml, and to keep
  * track of whether that has an announcement for a new version.
@@ -92,10 +99,15 @@ class NewsFetcher extends UpdateRunner {
                 _log.warn("Cannot fetch news - HTTP client tunnel not running");
             return;
         }
+        if (shouldProxy && _context.commSystem().isDummy()) {
+            if (_log.shouldWarn())
+                _log.warn("Cannot fetch news - VM Comm system");
+            return;
+        }
 
         for (URI uri : _urls) {
-             _currentURI = uri;
-             String newsURL = uri.toString();
+            _currentURI = addLang(uri);
+            String newsURL = _currentURI.toString();
 
             if (_tempFile.exists())
                 _tempFile.delete();
@@ -129,6 +141,40 @@ class NewsFetcher extends UpdateRunner {
             }
         }
     }
+
+    /**
+     *  Add a query param for the local language to get translated news.
+     *  Unchanged if disabled by property, if language is english,
+     *  or if URI already contains a language parameter
+     *
+     *  @since 0.9.21
+     */
+    private URI addLang(URI uri) {
+        if (!_context.getBooleanPropertyDefaultTrue(NewsHelper.PROP_TRANSLATE))
+            return uri;
+        String lang = Translate.getLanguage(_context);
+        if (lang.equals("en"))
+            return uri;
+        String query = uri.getRawQuery();
+        if (query != null && (query.startsWith("lang=") || query.contains("&lang=")))
+            return uri;
+        String url = uri.toString();
+        StringBuilder buf = new StringBuilder();
+        buf.append(url);
+        if (query != null)
+            buf.append("&lang=");
+        else
+            buf.append("?lang=");
+        buf.append(lang);
+        String co = Translate.getCountry(_context);
+        if (co.length() > 0)
+            buf.append('_').append(co);
+        try {
+            return new URI(buf.toString());
+        } catch (URISyntaxException use) {
+            return uri;
+        }
+    }
     
     // Fake XML parsing
     // Line must contain this, and full entry must be on one line
@@ -169,13 +215,13 @@ class NewsFetcher extends UpdateRunner {
                             _log.debug("Found version: [" + ver + "]");
                         if (TrustedUpdate.needsUpdate(RouterVersion.VERSION, ver)) {
                             if (NewsHelper.isUpdateDisabled(_context)) {
-                                String msg = _mgr._("In-network updates disabled. Check package manager.");
+                                String msg = _mgr._t("In-network updates disabled. Check package manager.");
                                 _log.logAlways(Log.WARN, "Cannot update to version " + ver + ": " + msg);
                                 _mgr.notifyVersionConstraint(this, _currentURI, ROUTER_SIGNED, "", ver, msg);
                                 return;
                             }
                             if (NewsHelper.isBaseReadonly(_context)) {
-                                String msg = _mgr._("No write permission for I2P install directory.");
+                                String msg = _mgr._t("No write permission for I2P install directory.");
                                 _log.logAlways(Log.WARN, "Cannot update to version " + ver + ": " + msg);
                                 _mgr.notifyVersionConstraint(this, _currentURI, ROUTER_SIGNED, "", ver, msg);
                                 return;
@@ -183,7 +229,7 @@ class NewsFetcher extends UpdateRunner {
                             String minRouter = args.get(MIN_VERSION_KEY);
                             if (minRouter != null) {
                                 if (VersionComparator.comp(RouterVersion.VERSION, minRouter) < 0) {
-                                    String msg = _mgr._("You must first update to version {0}", minRouter);
+                                    String msg = _mgr._t("You must first update to version {0}", minRouter);
                                     _log.logAlways(Log.WARN, "Cannot update to version " + ver + ": " + msg);
                                     _mgr.notifyVersionConstraint(this, _currentURI, ROUTER_SIGNED, "", ver, msg);
                                     return;
@@ -193,7 +239,7 @@ class NewsFetcher extends UpdateRunner {
                             if (minJava != null) {
                                 String ourJava = System.getProperty("java.version");
                                 if (VersionComparator.comp(ourJava, minJava) < 0) {
-                                    String msg = _mgr._("Requires Java version {0} but installed Java version is {1}", minJava, ourJava);
+                                    String msg = _mgr._t("Requires Java version {0} but installed Java version is {1}", minJava, ourJava);
                                     _log.logAlways(Log.WARN, "Cannot update to version " + ver + ": " + msg);
                                     _mgr.notifyVersionConstraint(this, _currentURI, ROUTER_SIGNED, "", ver, msg);
                                     return;
@@ -369,7 +415,9 @@ class NewsFetcher extends UpdateRunner {
         
         if (_tempFile.exists() && _tempFile.length() > 0) {
             File from;
-            if (url.endsWith(".su3")) {
+            // TODO check magic number instead?
+            // But then a corrupt file would be displayed as-is...
+            if (url.endsWith(".su3") || url.contains(".su3?")) {
                 try {
                     from = processSU3();
                 } catch (IOException ioe) {
@@ -436,10 +484,21 @@ class NewsFetcher extends UpdateRunner {
                 xml = to1;
             }
             NewsXMLParser parser = new NewsXMLParser(_context);
-            parser.parse(xml);
+            Node root = parser.parse(xml);
             xml.delete();
             NewsMetadata data = parser.getMetadata();
             List<NewsEntry> entries = parser.getEntries();
+            // add entries to the news manager
+            ClientAppManager cmgr = _context.clientAppManager();
+            if (cmgr != null) {
+                NewsManager nmgr = (NewsManager) cmgr.getRegisteredApp(NewsManager.APP_NAME);
+                if (nmgr != null) {
+                    nmgr.addEntries(entries);
+                    List<Node> nodes = NewsXMLParser.getNodes(root, "entry");
+                    nmgr.storeEntries(nodes);
+                }
+            }
+            // store entries and metadata in old news.xml format
             String sudVersion = su3.getVersionString();
             String signingKeyName = su3.getSignerString();
             File to3 = new File(_context.getTempDir(), "tmp3-" + _context.random().nextInt() + ".xml");
@@ -518,11 +577,19 @@ class NewsFetcher extends UpdateRunner {
             out.write("-->\n");
             if (entries == null)
                 return;
+            DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT);
+            // the router sets the JVM time zone to UTC but saves the original here so we can get it
+            String systemTimeZone = _context.getProperty("i2p.systemTimeZone");
+            if (systemTimeZone != null)
+                fmt.setTimeZone(TimeZone.getTimeZone(systemTimeZone));
             for (NewsEntry e : entries) {
                 if (e.title == null || e.content == null)
                     continue;
-                out.write("<!-- Entry Date: " + (new Date(e.updated)) + " -->\n");
+                Date date = new Date(e.updated);
+                out.write("<!-- Entry Date: " + date + " -->\n");
                 out.write("<h3>");
+                out.write(fmt.format(date));
+                out.write(": ");
                 out.write(e.title);
                 out.write("</h3>\n");
                 out.write(e.content);
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
index ca4c4b9946bfc2f9327959c22a04793dffc40e88..05081ee9ed50725d80cb470352fffef4e14337d9 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
@@ -52,14 +52,14 @@ class PluginUpdateChecker extends UpdateRunner {
             if (proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
                 proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
                 _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-                String msg = _("HTTP client proxy tunnel must be running");
+                String msg = _t("HTTP client proxy tunnel must be running");
                 if (_log.shouldWarn())
                     _log.warn(msg);
                 updateStatus("<b>" + msg + "</b>");
                 _mgr.notifyCheckComplete(this, false, false);
                 return;
             }
-            updateStatus("<b>" + _("Checking for update of plugin {0}", _appName) + "</b>");
+            updateStatus("<b>" + _t("Checking for update of plugin {0}", _appName) + "</b>");
             _baos.reset();
             try {
                 _get = new PartialEepGet(_context, proxyHost, proxyPort, _baos, _currentURI.toString(), TrustedUpdate.HEADER_BYTES);
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java
index b360ecb2f6b6cea856ee7815079a85d516e100bc..46df8803915e772faba6ddb059160ab6575f4d86 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java
@@ -54,7 +54,7 @@ class PluginUpdateHandler implements Checker, Updater {
         }
 
         if (oldVersion == null || updateSources == null) {
-            //updateStatus("<b>" + _("Cannot check, plugin {0} is not installed", appName) + "</b>");
+            //updateStatus("<b>" + _t("Cannot check, plugin {0} is not installed", appName) + "</b>");
             return null;
         }
 
@@ -79,7 +79,7 @@ class PluginUpdateHandler implements Checker, Updater {
 
         UpdateRunner update = new PluginUpdateRunner(_context, _mgr, updateSources, appName, oldVersion);
         // set status before thread to ensure UI feedback
-        _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>");
+        _mgr.notifyProgress(update, "<b>" + _mgr._t("Updating") + "</b>");
         return update;
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
index 0a58ba9f669396702dd4051898f59f02fde81df0..f27215f2ce014176148ed1a58b149e2faf4c3210 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
@@ -87,15 +87,15 @@ class PluginUpdateRunner extends UpdateRunner {
                 // strip off file:// or just file:
                 String xpi2pfile = _uri.getPath();
                 if(xpi2pfile == null || xpi2pfile.length() == 0) {
-                        statusDone("<b>" + _("Bad URL {0}", _xpi2pURL) + "</b>");
+                        statusDone("<b>" + _t("Bad URL {0}", _xpi2pURL) + "</b>");
                 } else {
                     // copy the contents of from to _updateFile
                     long alreadyTransferred = (new File(xpi2pfile)).getAbsoluteFile().length();
                     if(FileUtil.copy((new File(xpi2pfile)).getAbsolutePath(), _updateFile, true, false)) {
-                        updateStatus("<b>" + _("Attempting to install from file {0}", _xpi2pURL) + "</b>");
+                        updateStatus("<b>" + _t("Attempting to install from file {0}", _xpi2pURL) + "</b>");
                         transferComplete(alreadyTransferred, alreadyTransferred, 0L, _xpi2pURL, _updateFile, false);
                     } else {
-                        statusDone("<b>" + _("Failed to install from file {0}, copy failed.", _xpi2pURL) + "</b>");
+                        statusDone("<b>" + _t("Failed to install from file {0}, copy failed.", _xpi2pURL) + "</b>");
                     }
                 }
             } else {
@@ -108,14 +108,14 @@ class PluginUpdateRunner extends UpdateRunner {
                 if (shouldProxy && proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
                     proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
                     _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-                    String msg = _("HTTP client proxy tunnel must be running");
+                    String msg = _t("HTTP client proxy tunnel must be running");
                     if (_log.shouldWarn())
                         _log.warn(msg);
                     statusDone("<b>" + msg + "</b>");
                     _mgr.notifyTaskFailed(this, msg, null);
                     return;
                 }
-                updateStatus("<b>" + _("Downloading plugin from {0}", _xpi2pURL) + "</b>");
+                updateStatus("<b>" + _t("Downloading plugin from {0}", _xpi2pURL) + "</b>");
                 try {
                     if (shouldProxy)
                         // 10 retries!!
@@ -136,12 +136,12 @@ class PluginUpdateRunner extends UpdateRunner {
 
         @Override
         public void transferComplete(long alreadyTransferred, long bytesTransferred, long bytesRemaining, String url, String outputFile, boolean notModified) {
-            updateStatus("<b>" + _("Plugin downloaded") + "</b>");
+            updateStatus("<b>" + _t("Plugin downloaded") + "</b>");
             File f = new File(_updateFile);
             File appDir = new SecureDirectory(_context.getConfigDir(), PLUGIN_DIR);
             if ((!appDir.exists()) && (!appDir.mkdir())) {
                 f.delete();
-                statusDone("<b>" + _("Cannot create plugin directory {0}", appDir.getAbsolutePath()) + "</b>");
+                statusDone("<b>" + _t("Cannot create plugin directory {0}", appDir.getAbsolutePath()) + "</b>");
                 return;
             }
             boolean isSU3;
@@ -186,7 +186,7 @@ class PluginUpdateRunner extends UpdateRunner {
             // extract to a zip file whether the sig is good or not, so we can get the properties file
             String err = up.migrateFile(f, to);
             if (err != null) {
-                statusDone("<b>" + err + ' ' + _("from {0}", url) + " </b>");
+                statusDone("<b>" + err + ' ' + _t("from {0}", url) + " </b>");
                 f.delete();
                 to.delete();
                 return;
@@ -202,7 +202,7 @@ class PluginUpdateRunner extends UpdateRunner {
                 f.delete();
                 to.delete();
                 //updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' ' + signer + "</b>");
-                statusDone("<b>" + _("Plugin from {0} contains an invalid key", url) + "</b>");
+                statusDone("<b>" + _t("Plugin from {0} contains an invalid key", url) + "</b>");
                 return;
             }
             SigningPublicKey spk;
@@ -211,7 +211,7 @@ class PluginUpdateRunner extends UpdateRunner {
             } catch (DataFormatException dfe) {
                 f.delete();
                 to.delete();
-                statusDone("<b>" + _("Plugin from {0} contains an invalid key", url) + "</b>");
+                statusDone("<b>" + _t("Plugin from {0} contains an invalid key", url) + "</b>");
                 return;
             }
 
@@ -244,7 +244,7 @@ class PluginUpdateRunner extends UpdateRunner {
                         _log.error("Failed to verify plugin signature, corrupt plugin or bad signature, signed by: " + signer);
                     else
                         _log.error("Plugin signer \"" + signer + "\" does not match existing signer in plugin.config file \"" + signingKeyName + "\"");
-                    statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
+                    statusDone("<b>" + _t("Plugin signature verification of {0} failed", url) + "</b>");
                     return;
                 }
             } else if (_context.getBooleanProperty(PROP_ALLOW_NEW_KEYS)) {
@@ -254,7 +254,7 @@ class PluginUpdateRunner extends UpdateRunner {
                     f.delete();
                     to.delete();
                     _log.error("Bad key or key mismatch - Failed to add plugin key \"" + pubkey + "\" for plugin signer \"" + signer + "\"");
-                    statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
+                    statusDone("<b>" + _t("Plugin signature verification of {0} failed", url) + "</b>");
                     return;
                 }
                 // ...and try the verify again
@@ -268,7 +268,7 @@ class PluginUpdateRunner extends UpdateRunner {
                     else
                         // shouldn't happen
                         _log.error("Plugin signer \"" + signer + "\" does not match new signer in plugin.config file \"" + signingKeyName + "\"");
-                    statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
+                    statusDone("<b>" + _t("Plugin signature verification of {0} failed", url) + "</b>");
                     return;
                 }
             } else {
@@ -277,7 +277,7 @@ class PluginUpdateRunner extends UpdateRunner {
                 to.delete();
                 _log.error("Untrusted plugin key \"" + pubkey + "\" for plugin signer \"" + signer + "\"");
                 // don't display signer, we're really checking the key not the signer name
-                statusDone("<b>" + _("Plugin not installed - signer is untrusted") + "</b>");
+                statusDone("<b>" + _t("Plugin not installed - signer is untrusted") + "</b>");
                 return;
             }
 
@@ -303,7 +303,7 @@ class PluginUpdateRunner extends UpdateRunner {
                 sudVersion = su3.getVersionString();
                 signingKeyName = su3.getSignerString();
             } catch (IOException ioe) {
-                statusDone("<b>" + ioe + ' ' + _("from {0}", url) + " </b>");
+                statusDone("<b>" + ioe + ' ' + _t("from {0}", url) + " </b>");
                 f.delete();
                 to.delete();
                 return;
@@ -315,7 +315,7 @@ class PluginUpdateRunner extends UpdateRunner {
             if (signer == null || signer.length() <= 0) {
                 f.delete();
                 to.delete();
-                statusDone("<b>" + _("Plugin from {0} contains an invalid key", url) + "</b>");
+                statusDone("<b>" + _t("Plugin from {0} contains an invalid key", url) + "</b>");
                 return;
             }
             if (!signer.equals(signingKeyName)) {
@@ -326,7 +326,7 @@ class PluginUpdateRunner extends UpdateRunner {
                 else
                     // shouldn't happen
                     _log.error("Plugin signer \"" + signer + "\" does not match new signer in plugin.config file \"" + signingKeyName + "\"");
-                statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>");
+                statusDone("<b>" + _t("Plugin signature verification of {0} failed", url) + "</b>");
                 return;
             }
             processFinal(to, appDir, url, props, sudVersion, null, signer);
@@ -342,7 +342,7 @@ class PluginUpdateRunner extends UpdateRunner {
                 f.delete();
                 to.delete();
                 FileUtil.rmdir(tempDir, false);
-                statusDone("<b>" + _("Plugin from {0} is corrupt", url) + "</b>");
+                statusDone("<b>" + _t("Plugin from {0} is corrupt", url) + "</b>");
                 return null;
             }
             File installProps = new File(tempDir, "plugin.config");
@@ -352,7 +352,7 @@ class PluginUpdateRunner extends UpdateRunner {
             } catch (IOException ioe) {
                 f.delete();
                 to.delete();
-                statusDone("<b>" + _("Plugin from {0} does not contain the required configuration file", url) + "</b>");
+                statusDone("<b>" + _t("Plugin from {0} does not contain the required configuration file", url) + "</b>");
                 return null;
             } finally {
                 // we don't need this anymore, we will unzip again
@@ -374,12 +374,12 @@ class PluginUpdateRunner extends UpdateRunner {
                 version.indexOf("<") >= 0 || version.indexOf(">") >= 0 ||
                 appName.startsWith(".") || appName.indexOf("/") >= 0 || appName.indexOf("\\") >= 0) {
                 to.delete();
-                statusDone("<b>" + _("Plugin from {0} has invalid name or version", url) + "</b>");
+                statusDone("<b>" + _t("Plugin from {0} has invalid name or version", url) + "</b>");
                 return;
             }
             if (!version.equals(sudVersion)) {
                 to.delete();
-                statusDone("<b>" + _("Plugin {0} has mismatched versions", appName) + "</b>");
+                statusDone("<b>" + _t("Plugin {0} has mismatched versions", appName) + "</b>");
                 return;
             }
             // set so notifyComplete() will work
@@ -390,7 +390,7 @@ class PluginUpdateRunner extends UpdateRunner {
             if (minVersion != null &&
                 VersionComparator.comp(CoreVersion.VERSION, minVersion) < 0) {
                 to.delete();
-                statusDone("<b>" + _("This plugin requires I2P version {0} or higher", minVersion) + "</b>");
+                statusDone("<b>" + _t("This plugin requires I2P version {0} or higher", minVersion) + "</b>");
                 return;
             }
 
@@ -398,7 +398,7 @@ class PluginUpdateRunner extends UpdateRunner {
             if (minVersion != null &&
                 VersionComparator.comp(System.getProperty("java.version"), minVersion) < 0) {
                 to.delete();
-                statusDone("<b>" + _("This plugin requires Java version {0} or higher", minVersion) + "</b>");
+                statusDone("<b>" + _t("This plugin requires Java version {0} or higher", minVersion) + "</b>");
                 return;
             }
 
@@ -407,7 +407,7 @@ class PluginUpdateRunner extends UpdateRunner {
             if (destDir.exists()) {
                 if (Boolean.valueOf(props.getProperty("install-only")).booleanValue()) {
                     to.delete();
-                    statusDone("<b>" + _("Downloaded plugin is for new installs only, but the plugin is already installed", url) + "</b>");
+                    statusDone("<b>" + _t("Downloaded plugin is for new installs only, but the plugin is already installed", url) + "</b>");
                     return;
                 }
                 // compare previous version
@@ -417,7 +417,7 @@ class PluginUpdateRunner extends UpdateRunner {
                     DataHelper.loadProps(oldProps, oldPropFile);
                 } catch (IOException ioe) {
                     to.delete();
-                    statusDone("<b>" + _("Installed plugin does not contain the required configuration file", url) + "</b>");
+                    statusDone("<b>" + _t("Installed plugin does not contain the required configuration file", url) + "</b>");
                     return;
                 }
                 String oldPubkey = oldProps.getProperty("key");
@@ -425,28 +425,28 @@ class PluginUpdateRunner extends UpdateRunner {
                 String oldAppName = oldProps.getProperty("name");
                 if ((pubkey != null && !pubkey.equals(oldPubkey)) || (!signer.equals(oldKeyName)) || (!appName.equals(oldAppName))) {
                     to.delete();
-                    statusDone("<b>" + _("Signature of downloaded plugin does not match installed plugin") + "</b>");
+                    statusDone("<b>" + _t("Signature of downloaded plugin does not match installed plugin") + "</b>");
                     return;
                 }
                 String oldVersion = oldProps.getProperty("version");
                 if (oldVersion == null ||
                     VersionComparator.comp(oldVersion, version) >= 0) {
                     to.delete();
-                    statusDone("<b>" + _("Downloaded plugin version {0} is not newer than installed plugin", version) + "</b>");
+                    statusDone("<b>" + _t("Downloaded plugin version {0} is not newer than installed plugin", version) + "</b>");
                     return;
                 }
                 minVersion = ConfigClientsHelper.stripHTML(props, "min-installed-version");
                 if (minVersion != null &&
                     VersionComparator.comp(minVersion, oldVersion) > 0) {
                     to.delete();
-                    statusDone("<b>" + _("Plugin update requires installed plugin version {0} or higher", minVersion) + "</b>");
+                    statusDone("<b>" + _t("Plugin update requires installed plugin version {0} or higher", minVersion) + "</b>");
                     return;
                 }
                 String maxVersion = ConfigClientsHelper.stripHTML(props, "max-installed-version");
                 if (maxVersion != null &&
                     VersionComparator.comp(maxVersion, oldVersion) < 0) {
                     to.delete();
-                    statusDone("<b>" + _("Plugin update requires installed plugin version {0} or lower", maxVersion) + "</b>");
+                    statusDone("<b>" + _t("Plugin update requires installed plugin version {0} or lower", maxVersion) + "</b>");
                     return;
                 }
                 oldVersion = LogsHelper.jettyVersion();
@@ -454,14 +454,14 @@ class PluginUpdateRunner extends UpdateRunner {
                 if (minVersion != null &&
                     VersionComparator.comp(minVersion, oldVersion) > 0) {
                     to.delete();
-                    statusDone("<b>" + _("Plugin requires Jetty version {0} or higher", minVersion) + "</b>");
+                    statusDone("<b>" + _t("Plugin requires Jetty version {0} or higher", minVersion) + "</b>");
                     return;
                 }
                 maxVersion = ConfigClientsHelper.stripHTML(props, "max-jetty-version");
                 if (maxVersion != null &&
                     VersionComparator.comp(maxVersion, oldVersion) < 0) {
                     to.delete();
-                    statusDone("<b>" + _("Plugin requires Jetty version {0} or lower", maxVersion) + "</b>");
+                    statusDone("<b>" + _t("Plugin requires Jetty version {0} or lower", maxVersion) + "</b>");
                     return;
                 }
                 // do we defer extraction and installation?
@@ -470,7 +470,7 @@ class PluginUpdateRunner extends UpdateRunner {
                     try {
                         if(!FileUtil.copy(to, (new SecureFile( new SecureFile(appDir.getCanonicalPath() +"/" + appName +"/"+ ZIP).getCanonicalPath())) , true, true)) {
                             to.delete();
-                            statusDone("<b>" + _("Cannot copy plugin to directory {0}", destDir.getAbsolutePath()) + "</b>");
+                            statusDone("<b>" + _t("Cannot copy plugin to directory {0}", destDir.getAbsolutePath()) + "</b>");
                             return;
                         }
                     } catch (Throwable t) {
@@ -480,7 +480,7 @@ class PluginUpdateRunner extends UpdateRunner {
                     }
                     // we don't need the original file anymore.
                     to.delete();
-                    statusDone("<b>" + _("Plugin will be installed on next restart.") + "</b>");
+                    statusDone("<b>" + _t("Plugin will be installed on next restart.") + "</b>");
                     return;
                 }
                 if (PluginStarter.isPluginRunning(appName, _context)) {
@@ -498,12 +498,12 @@ class PluginUpdateRunner extends UpdateRunner {
             } else {
                 if (Boolean.valueOf(props.getProperty("update-only")).booleanValue()) {
                     to.delete();
-                    statusDone("<b>" + _("Plugin is for upgrades only, but the plugin is not installed") + "</b>");
+                    statusDone("<b>" + _t("Plugin is for upgrades only, but the plugin is not installed") + "</b>");
                     return;
                 }
                 if (!destDir.mkdir()) {
                     to.delete();
-                    statusDone("<b>" + _("Cannot create plugin directory {0}", destDir.getAbsolutePath()) + "</b>");
+                    statusDone("<b>" + _t("Cannot create plugin directory {0}", destDir.getAbsolutePath()) + "</b>");
                     return;
                 }
             }
@@ -511,14 +511,14 @@ class PluginUpdateRunner extends UpdateRunner {
             // Finally, extract the zip to the plugin directory
             if (!FileUtil.extractZip(to, destDir, Log.WARN)) {
                 to.delete();
-                statusDone("<b>" + _("Failed to install plugin in {0}", destDir.getAbsolutePath()) + "</b>");
+                statusDone("<b>" + _t("Failed to install plugin in {0}", destDir.getAbsolutePath()) + "</b>");
                 return;
             }
             _updated = true;
             to.delete();
             // install != update. Changing the user's settings like this is probabbly a bad idea.
             if (Boolean.valueOf( props.getProperty("dont-start-at-install")).booleanValue()) {
-                statusDone("<b>" + _("Plugin {0} installed", appName) + "</b>");
+                statusDone("<b>" + _t("Plugin {0} installed", appName) + "</b>");
                 if(!update) {
                     Properties pluginProps = PluginStarter.pluginProperties();
                     pluginProps.setProperty(PluginStarter.PREFIX + appName + PluginStarter.ENABLED, "false");
@@ -537,16 +537,16 @@ class PluginUpdateRunner extends UpdateRunner {
                             link = "<a target=\"_blank\" href=\"" + linkURL + "\"/>" + linkName + "</a>";
                         else
                             link = appName;
-                        statusDone("<b>" + _("Plugin {0} installed and started", link) + "</b>");
+                        statusDone("<b>" + _t("Plugin {0} installed and started", link) + "</b>");
                     }
                     else
-                        statusDone("<b>" + _("Plugin {0} installed but failed to start, check logs", appName) + "</b>");
+                        statusDone("<b>" + _t("Plugin {0} installed but failed to start, check logs", appName) + "</b>");
                 } catch (Throwable e) {
-                    statusDone("<b>" + _("Plugin {0} installed but failed to start", appName) + ": " + e + "</b>");
+                    statusDone("<b>" + _t("Plugin {0} installed but failed to start", appName) + ": " + e + "</b>");
                     _log.error("Error starting plugin " + appName, e);
                 }
             } else {
-                statusDone("<b>" + _("Plugin {0} installed", appName) + "</b>");
+                statusDone("<b>" + _t("Plugin {0} installed", appName) + "</b>");
             }
         }
 
@@ -554,7 +554,7 @@ class PluginUpdateRunner extends UpdateRunner {
         public void transferFailed(String url, long bytesTransferred, long bytesRemaining, int currentAttempt) {
             File f = new File(_updateFile);
             f.delete();
-            statusDone("<b>" + _("Failed to download plugin from {0}", url) + "</b>");
+            statusDone("<b>" + _t("Failed to download plugin from {0}", url) + "</b>");
         }
 
         private void statusDone(String msg) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java
index 15ccc6831e839c9f430d1895eb210397251b9e5f..02406e4189f65504d84d6233152b80fa36bb6a5f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateChecker.java
@@ -8,7 +8,9 @@ import net.i2p.router.util.RFC822Date;
 import net.i2p.router.web.ConfigUpdateHandler;
 import net.i2p.update.*;
 import net.i2p.util.EepHead;
+import net.i2p.util.Log;
 import net.i2p.util.PortMapper;
+import net.i2p.util.SystemVersion;
 
 /**
  *  Does a simple EepHead to get the last-modified header.
@@ -59,14 +61,14 @@ class UnsignedUpdateChecker extends UpdateRunner {
         if (proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
             proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
             _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-            String msg = _("HTTP client proxy tunnel must be running");
+            String msg = _t("HTTP client proxy tunnel must be running");
             if (_log.shouldWarn())
                 _log.warn(msg);
             updateStatus("<b>" + msg + "</b>");
             return false;
         }
 
-        //updateStatus("<b>" + _("Checking for development build update") + "</b>");
+        //updateStatus("<b>" + _t("Checking for development build update") + "</b>");
         try {
             EepHead get = new EepHead(_context, proxyHost, proxyPort, 0, url);
             if (get.fetch()) {
@@ -76,9 +78,17 @@ class UnsignedUpdateChecker extends UpdateRunner {
                     if (modtime <= 0) return false;
                     if (_ms <= 0) return false;
                     if (modtime > _ms) {
-                        _unsignedUpdateAvailable = true;
-                        _mgr.notifyVersionAvailable(this, _urls.get(0), getType(), "", getMethod(), _urls,
-                                                    Long.toString(modtime), "");
+                        String newVersion = Long.toString(modtime);
+                        if (SystemVersion.isJava7()) {
+                            _unsignedUpdateAvailable = true;
+                            _mgr.notifyVersionAvailable(this, _urls.get(0), getType(), "", getMethod(), _urls,
+                                                        newVersion, "");
+                        } else {
+                            String ourJava = System.getProperty("java.version");
+                            String msg = _mgr._t("Requires Java version {0} but installed Java version is {1}", "1.7", ourJava);
+                            _log.logAlways(Log.WARN, "Cannot update to version " + newVersion + ": " + msg);
+                            _mgr.notifyVersionConstraint(this, _urls.get(0), getType(), "", newVersion, msg);
+                        }
                     }
                 }
                 return true;
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java
index 516f1e4aaa64bd6f44d99088779616727fb8cecd..d24974921ae8743a8c8c18fcb3797c553b4f7f1c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateHandler.java
@@ -88,7 +88,7 @@ class UnsignedUpdateHandler implements Checker, Updater {
             return null;
         UpdateRunner update = new UnsignedUpdateRunner(_context, _mgr, updateSources);
         // set status before thread to ensure UI feedback
-        _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>");
+        _mgr.notifyProgress(update, "<b>" + _mgr._t("Updating") + "</b>");
         return update;
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java
index 7a9519ff61909086e8e112a4e50c02cd1d99e648..5d2e097787e7969fc5b27012432ba3816694677e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UnsignedUpdateRunner.java
@@ -38,7 +38,7 @@ class UnsignedUpdateRunner extends UpdateRunner {
             if (proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
                 proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
                 _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-                String msg = _("HTTP client proxy tunnel must be running");
+                String msg = _t("HTTP client proxy tunnel must be running");
                 if (_log.shouldWarn())
                     _log.warn(msg);
                 updateStatus("<b>" + msg + "</b>");
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java
index 05f476a0eea60bbcc1e0a8639a6ae787ab7c4fea..fc173c70b9d6cea58489b32239ae954482ab0a6f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UpdateHandler.java
@@ -49,7 +49,7 @@ class UpdateHandler implements Updater {
             return null;
         UpdateRunner update = new UpdateRunner(_context, _mgr, type, method, updateSources);
         // set status before thread to ensure UI feedback
-        _mgr.notifyProgress(update, "<b>" + _mgr._("Updating") + "</b>");
+        _mgr.notifyProgress(update, "<b>" + _mgr._t("Updating") + "</b>");
         return update;
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
index 91e1ebf59fa9b6485440e8a14d9f26b51edb0f25..a88c6f9f7181342fb392d5ac522abafeaf1687f7 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
@@ -152,7 +152,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
                 if (proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
                     proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
                     _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-                    String msg = _("HTTP client proxy tunnel must be running");
+                    String msg = _t("HTTP client proxy tunnel must be running");
                     if (_log.shouldWarn())
                         _log.warn(msg);
                     updateStatus("<b>" + msg + "</b>");
@@ -199,7 +199,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
                 continue;
             }
 
-            updateStatus("<b>" + _("Updating from {0}", linkify(updateURL)) + "</b>");
+            updateStatus("<b>" + _t("Updating from {0}", linkify(updateURL)) + "</b>");
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Selected update URL: " + updateURL);
 
@@ -259,7 +259,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
         if (_isPartial)
             return;
         long d = currentWrite + bytesTransferred;
-        String status = "<b>" + _("Updating") + "</b>";
+        String status = "<b>" + _t("Updating") + "</b>";
         _mgr.notifyProgress(this, status, d, d + bytesRemaining);
     }
 
@@ -272,7 +272,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
             if (newer) {
                 _newVersion = newVersion;
             } else {
-                updateStatus("<b>" + _("No new version found at {0}", linkify(url)) + "</b>");
+                updateStatus("<b>" + _t("No new version found at {0}", linkify(url)) + "</b>");
                 if (_log.shouldLog(Log.WARN))
                     _log.warn("Found old version \"" + newVersion + "\" at " + url);
             }
@@ -295,7 +295,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
         if (_log.shouldLog(Log.WARN))
             _log.warn("Update from " + url + " did not download completely (" +
                            bytesRemaining + " remaining after " + currentAttempt + " tries)");
-        updateStatus("<b>" + _("Transfer failed from {0}", linkify(url)) + "</b>");
+        updateStatus("<b>" + _t("Transfer failed from {0}", linkify(url)) + "</b>");
         _mgr.notifyAttemptFailed(this, url, null);
         // update() will call notifyTaskFailed() after last URL
     }
@@ -313,15 +313,15 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
     }
 
     /** translate a string */
-    protected String _(String s) {
-        return _mgr._(s);
+    protected String _t(String s) {
+        return _mgr._t(s);
     }
 
     /**
      *  translate a string with a parameter
      */
-    protected String _(String s, Object o) {
-        return _mgr._(s, o);
+    protected String _t(String s, Object o) {
+        return _mgr._t(s, o);
     }
 
     @Override
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
index d59c32fe4e184547b196845c9c1d080faefa2c7f..432da4d67cea90186bedaf81dcc7bcfe6ff7f097 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/BanlistRenderer.java
@@ -45,7 +45,7 @@ public class BanlistRenderer {
         
         entries.putAll(_context.banlist().getEntries());
         if (entries.isEmpty()) {
-            buf.append("<i>").append(_("none")).append("</i>");
+            buf.append("<i>").append(_t("none")).append("</i>");
             out.write(buf.toString());
             return;
         }
@@ -62,24 +62,24 @@ public class BanlistRenderer {
             buf.append(' ');
             String expireString = DataHelper.formatDuration2(expires);
             if (key.equals(Hash.FAKE_HASH))
-                buf.append(_("Permanently banned"));
+                buf.append(_t("Permanently banned"));
             else if (expires < 5l*24*60*60*1000)
-                buf.append(_("Temporary ban expiring in {0}", expireString));
+                buf.append(_t("Temporary ban expiring in {0}", expireString));
             else
-                buf.append(_("Banned until restart or in {0}", expireString));
+                buf.append(_t("Banned until restart or in {0}", expireString));
             Set<String> transports = entry.transports;
             if ( (transports != null) && (!transports.isEmpty()) )
                 buf.append(" on the following transport: ").append(transports);
             if (entry.cause != null) {
                 buf.append("<br>\n");
                 if (entry.causeCode != null)
-                    buf.append(_(entry.cause, entry.causeCode));
+                    buf.append(_t(entry.cause, entry.causeCode));
                 else
-                    buf.append(_(entry.cause));
+                    buf.append(_t(entry.cause));
             }
             if (!key.equals(Hash.FAKE_HASH)) {
                 buf.append(" (<a href=\"configpeer?peer=").append(key.toBase64())
-                   .append("#unsh\">").append(_("unban now")).append("</a>)");
+                   .append("#unsh\">").append(_t("unban now")).append("</a>)");
             }
             buf.append("</li>\n");
         }
@@ -89,23 +89,23 @@ public class BanlistRenderer {
     }
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         return Messages.getString(s, _context);
     }
 
     /**
      *  translate a string with a parameter
-     *  This is a lot more expensive than _(s), so use sparingly.
+     *  This is a lot more expensive than _t(s), so use sparingly.
      *
      *  @param s string to be translated containing {0}
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
-    private String _(String s, Object o) {
+    private String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
index e5a548cf1ce0db7a7cd17a56249957f18e3d8ee4..7870363b57fbfe195329db1572d6c4e426866abe 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/CSSHelper.java
@@ -146,9 +146,9 @@ public class CSSHelper extends HelperBase {
     public String title(String s) {
          StringBuilder buf = new StringBuilder(128);
          buf.append("<title>")
-            .append(_("I2P Router Console"))
+            .append(_t("I2P Router Console"))
             .append(" - ")
-            .append(_(s))
+            .append(_t(s))
             .append("</title>");
          return buf.toString();
     }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/CertHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/CertHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..f476c1dfed98729cde891480bbf314c0804917d9
--- /dev/null
+++ b/apps/routerconsole/java/src/net/i2p/router/web/CertHelper.java
@@ -0,0 +1,81 @@
+package net.i2p.router.web;
+
+import java.io.File;
+import java.io.IOException;
+
+import net.i2p.util.FileUtil;
+
+
+/**
+ *  Dump out our local SSL certs, if any
+ *
+ *  @since 0.9.23
+ */
+public class CertHelper extends HelperBase {
+    
+    private static final String DIR = "certificates";
+    private static final String I2CP = "i2cp/i2cp.local.crt";
+    private static final String CONSOLE = "console/console.local.crt";
+    private static final String I2PTUNNEL_DIR = "i2ptunnel";
+
+    public String getSummary() {
+        File dir = new File(_context.getConfigDir(), DIR);
+        try {
+            _out.write("<h3>");
+            _out.write(_t("Local SSL Certificates"));
+            _out.write("</h3>\n");
+            // console
+            output("Console", new File(dir, CONSOLE));
+            // I2CP
+            output("I2CP", new File(dir, I2CP));
+            // i2ptunnel clients
+            File tunnelDir = new File(_context.getConfigDir(), I2PTUNNEL_DIR);
+            boolean hasTunnels = false;
+            File[] tunnels = tunnelDir.listFiles();
+            if (tunnels != null) {
+                for (int i = 0; i < tunnels.length; i++) {
+                    File f = tunnels[i];
+                    if (!f.isFile())
+                        continue;
+                    String name = f.getName();
+                    if (!name.endsWith(".local.crt"))
+                        continue;
+                    if (!name.startsWith("i2ptunnel-"))
+                        continue;
+                    String b32 = name.substring(10, name.length() - 10);
+                    output(_t("I2PTunnel") + ' ' + b32, f);
+                    hasTunnels = true;
+                }
+            }
+            if (!hasTunnels)
+                output(_t("I2PTunnel"), null);
+            // anything else? plugins?
+        } catch (IOException ioe) {
+            ioe.printStackTrace();
+        }
+        return ""; 
+    }
+
+    /**
+     *  @param file may be null
+     */
+    private void output(String name, File file) throws IOException {
+        _out.write("<p><h4>");
+        _out.write("</h4>");
+        _out.write(name);
+        if (file != null && file.exists()) {
+            String cert = FileUtil.readTextFile(file.toString(), -1, true);
+            if (cert != null) {
+                _out.write("\n<textarea readonly=\"readonly\">\n");
+                _out.write(cert);
+                _out.write("</textarea>\n");
+            } else {
+                _out.write(": read failure");
+            }
+        } else {
+            _out.write(": ");
+            _out.write(_t("none"));
+        }
+        _out.write("</p>\n");
+    }
+}
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java
index 345f17b0d678dfd0dcd4daaa69f6d8812dc7f6e7..c098ee1476491dce155152ce72ef2f496eec5a4a 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHandler.java
@@ -7,6 +7,7 @@ import java.util.Properties;
 import java.util.Set;
 
 import net.i2p.data.DataHelper;
+import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
 
 /**
  * Handler to deal with form submissions from the advanced config form and act
@@ -58,7 +59,7 @@ public class ConfigAdvancedHandler extends FormHandler {
             } catch (IOException ioe) {
                 _log.error("Config error", ioe);
                 addFormError(ioe.toString());
-                addFormError(_("Error updating the configuration - please see the error logs"));
+                addFormError(_t("Error updating the configuration - please see the error logs"));
                 return;
             }
 
@@ -68,9 +69,9 @@ public class ConfigAdvancedHandler extends FormHandler {
 
             boolean saved = _context.router().saveConfig(props, unsetKeys);
             if (saved) 
-                addFormNotice(_("Configuration saved successfully"));
+                addFormNotice(_t("Configuration saved successfully"));
             else
-                addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
+                addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs"));
             
             //if (_forceRestart) {
             //    addFormNotice("Performing a soft restart");
@@ -83,9 +84,17 @@ public class ConfigAdvancedHandler extends FormHandler {
     /** @since 0.9.20 */
     private void saveFF() {
         boolean saved = _context.router().saveConfig(ConfigAdvancedHelper.PROP_FLOODFILL_PARTICIPANT, _ff);
+        if (_ff.equals("false") || _ff.equals("true")) {
+            FloodfillNetworkDatabaseFacade fndf = (FloodfillNetworkDatabaseFacade) _context.netDb();
+            boolean wasFF = fndf.floodfillEnabled();
+            boolean isFF = _ff.equals("true");
+            fndf.setFloodfillEnabled(isFF);
+            if (wasFF != isFF)
+                _context.router().rebuildRouterInfo();
+        }
         if (saved) 
-            addFormNotice(_("Configuration saved successfully"));
+            addFormNotice(_t("Configuration saved successfully"));
         else
-            addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs"));
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java
index c64cb2e5a976814cdb947bfce058cb247ada3446..0ee5c0b4f4a9952b33ef711d73f8949c871ca7c8 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigAdvancedHelper.java
@@ -35,4 +35,9 @@ public class ConfigAdvancedHelper extends HelperBase {
             return CHECKED;
         return "";
     }
+
+    /** @since 0.9.21 */
+    public boolean isFloodfill() {
+        return _context.netDb().floodfillEnabled();
+    }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
index 72cd5dc8ad648b12762f081c6c08c5bffc9fdbc5..13b080001885b798f4b3675b8dbbfc1ebd7c1290 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java
@@ -45,27 +45,27 @@ public class ConfigClientsHandler extends FormHandler {
                 _action = "Save Client Configuration";
         }
 
-        if (_action.equals(_("Save Client Configuration"))) {
+        if (_action.equals(_t("Save Client Configuration"))) {
             saveClientChanges();
             return;
         }
-        if (_action.equals(_("Save Interface Configuration"))) {
+        if (_action.equals(_t("Save Interface Configuration"))) {
             saveInterfaceChanges();
             return;
         }
-        if (_action.equals(_("Save WebApp Configuration"))) {
+        if (_action.equals(_t("Save WebApp Configuration"))) {
             saveWebAppChanges();
             return;
         }
         boolean pluginsEnabled = PluginStarter.pluginsEnabled(_context);
-        if (_action.equals(_("Save Plugin Configuration"))) {
+        if (_action.equals(_t("Save Plugin Configuration"))) {
             if (pluginsEnabled)
                 savePluginChanges();
             else
                 addFormError("Plugins disabled");
             return;
         }
-        if (_action.equals(_("Install Plugin"))) {
+        if (_action.equals(_t("Install Plugin"))) {
             if (pluginsEnabled &&
                 (_context.getBooleanPropertyDefaultTrue(ConfigClientsHelper.PROP_ENABLE_PLUGIN_INSTALL) ||
                  isAdvanced()))
@@ -74,7 +74,7 @@ public class ConfigClientsHandler extends FormHandler {
                 addFormError("Plugins disabled");
             return;
         }
-        if (_action.equals(_("Install Plugin from File"))) {
+        if (_action.equals(_t("Install Plugin from File"))) {
             if (pluginsEnabled &&
                 (_context.getBooleanPropertyDefaultTrue(ConfigClientsHelper.PROP_ENABLE_PLUGIN_INSTALL) ||
                  isAdvanced()))
@@ -83,7 +83,7 @@ public class ConfigClientsHandler extends FormHandler {
                 addFormError("Plugins disabled");
             return;
         }
-        if (_action.equals(_("Update All Installed Plugins"))) {
+        if (_action.equals(_t("Update All Installed Plugins"))) {
             if (pluginsEnabled)
                 updateAllPlugins();
             else
@@ -135,14 +135,14 @@ public class ConfigClientsHandler extends FormHandler {
                     // I tried to check to see if the plugin was ran elsewhere,
                     // and it sait it was when it was not. -- Sponge
                 } catch (Throwable e) {
-                    addFormError(_("Error stopping plugin {0}", app) + ": " + e);
+                    addFormError(_t("Error stopping plugin {0}", app) + ": " + e);
                     _log.error("Error stopping plugin " + app,  e);
                 }
                 try {
                     PluginStarter.deletePlugin(_context, app);
-                    addFormNotice(_("Deleted plugin {0}", app));
+                    addFormNotice(_t("Deleted plugin {0}", app));
                 } catch (Throwable e) {
-                    addFormError(_("Error deleting plugin {0}", app) + ": " + e);
+                    addFormError(_t("Error deleting plugin {0}", app) + ": " + e);
                     _log.error("Error deleting plugin " + app,  e);
                 }
             } else {
@@ -167,17 +167,17 @@ public class ConfigClientsHandler extends FormHandler {
                     try {
                         if (pluginsEnabled) {
                             PluginStarter.stopPlugin(_context, app);
-                            addFormNotice(_("Stopped plugin {0}", app));
+                            addFormNotice(_t("Stopped plugin {0}", app));
                         } else {
                             addFormError("Plugins disabled");
                         }
                     } catch (Throwable e) {
-                        addFormError(_("Error stopping plugin {0}", app) + ": " + e);
+                        addFormError(_t("Error stopping plugin {0}", app) + ": " + e);
                         _log.error("Error stopping plugin " + app,  e);
                     }
                 } else {
                     WebAppStarter.stopWebApp(app);
-                    addFormNotice(_("Stopped webapp {0}", app));
+                    addFormNotice(_t("Stopped webapp {0}", app));
                 }
             }
             return;
@@ -206,7 +206,7 @@ public class ConfigClientsHandler extends FormHandler {
         }
 
         // label (IE)
-        String xStart = _("Start");
+        String xStart = _t("Start");
         if (_action.toLowerCase(Locale.US).startsWith(xStart + "<span class=hide> ") &&
                    _action.toLowerCase(Locale.US).endsWith("</span>")) {
             // IE sucks
@@ -229,7 +229,7 @@ public class ConfigClientsHandler extends FormHandler {
                 }
             }
         } else {
-            //addFormError(_("Unsupported") + ' ' + _action + '.');
+            //addFormError(_t("Unsupported") + ' ' + _action + '.');
         }
 
     }
@@ -279,13 +279,13 @@ public class ConfigClientsHandler extends FormHandler {
                 ClientAppConfig ca = new ClientAppConfig(clss, name, args, 2*60*1000,
                                                          _settings.get(newClient + ".enabled") != null);
                 clients.add(ca);
-                addFormNotice(_("New client added") + ": " + name + " (" + clss + ").");
+                addFormNotice(_t("New client added") + ": " + name + " (" + clss + ").");
             }
         }
 
         ClientAppConfig.writeClientAppConfig(_context, clients);
-        addFormNotice(_("Client configuration saved successfully"));
-        //addFormNotice(_("Restart required to take effect"));
+        addFormNotice(_t("Client configuration saved successfully"));
+        //addFormNotice(_t("Restart required to take effect"));
     }
 
     /**
@@ -294,7 +294,7 @@ public class ConfigClientsHandler extends FormHandler {
     private void stopClient(int i) {
         List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
         if (i >= clients.size()) {
-            addFormError(_("Bad client index."));
+            addFormError(_t("Bad client index."));
             return;
         }
         ClientAppConfig ca = clients.get(i);
@@ -303,7 +303,7 @@ public class ConfigClientsHandler extends FormHandler {
             try {
                 // todo parseArgs(ca.stopArgs) ?
                 clientApp.shutdown(null);
-                addFormNotice(_("Client {0} stopped", ca.clientName));
+                addFormNotice(_t("Client {0} stopped", ca.clientName));
                 // Give a chance for status to update
                 try {
                    Thread.sleep(1000);
@@ -320,12 +320,12 @@ public class ConfigClientsHandler extends FormHandler {
     private void startClient(int i) {
         List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
         if (i >= clients.size()) {
-            addFormError(_("Bad client index."));
+            addFormError(_t("Bad client index."));
             return;
         }
         ClientAppConfig ca = clients.get(i);
         LoadClientAppsJob.runClient(ca.className, ca.clientName, LoadClientAppsJob.parseArgs(ca.args), _context, _log);
-        addFormNotice(_("Client {0} started", ca.clientName));
+        addFormNotice(_t("Client {0} started", ca.clientName));
         // Give a chance for status to update
         try {
             Thread.sleep(1000);
@@ -335,12 +335,12 @@ public class ConfigClientsHandler extends FormHandler {
     private void deleteClient(int i) {
         List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
         if (i < 0 || i >= clients.size()) {
-            addFormError(_("Bad client index."));
+            addFormError(_t("Bad client index."));
             return;
         }
         ClientAppConfig ca = clients.remove(i);
         ClientAppConfig.writeClientAppConfig(_context, clients);
-        addFormNotice(_("Client {0} deleted", ca.clientName));
+        addFormNotice(_t("Client {0} deleted", ca.clientName));
     }
 
     private void saveWebAppChanges() {
@@ -355,7 +355,7 @@ public class ConfigClientsHandler extends FormHandler {
                 props.setProperty(name, "" + (val != null));
         }
         RouterConsoleRunner.storeWebAppProperties(_context, props);
-        addFormNotice(_("WebApp configuration saved."));
+        addFormNotice(_t("WebApp configuration saved."));
     }
 
     private void savePluginChanges() {
@@ -369,7 +369,7 @@ public class ConfigClientsHandler extends FormHandler {
             props.setProperty(name, "" + (val != null));
         }
         PluginStarter.storePluginProperties(props);
-        addFormNotice(_("Plugin configuration saved."));
+        addFormNotice(_t("Plugin configuration saved."));
     }
 
     /**
@@ -384,20 +384,20 @@ public class ConfigClientsHandler extends FormHandler {
                         File path = new File(_context.getBaseDir(), "webapps");
                         path = new File(path, app + ".war");
                         WebAppStarter.startWebApp(_context, s, app, path.getAbsolutePath());
-                        addFormNoticeNoEscape(_("WebApp") + " <a href=\"/" + app + "/\">" + _(app) + "</a> " + _("started") + '.');
+                        addFormNoticeNoEscape(_t("WebApp") + " <a href=\"/" + app + "/\">" + _t(app) + "</a> " + _t("started") + '.');
                     } catch (Throwable e) {
-                        addFormError(_("Failed to start") + ' ' + _(app) + " " + e + '.');
+                        addFormError(_t("Failed to start") + ' ' + _t(app) + " " + e + '.');
                         _log.error("Failed to start webapp " + app, e);
                     }
                     return;
         }
-        addFormError(_("Failed to find server."));
+        addFormError(_t("Failed to find server."));
     }
 
     private void installPlugin() {
         String url = getJettyString("pluginURL");
         if (url == null || url.length() <= 0) {
-            addFormError(_("No plugin URL specified."));
+            addFormError(_t("No plugin URL specified."));
             return;
         }
         installPlugin(null, url);
@@ -418,7 +418,7 @@ public class ConfigClientsHandler extends FormHandler {
         try {
             // non-null but zero bytes if no file entered, don't know why
             if (in == null || in.available() <= 0) {
-                addFormError(_("You must enter a file"));
+                addFormError(_t("You must enter a file"));
                 return;
             }
             DataHelper.read(in, magic);
@@ -461,7 +461,7 @@ public class ConfigClientsHandler extends FormHandler {
              if (status != null && status.length() > 0)
                  addFormNoticeNoEscape(status);
         } catch (IOException ioe) {
-            addFormError(_("Install from file failed") + " - " + ioe.getMessage());
+            addFormError(_t("Install from file failed") + " - " + ioe.getMessage());
         } finally {
             // it's really a ByteArrayInputStream but we'll play along...
             if (in != null)
@@ -476,7 +476,7 @@ public class ConfigClientsHandler extends FormHandler {
         if (url == null)
             url = props.getProperty("updateURL");
         if (url == null) {
-            addFormError(_("No update URL specified for {0}",app));
+            addFormError(_t("No update URL specified for {0}",app));
             return;
         }
         installPlugin(app, url);
@@ -485,12 +485,12 @@ public class ConfigClientsHandler extends FormHandler {
     /** @since 0.8.13 */
     private void updateAllPlugins() {
         if (NewsHelper.isAnyUpdateInProgress()) {
-            addFormError(_("Plugin or update download already in progress."));
+            addFormError(_t("Plugin or update download already in progress."));
             return;
         }
         if (!verifyProxy())
             return;
-        addFormNotice(_("Updating all plugins"));
+        addFormNotice(_t("Updating all plugins"));
         PluginStarter.updateAll(_context);
         // So that update() will post a status to the summary bar before we reload
         try {
@@ -509,14 +509,14 @@ public class ConfigClientsHandler extends FormHandler {
             return;
         }
         if (mgr.isUpdateInProgress()) {
-            addFormError(_("Plugin or update download already in progress."));
+            addFormError(_t("Plugin or update download already in progress."));
             return;
         }
         URI uri;
         try {
             uri = new URI(url);
         } catch (URISyntaxException use) {
-            addFormError(_("Bad URL {0}", url));
+            addFormError(_t("Bad URL {0}", url));
             return;
         }
         if (!url.startsWith("file:")) {
@@ -525,9 +525,9 @@ public class ConfigClientsHandler extends FormHandler {
         }
         if (mgr.installPlugin(app, uri)) {
             if (url.startsWith("file:"))
-                addFormNotice(_("Installing plugin from {0}", uri.getPath()));
+                addFormNotice(_t("Installing plugin from {0}", uri.getPath()));
             else
-                addFormNotice(_("Downloading plugin from {0}", url));
+                addFormNotice(_t("Downloading plugin from {0}", url));
         } else {
             addFormError("Cannot install, check logs");
         }
@@ -546,7 +546,7 @@ public class ConfigClientsHandler extends FormHandler {
         if (!verifyProxy())
             return;
         mgr.check(PLUGIN, app);
-        addFormNotice(_("Checking plugin {0} for updates", app));
+        addFormNotice(_t("Checking plugin {0} for updates", app));
         // So that update() will post a status to the summary bar before we reload
         try {
            Thread.sleep(1000);
@@ -570,16 +570,16 @@ public class ConfigClientsHandler extends FormHandler {
              proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
              _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0);
         if (!rv)
-            addFormError(_("HTTP client proxy tunnel must be running"));
+            addFormError(_t("HTTP client proxy tunnel must be running"));
         return rv;
     }
 
     private void startPlugin(String app) {
         try {
             PluginStarter.startPlugin(_context, app);
-            addFormNotice(_("Started plugin {0}", app));
+            addFormNotice(_t("Started plugin {0}", app));
         } catch (Throwable e) {
-            addFormError(_("Error starting plugin {0}", app) + ": " + e);
+            addFormError(_t("Error starting plugin {0}", app) + ": " + e);
             _log.error("Error starting plugin " + app,  e);
         }
     }
@@ -601,7 +601,7 @@ public class ConfigClientsHandler extends FormHandler {
         if (user != null && pw != null && user.length() > 0 && pw.length() > 0) {
             ConsolePasswordManager mgr = new ConsolePasswordManager(_context);
             mgr.saveHash(ConfigClientsHelper.PROP_AUTH, user, pw);
-            addFormNotice(_("Added user {0}", user));
+            addFormNotice(_t("Added user {0}", user));
         }
         String mode = getJettyString("mode");
         boolean disabled = "0".equals(mode);
@@ -616,9 +616,9 @@ public class ConfigClientsHandler extends FormHandler {
                       "::".equals(intfc);
         changes.put(ConfigClientsHelper.BIND_ALL_INTERFACES, Boolean.toString(all));
         if (_context.router().saveConfig(changes, null)) {
-            addFormNotice(_("Interface configuration saved"));
-            addFormNotice(_("Restart required to take effect"));
+            addFormNotice(_t("Interface configuration saved"));
+            addFormNotice(_t("Restart required to take effect"));
         } else
-            addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs"));
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
index 75975c8644045b0a2d4043bdae666ae84da974da..c0e4df15828d5df2c52ea6abdccec3252d7d5bbd 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java
@@ -95,7 +95,7 @@ public class ConfigClientsHelper extends HelperBase {
     public void setEdit(String edit) {
          if (edit == null)
              return;
-        String xStart = _("Edit");
+        String xStart = _t("Edit");
         if (edit.startsWith(xStart + "<span class=hide> ") &&
             edit.endsWith("</span>")) {
             // IE sucks
@@ -104,7 +104,7 @@ public class ConfigClientsHelper extends HelperBase {
             _edit = edit.substring(5);
         } else if (edit.startsWith(xStart + ' ')) {
             _edit = edit.substring(xStart.length() + 1);
-        } else if ((_("Add Client")).equals(edit)) {
+        } else if ((_t("Add Client")).equals(edit)) {
             _edit = "new";
         }
     }
@@ -113,10 +113,10 @@ public class ConfigClientsHelper extends HelperBase {
     public String getForm1() {
         StringBuilder buf = new StringBuilder(1024);
         buf.append("<table>\n" +
-                   "<tr><th align=\"right\">").append(_("Client")).append("</th><th>")
-           .append(_("Run at Startup?")).append("</th><th>")
-           .append(_("Control")).append("</th><th align=\"left\">")
-           .append(_("Class and arguments")).append("</th></tr>\n");
+                   "<tr><th align=\"right\">").append(_t("Client")).append("</th><th>")
+           .append(_t("Run at Startup?")).append("</th><th>")
+           .append(_t("Control")).append("</th><th align=\"left\">")
+           .append(_t("Class and arguments")).append("</th></tr>\n");
         
         boolean allowEdit = isClientChangeEnabled();
         List<ClientAppConfig> clients = ClientAppConfig.getClientApps(_context);
@@ -125,7 +125,7 @@ public class ConfigClientsHelper extends HelperBase {
             ClientAppConfig ca = clients.get(cur);
             String xname = ca.clientName;
             if (xname.length() > 0)
-                xname = _(xname);
+                xname = _t(xname);
             cacs.add(new CAC(cur, ca, xname));
         }
         Collections.sort(cacs, new CACComparator());
@@ -199,10 +199,10 @@ public class ConfigClientsHelper extends HelperBase {
     public String getForm2() {
         StringBuilder buf = new StringBuilder(1024);
         buf.append("<table>\n" +
-                   "<tr><th align=\"right\">").append(_("WebApp")).append("</th><th>")
-           .append(_("Run at Startup?")).append("</th><th>")
-           .append(_("Control")).append("</th><th align=\"left\">")
-           .append(_("Description")).append("</th></tr>\n");
+                   "<tr><th align=\"right\">").append(_t("WebApp")).append("</th><th>")
+           .append(_t("Run at Startup?")).append("</th><th>")
+           .append(_t("Control")).append("</th><th align=\"left\">")
+           .append(_t("Description")).append("</th></tr>\n");
         Properties props = RouterConsoleRunner.webAppProperties(_context);
         Set<String> keys = new TreeSet<String>(props.stringPropertyNames());
         for (String name : keys) {
@@ -228,10 +228,10 @@ public class ConfigClientsHelper extends HelperBase {
     public String getForm3() {
         StringBuilder buf = new StringBuilder(1024);
         buf.append("<table>\n" +
-                   "<tr><th align=\"right\">").append(_("Plugin")).append("</th><th>")
-           .append(_("Run at Startup?")).append("</th><th>")
-           .append(_("Control")).append("</th><th align=\"left\">")
-           .append(_("Description")).append("</th></tr>\n");
+                   "<tr><th align=\"right\">").append(_t("Plugin")).append("</th><th>")
+           .append(_t("Run at Startup?")).append("</th><th>")
+           .append(_t("Control")).append("</th><th align=\"left\">")
+           .append(_t("Description")).append("</th></tr>\n");
         Properties props = PluginStarter.pluginProperties();
         Set<String> keys = new TreeSet<String>(props.stringPropertyNames());
         for (String name : keys) {
@@ -245,9 +245,9 @@ public class ConfigClientsHelper extends HelperBase {
                     continue;
                 StringBuilder desc = new StringBuilder(256);
                 desc.append("<table border=\"0\">")
-                    .append("<tr><td><b>").append(_("Version")).append("</b></td><td>").append(stripHTML(appProps, "version"))
+                    .append("<tr><td><b>").append(_t("Version")).append("</b></td><td>").append(stripHTML(appProps, "version"))
                     .append("<tr><td><b>")
-                    .append(_("Signed by")).append("</b></td><td>");
+                    .append(_t("Signed by")).append("</b></td><td>");
                 String s = stripHTML(appProps, "signer");
                 if (s != null) {
                     if (s.indexOf("@") > 0)
@@ -264,13 +264,13 @@ public class ConfigClientsHelper extends HelperBase {
                     if (ms > 0) {
                         String date = (new SimpleDateFormat("yyyy-MM-dd HH:mm")).format(new Date(ms));
                         desc.append("<tr><td><b>")
-                            .append(_("Date")).append("</b></td><td>").append(date);
+                            .append(_t("Date")).append("</b></td><td>").append(date);
                     }
                 }
                 s = stripHTML(appProps, "author");
                 if (s != null) {
                     desc.append("<tr><td><b>")
-                        .append(_("Author")).append("</b></td><td>");
+                        .append(_t("Author")).append("</b></td><td>");
                     if (s.indexOf("@") > 0)
                         desc.append("<a href=\"mailto:").append(s).append("\">").append(s).append("</a>");
                     else
@@ -281,24 +281,24 @@ public class ConfigClientsHelper extends HelperBase {
                     s = stripHTML(appProps, "description");
                 if (s != null) {
                     desc.append("<tr><td><b>")
-                        .append(_("Description")).append("</b></td><td>").append(s);
+                        .append(_t("Description")).append("</b></td><td>").append(s);
                 }
                 s = stripHTML(appProps, "license");
                 if (s != null) {
                     desc.append("<tr><td><b>")
-                        .append(_("License")).append("</b></td><td>").append(s);
+                        .append(_t("License")).append("</b></td><td>").append(s);
                 }
                 s = stripHTML(appProps, "websiteURL");
                 if (s != null) {
                     desc.append("<tr><td>")
-                        .append("<a href=\"").append(s).append("\">").append(_("Website")).append("</a><td>&nbsp;");
+                        .append("<a href=\"").append(s).append("\">").append(_t("Website")).append("</a><td>&nbsp;");
                 }
                 String updateURL = stripHTML(appProps, "updateURL.su3");
                 if (updateURL == null)
                     updateURL = stripHTML(appProps, "updateURL");
                 if (updateURL != null) {
                     desc.append("<tr><td>")
-                        .append("<a href=\"").append(updateURL).append("\">").append(_("Update link")).append("</a><td>&nbsp;");
+                        .append("<a href=\"").append(updateURL).append("\">").append(_t("Update link")).append("</a><td>&nbsp;");
                 }
                 desc.append("</table>");
                 boolean isRunning = PluginStarter.isPluginRunning(app, _context);
@@ -328,15 +328,15 @@ public class ConfigClientsHelper extends HelperBase {
             String link = "/";
             if (! RouterConsoleRunner.ROUTERCONSOLE.equals(name))
                 link += name + "/";
-            buf.append("<a href=\"").append(link).append("\">").append(_(name)).append("</a>");
+            buf.append("<a href=\"").append(link).append("\">").append(_t(name)).append("</a>");
         } else if (edit && !ro) {
             buf.append("<input type=\"text\" name=\"name").append(index).append("\" value=\"");
             if (name.length() > 0)
-                buf.append(_(name));
+                buf.append(_t(name));
             buf.append("\" >");
         } else {
             if (name.length() > 0)
-                buf.append(_(name));
+                buf.append(_t(name));
         }
         buf.append("</td><td align=\"center\" width=\"10%\"><input type=\"checkbox\" class=\"optbox\" name=\"").append(index).append(".enabled\" value=\"true\" ");
         if (enabled) {
@@ -349,26 +349,26 @@ public class ConfigClientsHelper extends HelperBase {
         // remove if you wnat to put them back
         if (showStartButton && (!ro) && !edit) {
             buf.append("<button type=\"submit\" class=\"Xaccept\" name=\"action\" value=\"Start ").append(index).append("\" >")
-               .append(_("Start")).append("<span class=hide> ").append(index).append("</span></button>");
+               .append(_t("Start")).append("<span class=hide> ").append(index).append("</span></button>");
         }
         if (showStopButton && (!edit))
             buf.append("<button type=\"submit\" class=\"Xstop\" name=\"action\" value=\"Stop ").append(index).append("\" >")
-               .append(_("Stop")).append("<span class=hide> ").append(index).append("</span></button>");
+               .append(_t("Stop")).append("<span class=hide> ").append(index).append("</span></button>");
         if (isClientChangeEnabled() && showEditButton && (!edit) && !ro)
             buf.append("<button type=\"submit\" class=\"Xadd\" name=\"edit\" value=\"Edit ").append(index).append("\" >")
-               .append(_("Edit")).append("<span class=hide> ").append(index).append("</span></button>");
+               .append(_t("Edit")).append("<span class=hide> ").append(index).append("</span></button>");
         if (showUpdateButton && (!edit) && !ro) {
             buf.append("<button type=\"submit\" class=\"Xcheck\" name=\"action\" value=\"Check ").append(index).append("\" >")
-               .append(_("Check for updates")).append("<span class=hide> ").append(index).append("</span></button>");
+               .append(_t("Check for updates")).append("<span class=hide> ").append(index).append("</span></button>");
             buf.append("<button type=\"submit\" class=\"Xdownload\" name=\"action\" value=\"Update ").append(index).append("\" >")
-                .append(_("Update")).append("<span class=hide> ").append(index).append("</span></button>");
+                .append(_t("Update")).append("<span class=hide> ").append(index).append("</span></button>");
         }
         if (showDeleteButton && (!edit) && !ro) {
             buf.append("<button type=\"submit\" class=\"Xdelete\" name=\"action\" value=\"Delete ").append(index)
                .append("\" onclick=\"if (!confirm('")
-               .append(_("Are you sure you want to delete {0}?", _(name)))
+               .append(_t("Are you sure you want to delete {0}?", _t(name)))
                .append("')) { return false; }\">")
-               .append(_("Delete")).append("<span class=hide> ").append(index).append("</span></button>");
+               .append(_t("Delete")).append("<span class=hide> ").append(index).append("</span></button>");
         }
         buf.append("</td><td align=\"left\" width=\"50%\">");
         if (edit && !ro) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java
index 5e426988e770051042eb3c2a384291c6f9f16cea..f26b182a0c4d164399a3158a32c9cb1ca72e4b21 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java
@@ -18,15 +18,15 @@ public class ConfigHomeHandler extends FormHandler {
     protected void processForm() {
         if (_action == null) return;
         String group = getJettyString("group");
-        boolean deleting = _action.equals(_("Delete selected"));
-        boolean adding = _action.equals(_("Add item"));
-        boolean restoring = _action.equals(_("Restore defaults"));
-        if (_action.equals(_("Save")) && "0".equals(group)) {
+        boolean deleting = _action.equals(_t("Delete selected"));
+        boolean adding = _action.equals(_t("Add item"));
+        boolean restoring = _action.equals(_t("Restore defaults"));
+        if (_action.equals(_t("Save")) && "0".equals(group)) {
             boolean old = _context.getBooleanProperty(HomeHelper.PROP_OLDHOME);
             boolean nnew = getJettyString("oldHome") != null;
             if (old != nnew) {
                 _context.router().saveConfig(HomeHelper.PROP_OLDHOME, "" + nnew);
-                addFormNotice(_("Home page changed"));
+                addFormNotice(_t("Home page changed"));
             }
         } else if (adding || deleting || restoring) {
             String prop;
@@ -48,7 +48,7 @@ public class ConfigHomeHandler extends FormHandler {
                 //_context.router().saveConfig(prop, dflt);
                 // remove config so user will see updates
                 _context.router().saveConfig(prop, null);
-                addFormNotice(_("Restored default settings"));
+                addFormNotice(_t("Restored default settings"));
                 return;
             }
             String config = _context.getProperty(prop, dflt);
@@ -60,12 +60,12 @@ public class ConfigHomeHandler extends FormHandler {
             if (adding) {
                 String name = getJettyString("nofilter_name");
                 if (name == null || name.length() <= 0) {
-                    addFormError(_("No name entered"));
+                    addFormError(_t("No name entered"));
                     return;
                 }
                 String url = getJettyString("nofilter_url");
                 if (url == null || url.length() <= 0) {
-                    addFormError(_("No URL entered"));
+                    addFormError(_t("No URL entered"));
                     return;
                 }
                 // these would get double-escaped so we can't do it this way...
@@ -81,7 +81,7 @@ public class ConfigHomeHandler extends FormHandler {
                 else
                     app = new HomeHelper.App(name, "", url, "/themes/console/images/question.png");
                 apps.add(app);
-                addFormNotice(_("Added") + ": " + app.name);
+                addFormNotice(_t("Added") + ": " + app.name);
             } else {
                 // deleting
                 Set<String> toDelete = new HashSet<String>();
@@ -98,13 +98,13 @@ public class ConfigHomeHandler extends FormHandler {
                     HomeHelper.App app = iter.next();
                     if (toDelete.contains(app.name)) {
                         iter.remove();
-                        addFormNotice(_("Removed") + ": " + app.name);
+                        addFormNotice(_t("Removed") + ": " + app.name);
                     }
                 }
             }
             HomeHelper.saveApps(_context, prop, apps, !("3".equals(group)));
         } else {
-            //addFormError(_("Unsupported"));
+            //addFormError(_t("Unsupported"));
         }
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java
index 97b8cb3a64a50f691a90babc413e3c29f25373bd..b5930895babb7c803cded2700ed06d3472279f26 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHandler.java
@@ -15,12 +15,12 @@ public class ConfigKeyringHandler extends FormHandler {
     @Override
     protected void processForm() {
         if (_action == null) return;
-        boolean adding = _action.equals(_("Add key"));
-        if (adding || _action.equals(_("Delete key"))) {
+        boolean adding = _action.equals(_t("Add key"));
+        if (adding || _action.equals(_t("Delete key"))) {
             if (_peer == null)
-                addFormError(_("You must enter a destination"));
+                addFormError(_t("You must enter a destination"));
             if (_key == null && adding)
-                addFormError(_("You must enter a key"));
+                addFormError(_t("You must enter a key"));
             if (_peer == null || (_key == null && adding))
                 return;
             Hash h = ConvertToHash.getHash(_peer);
@@ -31,22 +31,22 @@ public class ConfigKeyringHandler extends FormHandler {
                 } catch (DataFormatException dfe) {}
                 if (h != null && h.getData() != null && sk.getData() != null) {
                     _context.keyRing().put(h, sk);
-                    addFormNotice(_("Key for") + " " + h.toBase64() + " " + _("added to keyring"));
+                    addFormNotice(_t("Key for") + " " + h.toBase64() + " " + _t("added to keyring"));
                 } else {
-                    addFormError(_("Invalid destination or key"));
+                    addFormError(_t("Invalid destination or key"));
                 }
             } else {  // Delete
                 if (h != null && h.getData() != null) {
                     if (_context.keyRing().remove(h) != null)
-                        addFormNotice(_("Key for") + " " + h.toBase64() + " " + _("removed from keyring"));
+                        addFormNotice(_t("Key for") + " " + h.toBase64() + " " + _t("removed from keyring"));
                     else
-                        addFormNotice(_("Key for") + " " + h.toBase64() + " " + _("not found in keyring"));
+                        addFormNotice(_t("Key for") + " " + h.toBase64() + " " + _t("not found in keyring"));
                 } else {
-                    addFormError(_("Invalid destination"));
+                    addFormError(_t("Invalid destination"));
                 }
             }
         } else {
-            //addFormError(_("Unsupported"));
+            //addFormError(_t("Unsupported"));
         }
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHelper.java
index 8c147fcdd56ef37dbb345e01ceef27f211401292..cf0a5be4bf30f062e78418d41ab17bd753a2668d 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigKeyringHelper.java
@@ -1,20 +1,19 @@
 package net.i2p.router.web;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.StringWriter;
 
 
 public class ConfigKeyringHelper extends HelperBase {
     public ConfigKeyringHelper() {}
     
     public String getSummary() {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(4*1024);
+        StringWriter sw = new StringWriter(4*1024);
         try {
-            _context.keyRing().renderStatusHTML(new OutputStreamWriter(baos));
+            _context.keyRing().renderStatusHTML(sw);
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
-        return new String(baos.toByteArray());
+        return sw.toString();
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHandler.java
index e98528a9650c518da2c3b4a2603597db9e2bb66c..5c65011a091c94fa1a2483154bda8daada34a24a 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHandler.java
@@ -4,6 +4,8 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.util.Properties;
 
+import net.i2p.util.LogManager;
+
 /**
  * Handler to deal with form submissions from the logging config form and act
  * upon the values.
@@ -79,7 +81,7 @@ public class ConfigLoggingHandler extends FormHandler {
                     props.setProperty(_newLogClass, _newLogLevel);
                 _context.logManager().setLimits(props);
                 shouldSave = true;
-                addFormNotice(_("Log overrides updated"));
+                addFormNotice(_t("Log overrides updated"));
             } catch (IOException ioe) {
                 // shouldn't ever happen (BAIS shouldnt cause an IOE)
                 _context.logManager().getLog(ConfigLoggingHandler.class).error("Error reading from the props?", ioe);
@@ -113,7 +115,7 @@ public class ConfigLoggingHandler extends FormHandler {
         }
         
         if (_fileSize != null) {
-            int newBytes = _context.logManager().getFileSize(_fileSize);
+            int newBytes = LogManager.getFileSize(_fileSize);
             int oldBytes = _context.logManager().getFileSize();
             if (newBytes > 0) {
                 if (oldBytes != newBytes) {
@@ -160,7 +162,7 @@ public class ConfigLoggingHandler extends FormHandler {
             boolean saved = _context.logManager().saveConfig();
 
             if (saved) 
-                addFormNotice(_("Log configuration saved"));
+                addFormNotice(_t("Log configuration saved"));
             else
                 addFormError("Error saving the configuration (applied but not saved) - please see the error logs");
         }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java
index aa064e627d2eeced2db1e8136a48a59b9bf4a698..1a9354a2d910e796880baef0e5c30627225d4ac2 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigLoggingHelper.java
@@ -42,9 +42,9 @@ public class ConfigLoggingHelper extends HelperBase {
             buf.append(prefix).append('=').append(level).append('\n');
         }
         buf.append("</textarea><br>\n");
-        buf.append("<i>").append(_("Add additional logging statements above. Example: net.i2p.router.tunnel=WARN")).append("</i><br>");
-        buf.append("<i>").append(_("Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN")).append("</i><br>");
-        buf.append("<i>").append(_("Valid levels are DEBUG, INFO, WARN, ERROR, CRIT")).append("</i>\n");
+        buf.append("<i>").append(_t("Add additional logging statements above. Example: net.i2p.router.tunnel=WARN")).append("</i><br>");
+        buf.append("<i>").append(_t("Or put entries in the logger.config file. Example: logger.record.net.i2p.router.tunnel=WARN")).append("</i><br>");
+        buf.append("<i>").append(_t("Valid levels are DEBUG, INFO, WARN, ERROR, CRIT")).append("</i>\n");
 
       /****
         // this is too big and ugly
@@ -78,11 +78,11 @@ public class ConfigLoggingHelper extends HelperBase {
             buf.append("<option value=\"").append(l).append('\"');
             if (l.equals(cur))
                 buf.append(" selected=\"selected\"");
-            buf.append('>').append(_(l)).append("</option>\n");
+            buf.append('>').append(_t(l)).append("</option>\n");
         }        
         
         if (showRemove)
-            buf.append("<option value=\"remove\">").append(_("Remove")).append("</option>");
+            buf.append("<option value=\"remove\">").append(_t("Remove")).append("</option>");
         buf.append("</select>\n");
         return buf.toString();
     }
@@ -119,7 +119,7 @@ public class ConfigLoggingHelper extends HelperBase {
         StringBuilder buf = new StringBuilder(65536);
         buf.append("<select name=\"newlogclass\">\n" +
                    "<option value=\"\" selected=\"selected\">")
-           .append(_("Select a class to add"))
+           .append(_t("Select a class to add"))
            .append("</option>\n");
 
         for (String l : sortedLogs) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNavHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNavHelper.java
index 5282b4a8906300bc788e029288af2f7e2cbdf15e..f731f0017b6eb7e1bf550f786a9c0d8c0deec7f3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNavHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNavHelper.java
@@ -62,7 +62,7 @@ public class ConfigNavHelper extends HelperBase {
             buf.append("<center>");
         List<Tab> tabs = new ArrayList<Tab>(pages.length);
         for (int i = 0; i < pages.length; i++) {
-            tabs.add(new Tab(pages[i], _(titles[i])));
+            tabs.add(new Tab(pages[i], _t(titles[i])));
         }
         Collections.sort(tabs, new TabComparator());
         for (int i = 0; i < tabs.size(); i++) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java
index 8465400f5373d9fcd2e21c88e894dbfb5eca25c6..b2c4304325b38e73d8c28aa6b311e0741daf5350 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHandler.java
@@ -56,7 +56,7 @@ public class ConfigNetHandler extends FormHandler {
     
     @Override
     protected void processForm() {
-        if (_saveRequested || ( (_action != null) && (_("Save changes").equals(_action)) )) {
+        if (_saveRequested || ( (_action != null) && (_t("Save changes").equals(_action)) )) {
             saveChanges();
         //} else if (_recheckReachabilityRequested) {
         //    recheckReachability();
@@ -145,7 +145,7 @@ public class ConfigNetHandler extends FormHandler {
 /****
     private void recheckReachability() {
         _context.commSystem().recheckReachability();
-        addFormNotice(_("Rechecking router reachability..."));
+        addFormNotice(_t("Rechecking router reachability..."));
     }
 ****/
     
@@ -209,7 +209,7 @@ public class ConfigNetHandler extends FormHandler {
                 }
                 changes.put(UDPTransport.PROP_SOURCES, _udpAutoIP);
                 if ((!oldUdp.equals(_udpAutoIP)) || (!oldUHost.equals(uhost))) {
-                   addFormNotice(_("Updating IP address"));
+                   addFormNotice(_t("Updating IP address"));
                    restartRequired = true;
                 }
             }
@@ -231,7 +231,7 @@ public class ConfigNetHandler extends FormHandler {
                     ch = true;
                 }
                 if (ch)
-                    addFormNotice(_("Updating IPv6 setting"));
+                    addFormNotice(_t("Updating IPv6 setting"));
             }
 
             // NTCP Settings
@@ -248,21 +248,21 @@ public class ConfigNetHandler extends FormHandler {
             if ((!oldAutoHost.equals(_ntcpAutoIP)) || ! oldNHost.equalsIgnoreCase(_ntcpHostname)) {
                 boolean valid = true;
                 if ("disabled".equals(_ntcpAutoIP)) {
-                    addFormNotice(_("Disabling TCP completely"));
+                    addFormNotice(_t("Disabling TCP completely"));
                 } else if ("false".equals(_ntcpAutoIP) && _ntcpHostname.length() > 0) {
                     valid = verifyAddress(_ntcpHostname);
                     if (valid) {
                         changes.put(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME, _ntcpHostname);
-                        addFormNotice(_("Updating TCP address to {0}", _ntcpHostname));
+                        addFormNotice(_t("Updating TCP address to {0}", _ntcpHostname));
                     } else {
                         error = true;
                     }
                 } else {
                     removes.add(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME);
                     if ("false".equals(_ntcpAutoIP))
-                        addFormNotice(_("Disabling inbound TCP"));
+                        addFormNotice(_t("Disabling inbound TCP"));
                     else
-                        addFormNotice(_("Updating inbound TCP address to auto")); // true or always
+                        addFormNotice(_t("Updating inbound TCP address to auto")); // true or always
                 }
                 if (valid) {
                     changes.put(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_IP, _ntcpAutoIP);
@@ -275,18 +275,18 @@ public class ConfigNetHandler extends FormHandler {
                     int port = Addresses.getPort(_ntcpPort);
                     if (port != 0) {
                         changes.put(ConfigNetHelper.PROP_I2NP_NTCP_PORT, _ntcpPort);
-                        addFormNotice(_("Updating TCP port to {0}", _ntcpPort));
+                        addFormNotice(_t("Updating TCP port to {0}", _ntcpPort));
                         if (port < 1024) {
-                            addFormError(_("Warning - ports less than 1024 are not recommended"));
+                            addFormError(_t("Warning - ports less than 1024 are not recommended"));
                             error = true;
                         }
                     } else {
-                        addFormError(_("Invalid port") + ": " + _ntcpPort);
+                        addFormError(_t("Invalid port") + ": " + _ntcpPort);
                         error = true;
                     }
                 } else {
                     removes.add(ConfigNetHelper.PROP_I2NP_NTCP_PORT);
-                    addFormNotice(_("Updating inbound TCP port to auto"));
+                    addFormNotice(_t("Updating inbound TCP port to auto"));
                 }
                 changes.put(ConfigNetHelper.PROP_I2NP_NTCP_AUTO_PORT, "" + _ntcpAutoPort);
                 restartRequired = true;
@@ -300,15 +300,15 @@ public class ConfigNetHandler extends FormHandler {
                     if (port != 0) {
                         changes.put(UDPTransport.PROP_INTERNAL_PORT, _udpPort);
                         changes.put(UDPTransport.PROP_EXTERNAL_PORT, _udpPort);
-                        addFormNotice(_("Updating UDP port to {0}", _udpPort));
+                        addFormNotice(_t("Updating UDP port to {0}", _udpPort));
                         if (port < 1024) {
-                            addFormError(_("Warning - ports less than 1024 are not recommended"));
+                            addFormError(_t("Warning - ports less than 1024 are not recommended"));
                             error = true;
                         } else {
                             restartRequired = true;
                         }
                     } else {
-                        addFormError(_("Invalid port") + ": " + _udpPort);
+                        addFormError(_t("Invalid port") + ": " + _udpPort);
                         error = true;
                     }
                 }
@@ -325,9 +325,9 @@ public class ConfigNetHandler extends FormHandler {
             if (switchRequired) {
                 changes.put(PROP_HIDDEN, "" + _hiddenMode);
                 if (_hiddenMode)
-                    addFormError(_("Gracefully restarting into Hidden Router Mode"));
+                    addFormError(_t("Gracefully restarting into Hidden Router Mode"));
                 else
-                    addFormError(_("Gracefully restarting to exit Hidden Router Mode"));
+                    addFormError(_t("Gracefully restarting to exit Hidden Router Mode"));
             }
 
             changes.put(Router.PROP_DYNAMIC_KEYS, "" + _dynamicKeys);
@@ -336,10 +336,10 @@ public class ConfigNetHandler extends FormHandler {
                 _upnp) {
                 // This is minor, don't set restartRequired
                 if (_upnp)
-                    addFormNotice(_("Enabling UPnP"));
+                    addFormNotice(_t("Enabling UPnP"));
                 else
-                    addFormNotice(_("Disabling UPnP"));
-                addFormNotice(_("Restart required to take effect"));
+                    addFormNotice(_t("Disabling UPnP"));
+                addFormNotice(_t("Restart required to take effect"));
             }
             changes.put(TransportManager.PROP_ENABLE_UPNP, "" + _upnp);
 
@@ -347,18 +347,18 @@ public class ConfigNetHandler extends FormHandler {
                 _laptop) {
                 // This is minor, don't set restartRequired
                 if (_laptop)
-                    addFormNotice(_("Enabling laptop mode"));
+                    addFormNotice(_t("Enabling laptop mode"));
                 else
-                    addFormNotice(_("Disabling laptop mode"));
+                    addFormNotice(_t("Disabling laptop mode"));
             }
             changes.put(UDPTransport.PROP_LAPTOP_MODE, "" + _laptop);
 
             if (Boolean.parseBoolean(_context.getProperty(TransportUtil.PROP_IPV4_FIREWALLED)) !=
                 _ipv4Firewalled) {
                 if (_ipv4Firewalled)
-                    addFormNotice(_("Disabling inbound IPv4"));
+                    addFormNotice(_t("Disabling inbound IPv4"));
                 else
-                    addFormNotice(_("Enabling inbound IPv4"));
+                    addFormNotice(_t("Enabling inbound IPv4"));
                 restartRequired = true;
             }
             changes.put(TransportUtil.PROP_IPV4_FIREWALLED, "" + _ipv4Firewalled);
@@ -366,16 +366,16 @@ public class ConfigNetHandler extends FormHandler {
             if (_context.getBooleanPropertyDefaultTrue(TransportManager.PROP_ENABLE_UDP) !=
                 !_udpDisabled) {
                 if (_udpDisabled)
-                    addFormNotice(_("Disabling UDP"));
+                    addFormNotice(_t("Disabling UDP"));
                 else
-                    addFormNotice(_("Enabling UDP"));
+                    addFormNotice(_t("Enabling UDP"));
                 restartRequired = true;
             }
             changes.put(TransportManager.PROP_ENABLE_UDP, "" + (!_udpDisabled));
 
             if (_requireIntroductions) {
                 changes.put(UDPTransport.PROP_FORCE_INTRODUCERS, "true");
-                addFormNotice(_("Requiring SSU introducers"));
+                addFormNotice(_t("Requiring SSU introducers"));
             } else {
                 removes.add(UDPTransport.PROP_FORCE_INTRODUCERS);
             }
@@ -386,9 +386,9 @@ public class ConfigNetHandler extends FormHandler {
         
         boolean saved = _context.router().saveConfig(changes, removes);
         if (saved) 
-            addFormNotice(_("Configuration saved successfully"));
+            addFormNotice(_t("Configuration saved successfully"));
         else
-            addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs"));
 
         // this has to be after the save
         if (ratesUpdated)
@@ -416,7 +416,7 @@ public class ConfigNetHandler extends FormHandler {
               //} else {
                 // There's a few changes that don't really require restart (e.g. enabling inbound TCP)
                 // But it would be hard to get right, so just do a restart.
-                //addFormError(_("Gracefully restarting I2P to change published router address"));
+                //addFormError(_t("Gracefully restarting I2P to change published router address"));
                 //_context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
               //}
             }
@@ -433,13 +433,13 @@ public class ConfigNetHandler extends FormHandler {
             return false;
         byte[] iab = Addresses.getIP(addr);
         if (iab == null) {
-            addFormError(_("Invalid address") + ": " + addr);
+            addFormError(_t("Invalid address") + ": " + addr);
             return false;
         }
         // TODO set IPv6 arg based on configuration?
         boolean rv = TransportUtil.isPubliclyRoutable(iab, true);
         if (!rv)
-            addFormError(_("The hostname or IP {0} is not publicly routable", addr));
+            addFormError(_t("The hostname or IP {0} is not publicly routable", addr));
         return rv;
     }
 
@@ -464,7 +464,7 @@ public class ConfigNetHandler extends FormHandler {
             String old = _context.router().getConfigSetting(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE);
             if ( (old == null) || (!old.equals(_sharePct)) ) {
                 changes.put(Router.PROP_BANDWIDTH_SHARE_PERCENTAGE, _sharePct);
-                addFormNotice(_("Updating bandwidth share percentage"));
+                addFormNotice(_t("Updating bandwidth share percentage"));
                 updated = true;
             }
         }
@@ -494,7 +494,7 @@ public class ConfigNetHandler extends FormHandler {
         }
 
         if (bwUpdated) {
-            addFormNotice(_("Updated bandwidth limits"));
+            addFormNotice(_t("Updated bandwidth limits"));
             updated = true;
         }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
index 3c82277943ccdbe507867a4e587d9b44f2915ada..c3abb58f540f80a7bc8b3b198821b9f30f4cd149 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java
@@ -43,10 +43,10 @@ public class ConfigNetHelper extends HelperBase {
     public String getUdpIP() {
         RouterAddress addr = _context.router().getRouterInfo().getTargetAddress("SSU");
         if (addr == null)
-            return _("unknown");
+            return _t("unknown");
         String rv = addr.getHost();
         if (rv == null)
-            return _("unknown");
+            return _t("unknown");
         return rv;
     }
 
@@ -58,10 +58,10 @@ public class ConfigNetHelper extends HelperBase {
       /****
         RouterAddress addr = _context.router().getRouterInfo().getTargetAddress("SSU");
         if (addr == null)
-            return _("unknown");
+            return _t("unknown");
         UDPAddress ua = new UDPAddress(addr);
         if (ua.getPort() <= 0)
-            return _("unknown");
+            return _t("unknown");
         return "" + ua.getPort();
       ****/
         // Since we can't get to UDPTransport.getRequestedPort() from here, just use
@@ -253,8 +253,8 @@ public class ConfigNetHelper extends HelperBase {
         return kbytesToBits(getShareBandwidth());
     }
     private String kbytesToBits(int kbytes) {
-        return DataHelper.formatSize(kbytes * (8 * 1024L)) + ' ' + _("bits per second") +
-               ' ' + _("or {0} bytes per month maximum", DataHelper.formatSize(kbytes * (1024L * 60 * 60 * 24 * 31)));
+        return DataHelper.formatSize(kbytes * (8 * 1024L)) + ' ' + _t("bits per second") +
+               ' ' + _t("or {0} bytes per month maximum", DataHelper.formatSize(kbytes * (1024L * 60 * 60 * 24 * 31)));
     }
     public String getInboundBurstRate() {
         return "" + _context.bandwidthLimiter().getInboundBurstKBytesPerSecond();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java
index e9af122f1158485272cc1a924f820619b5e27b9d..6ea3842a819a21e4b72b8b9efd9e3a88a2362d4f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHandler.java
@@ -17,26 +17,26 @@ public class ConfigPeerHandler extends FormHandler {
         if ("Save Configuration".equals(_action)) {
             _context.router().saveConfig();
             addFormNotice("Settings saved - not really!!!!!");
-        } else if (_action.equals(_("Ban peer until restart"))) {
+        } else if (_action.equals(_t("Ban peer until restart"))) {
             Hash h = getHash();
             if (h != null) {
-                _context.banlist().banlistRouterForever(h, _("Manually banned via {0}"), "<a href=\"configpeer\">configpeer</a>");
-                addFormNotice(_("Peer") + " " + _peer + " " + _("banned until restart") );
+                _context.banlist().banlistRouterForever(h, _t("Manually banned via {0}"), "<a href=\"configpeer\">configpeer</a>");
+                addFormNotice(_t("Peer") + " " + _peer + " " + _t("banned until restart") );
                 return;
             }
-            addFormError(_("Invalid peer"));
-        } else if (_action.equals(_("Unban peer"))) {
+            addFormError(_t("Invalid peer"));
+        } else if (_action.equals(_t("Unban peer"))) {
             Hash h = getHash();
             if (h != null) {
                 if (_context.banlist().isBanlisted(h)) {
                     _context.banlist().unbanlistRouter(h);
-                    addFormNotice(_("Peer") + " " + _peer + " " + _("unbanned") );
+                    addFormNotice(_t("Peer") + " " + _peer + " " + _t("unbanned") );
                 } else
-                    addFormNotice(_("Peer") + " " + _peer + " " + _("is not currently banned") );
+                    addFormNotice(_t("Peer") + " " + _peer + " " + _t("is not currently banned") );
                 return;
             }
-            addFormError(_("Invalid peer"));
-        } else if (_action.equals(_("Adjust peer bonuses"))) {
+            addFormError(_t("Invalid peer"));
+        } else if (_action.equals(_t("Adjust peer bonuses"))) {
             Hash h = getHash();
             if (h != null) {
                 PeerProfile prof = _context.profileOrganizer().getProfile(h);
@@ -44,23 +44,23 @@ public class ConfigPeerHandler extends FormHandler {
                     try {
                         prof.setSpeedBonus(Long.parseLong(_speed));
                     } catch (NumberFormatException nfe) {
-                        addFormError(_("Bad speed value"));
+                        addFormError(_t("Bad speed value"));
                     }
                     try {
                         prof.setCapacityBonus(Long.parseLong(_capacity));
                     } catch (NumberFormatException nfe) {
-                        addFormError(_("Bad capacity value"));
+                        addFormError(_t("Bad capacity value"));
                     }
                     addFormNotice("Bonuses adjusted for " + _peer);
                 } else
                     addFormError("No profile exists for " + _peer);
                 return;
             }
-            addFormError(_("Invalid peer"));
+            addFormError(_t("Invalid peer"));
         } else if (_action.startsWith("Check")) {
-            addFormError(_("Unsupported"));
+            addFormError(_t("Unsupported"));
         } else {
-            //addFormError(_("Unsupported") + ' ' + _action + '.');
+            //addFormError(_t("Unsupported") + ' ' + _action + '.');
         }
     }
     
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java
index 9db6722b44aff4f7dcd9de8a2a3b22df16363795..fe532d470dbc42ceab39028b4627becf90b91573 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigPeerHelper.java
@@ -1,20 +1,19 @@
 package net.i2p.router.web;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.StringWriter;
 
 
 public class ConfigPeerHelper extends HelperBase {
     public ConfigPeerHelper() {}
     
     public String getBlocklistSummary() {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(4*1024);
+        StringWriter sw = new StringWriter(4*1024);
         try {
-            _context.blocklist().renderStatusHTML(new OutputStreamWriter(baos));
+            _context.blocklist().renderStatusHTML(sw);
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
-        return new String(baos.toByteArray());
+        return sw.toString();
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java
index 2dd4330a1e987db8fe8676089678139ecae64604..f7d03555e040d7e77301f11de05ceab26ec0fc86 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigReseedHandler.java
@@ -21,32 +21,32 @@ public class ConfigReseedHandler extends FormHandler {
     @Override
     protected void processForm() {
 
-        if (_action.equals(_("Save changes and reseed now"))) {
+        if (_action.equals(_t("Save changes and reseed now"))) {
             saveChanges();
             if (!_context.netDb().reseedChecker().requestReseed()) {
-                addFormError(_("Reseeding is already in progress"));
+                addFormError(_t("Reseeding is already in progress"));
             } else {
                 // skip the nonce checking in ReseedHandler
-                addFormNotice(_("Starting reseed process"));
+                addFormNotice(_t("Starting reseed process"));
             }
-        } else if (_action.equals(_("Reseed from URL"))) {
+        } else if (_action.equals(_t("Reseed from URL"))) {
             String val = getJettyString("url");
             if (val != null)
                 val = val.trim();
             if (val == null || val.length() == 0) {
-                addFormError(_("You must enter a URL"));
+                addFormError(_t("You must enter a URL"));
                 return;
             }
             URL url;
             try {
                 url = new URL(val);
             } catch (MalformedURLException mue) {
-                addFormError(_("Bad URL {0}", val));
+                addFormError(_t("Bad URL {0}", val));
                 return;
             }
             try {
                 if (!_context.netDb().reseedChecker().requestReseed(url)) {
-                    addFormError(_("Reseeding is already in progress"));
+                    addFormError(_t("Reseeding is already in progress"));
                 } else {
                     // wait a while for completion but not forever
                     for (int i = 0; i < 40; i++) {
@@ -63,41 +63,50 @@ public class ConfigReseedHandler extends FormHandler {
                     } else if (status.length() > 0) {
                         addFormNoticeNoEscape(status);
                     } else if (_context.netDb().reseedChecker().inProgress()) {
-                        addFormNotice(_("Reseed in progress, check summary bar for status"));
+                        addFormNotice(_t("Reseed in progress, check summary bar for status"));
                     } else {
-                        addFormNotice(_("Reseed complete, check summary bar for status"));
+                        addFormNotice(_t("Reseed complete, check summary bar for status"));
                     }
                 }
             } catch (IllegalArgumentException iae) {
-                addFormError(_("Bad URL {0}", val) + " - " + iae.getMessage());
+                addFormError(_t("Bad URL {0}", val) + " - " + iae.getMessage());
             }
-        } else if (_action.equals(_("Reseed from file"))) {
+        } else if (_action.equals(_t("Reseed from file"))) {
             InputStream in = _requestWrapper.getInputStream("file");
             try {
                 // non-null but zero bytes if no file entered, don't know why
                 if (in == null || in.available() <= 0) {
-                    addFormError(_("You must enter a file"));
+                    addFormError(_t("You must enter a file"));
                     return;
                 }
                 int count = _context.netDb().reseedChecker().requestReseed(in);
                 if (count <= 0) {
-                    addFormError(_("Reseed from file failed"));
+                    addFormError(_t("Reseed from file failed"));
                 } else {
                     addFormNotice(ngettext("Reseed successful, loaded {0} router info from file",
                                            "Reseed successful, loaded {0} router infos from file",
                                            count));
                 }
             } catch (IOException ioe) {
-                addFormError(_("Reseed from file failed") + " - " + ioe);
+                addFormError(_t("Reseed from file failed") + " - " + ioe);
             } finally {
                 // it's really a ByteArrayInputStream but we'll play along...
                 if (in != null)
                     try { in.close(); } catch (IOException ioe) {}
             }
-        } else if (_action.equals(_("Save changes"))) {
+        } else if (_action.equals(_t("Save changes"))) {
             saveChanges();
+        } else if (_action.equals(_t("Reset URL list"))) {
+            resetUrlList();
         }
-        //addFormError(_("Unsupported") + ' ' + _action + '.');
+        //addFormError(_t("Unsupported") + ' ' + _action + '.');
+    }
+
+    private void resetUrlList() {
+        if (_context.router().saveConfig(Reseeder.PROP_RESEED_URL, null))
+	    addFormNotice(_t("URL list reset successfully"));
+        else
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs"));
     }
 
     /** @since 0.8.9 */
@@ -146,9 +155,9 @@ public class ConfigReseedHandler extends FormHandler {
         saveBoolean(Reseeder.PROP_PROXY_ENABLE, "enable");
         saveBoolean(Reseeder.PROP_SPROXY_ENABLE, "senable");
         if (_context.router().saveConfig(changes, removes))
-            addFormNotice(_("Configuration saved successfully."));
+            addFormNotice(_t("Configuration saved successfully."));
         else
-            addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs"));
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs"));
     }
 
     /** translate (ngettext) @since 0.9.19 */
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java
index 2b38859c1b460d011a500e601b29851d17718245..6e506422cef6124957242c1b043b6ed08ebdfd78 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigRestartBean.java
@@ -31,24 +31,24 @@ public class ConfigRestartBean {
         String systemNonce = getNonce();
         if ( (nonce != null) && (systemNonce.equals(nonce)) && (action != null) ) {
             // Normal browsers send value, IE sends button label
-            if ("shutdownImmediate".equals(action) || _("Shutdown immediately", ctx).equals(action)) {
+            if ("shutdownImmediate".equals(action) || _t("Shutdown immediately", ctx).equals(action)) {
                 if (ctx.hasWrapper())
                     ConfigServiceHandler.registerWrapperNotifier(ctx, Router.EXIT_HARD, false);
                 //ctx.router().shutdown(Router.EXIT_HARD); // never returns
                 ctx.router().shutdownGracefully(Router.EXIT_HARD); // give the UI time to respond
-            } else if ("cancelShutdown".equals(action) || _("Cancel shutdown", ctx).equals(action) ||
-                       _("Cancel restart", ctx).equals(action)) {
+            } else if ("cancelShutdown".equals(action) || _t("Cancel shutdown", ctx).equals(action) ||
+                       _t("Cancel restart", ctx).equals(action)) {
                 ctx.router().cancelGracefulShutdown();
-            } else if ("restartImmediate".equals(action) || _("Restart immediately", ctx).equals(action)) {
+            } else if ("restartImmediate".equals(action) || _t("Restart immediately", ctx).equals(action)) {
                 if (ctx.hasWrapper())
                     ConfigServiceHandler.registerWrapperNotifier(ctx, Router.EXIT_HARD_RESTART, false);
                 //ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
                 ctx.router().shutdownGracefully(Router.EXIT_HARD_RESTART); // give the UI time to respond
-            } else if ("restart".equals(action) || _("Restart", ctx).equals(action)) {
+            } else if ("restart".equals(action) || _t("Restart", ctx).equals(action)) {
                 if (ctx.hasWrapper())
                     ConfigServiceHandler.registerWrapperNotifier(ctx, Router.EXIT_GRACEFUL_RESTART, false);
                 ctx.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
-            } else if ("shutdown".equals(action) || _("Shutdown", ctx).equals(action)) {
+            } else if ("shutdown".equals(action) || _t("Shutdown", ctx).equals(action)) {
                 if (ctx.hasWrapper())
                     ConfigServiceHandler.registerWrapperNotifier(ctx, Router.EXIT_GRACEFUL, false);
                 ctx.router().shutdownGracefully();
@@ -62,13 +62,13 @@ public class ConfigRestartBean {
         if ((shuttingDown || restarting) && timeRemaining <= 5*1000) {
             buf.append("<h4>");
             if (restarting)
-                buf.append(_("Restart imminent", ctx));
+                buf.append(_t("Restart imminent", ctx));
             else
-                buf.append(_("Shutdown imminent", ctx));
+                buf.append(_t("Shutdown imminent", ctx));
             buf.append("</h4>");
         } else if (shuttingDown) {
             buf.append("<h4>");
-            buf.append(_("Shutdown in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
+            buf.append(_t("Shutdown in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
             int tuns = ctx.tunnelManager().getParticipatingCount();
             if (tuns > 0) {
                 buf.append("<br>").append(ngettext("Please wait for routing commitment to expire for {0} tunnel",
@@ -79,7 +79,7 @@ public class ConfigRestartBean {
             buttons(ctx, buf, urlBase, systemNonce, SET1);
         } else if (restarting) {
             buf.append("<h4>");
-            buf.append(_("Restart in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
+            buf.append(_t("Restart in {0}", DataHelper.formatDuration2(timeRemaining), ctx));
             int tuns = ctx.tunnelManager().getParticipatingCount();
             if (tuns > 0) {
                 buf.append("<br>").append(ngettext("Please wait for routing commitment to expire for {0} tunnel",
@@ -105,7 +105,7 @@ public class ConfigRestartBean {
             buf.append("<button type=\"submit\" name=\"action\" value=\"")
                .append(s[i]).append("\" class=\"")
                .append(s[i+1]).append("\" >")
-               .append(_(s[i+2], ctx)).append("</button>\n");
+               .append(_t(s[i+2], ctx)).append("</button>\n");
         }
         buf.append("</form>\n");
     }
@@ -126,11 +126,11 @@ public class ConfigRestartBean {
         return Long.MAX_VALUE/2;  // summaryframe.jsp adds a safety factor so we don't want to overflow...
     }
 
-    private static String _(String s, RouterContext ctx) {
+    private static String _t(String s, RouterContext ctx) {
         return Messages.getString(s, ctx);
     }
 
-    private static String _(String s, Object o, RouterContext ctx) {
+    private static String _t(String s, Object o, RouterContext ctx) {
         return Messages.getString(s, o, ctx);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java
index 4129db13689b2a06fa0aeba69b8dab207112d608..89a9d48eb174a1bceb92ce439c69932d3cc35831 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigServiceHandler.java
@@ -196,60 +196,60 @@ public class ConfigServiceHandler extends FormHandler {
     protected void processForm() {
         if (_action == null) return;
         
-        if (_("Shutdown gracefully").equals(_action)) {
+        if (_t("Shutdown gracefully").equals(_action)) {
             if (_context.hasWrapper())
                 registerWrapperNotifier(Router.EXIT_GRACEFUL, false);
             _context.router().shutdownGracefully();
-            addFormNotice(_("Graceful shutdown initiated"));
-        } else if (_("Shutdown immediately").equals(_action)) {
+            addFormNotice(_t("Graceful shutdown initiated"));
+        } else if (_t("Shutdown immediately").equals(_action)) {
             if (_context.hasWrapper())
                 registerWrapperNotifier(Router.EXIT_HARD, false);
             _context.router().shutdown(Router.EXIT_HARD);
-            addFormNotice(_("Shutdown immediately"));
-        } else if (_("Cancel graceful shutdown").equals(_action)) {
+            addFormNotice(_t("Shutdown immediately"));
+        } else if (_t("Cancel graceful shutdown").equals(_action)) {
             _context.router().cancelGracefulShutdown();
-            addFormNotice(_("Graceful shutdown cancelled"));
-        } else if (_("Graceful restart").equals(_action)) {
+            addFormNotice(_t("Graceful shutdown cancelled"));
+        } else if (_t("Graceful restart").equals(_action)) {
             // should have wrapper if restart button is visible
             if (_context.hasWrapper())
                 registerWrapperNotifier(Router.EXIT_GRACEFUL_RESTART, false);
             _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
-            addFormNotice(_("Graceful restart requested"));
-        } else if (_("Hard restart").equals(_action)) {
+            addFormNotice(_t("Graceful restart requested"));
+        } else if (_t("Hard restart").equals(_action)) {
             // should have wrapper if restart button is visible
             if (_context.hasWrapper())
                 registerWrapperNotifier(Router.EXIT_HARD_RESTART, false);
             _context.router().shutdown(Router.EXIT_HARD_RESTART);
-            addFormNotice(_("Hard restart requested"));
-        } else if (_("Rekey and Restart").equals(_action)) {
-            addFormNotice(_("Rekeying after graceful restart"));
+            addFormNotice(_t("Hard restart requested"));
+        } else if (_t("Rekey and Restart").equals(_action)) {
+            addFormNotice(_t("Rekeying after graceful restart"));
             registerWrapperNotifier(Router.EXIT_GRACEFUL_RESTART, true);
             _context.router().shutdownGracefully(Router.EXIT_GRACEFUL_RESTART);
-        } else if (_("Rekey and Shutdown").equals(_action)) {
-            addFormNotice(_("Rekeying after graceful shutdown"));
+        } else if (_t("Rekey and Shutdown").equals(_action)) {
+            addFormNotice(_t("Rekeying after graceful shutdown"));
             registerWrapperNotifier(Router.EXIT_GRACEFUL, true);
             _context.router().shutdownGracefully(Router.EXIT_GRACEFUL);
-        } else if (_("Run I2P on startup").equals(_action)) {
+        } else if (_t("Run I2P on startup").equals(_action)) {
             installService();
-        } else if (_("Don't run I2P on startup").equals(_action)) {
+        } else if (_t("Don't run I2P on startup").equals(_action)) {
             uninstallService();
-        } else if (_("Dump threads").equals(_action)) {
+        } else if (_t("Dump threads").equals(_action)) {
             try {
                 WrapperManager.requestThreadDump();
             } catch (Throwable t) {
                 addFormError("Warning: unable to contact the service manager - " + t.getMessage());
             }
             File wlog = LogsHelper.wrapperLogFile(_context);
-            addFormNotice(_("Threads dumped to {0}", wlog.getAbsolutePath()));
-        } else if (_("View console on startup").equals(_action)) {
+            addFormNotice(_t("Threads dumped to {0}", wlog.getAbsolutePath()));
+        } else if (_t("View console on startup").equals(_action)) {
             browseOnStartup(true);
-            addFormNotice(_("Console is to be shown on startup"));
-        } else if (_("Do not view console on startup").equals(_action)) {
+            addFormNotice(_t("Console is to be shown on startup"));
+        } else if (_t("Do not view console on startup").equals(_action)) {
             browseOnStartup(false);
-            addFormNotice(_("Console is not to be shown on startup"));
-        } else if (_("Force GC").equals(_action)) {
+            addFormNotice(_t("Console is not to be shown on startup"));
+        } else if (_t("Force GC").equals(_action)) {
             Runtime.getRuntime().gc();
-            addFormNotice(_("Full garbage collection requested"));
+            addFormNotice(_t("Full garbage collection requested"));
         } else {
             //addFormNotice("Blah blah blah.  whatever.  I'm not going to " + _action);
         }
@@ -258,18 +258,18 @@ public class ConfigServiceHandler extends FormHandler {
     private void installService() {
         try { 
             Runtime.getRuntime().exec("install_i2p_service_winnt.bat");
-            addFormNotice(_("Service installed"));
+            addFormNotice(_t("Service installed"));
         } catch (IOException ioe) {
-            addFormError(_("Warning: unable to install the service") + " - " + ioe.getMessage());
+            addFormError(_t("Warning: unable to install the service") + " - " + ioe.getMessage());
         }
     }
 
     private void uninstallService() {
         try { 
             Runtime.getRuntime().exec("uninstall_i2p_service_winnt.bat");
-            addFormNotice(_("Service removed"));
+            addFormNotice(_t("Service removed"));
         } catch (IOException ioe) {
-            addFormError(_("Warning: unable to remove the service") + " - " + ioe.getMessage());
+            addFormError(_t("Warning: unable to remove the service") + " - " + ioe.getMessage());
         }
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java
index 39dabd77cea8d80c33d5ff32c29b5d2be5efce89..86e63a65f6de613a58f6acdd3f9661e2467dbaeb 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHandler.java
@@ -113,16 +113,16 @@ public class ConfigStatsHandler extends FormHandler {
         changes.put(StatManager.PROP_STAT_FULL, "" + _isFull);
         _context.router().saveConfig(changes, null);
         if (!_stats.isEmpty())
-            addFormNotice(_("Stat filter and location updated successfully to") + ": " + stats.toString());
+            addFormNotice(_t("Stat filter and location updated successfully to") + ": " + stats.toString());
         if (fullChanged) {
             if (_isFull)
-                addFormNotice(_("Full statistics enabled"));
+                addFormNotice(_t("Full statistics enabled"));
             else
-                addFormNotice(_("Full statistics disabled"));
-            addFormNotice(_("Restart required to take effect"));
+                addFormNotice(_t("Full statistics disabled"));
+            addFormNotice(_t("Restart required to take effect"));
         }
         if (graphsChanged)
-            addFormNoticeNoEscape(_("Graph list updated, may take up to 60s to be reflected on the {0}Graphs Page{1}", "<a href=\"graphs\">", "</a>"));
+            addFormNoticeNoEscape(_t("Graph list updated, may take up to 60s to be reflected on the {0}Graphs Page{1}", "<a href=\"graphs\">", "</a>"));
     }
     
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
index 74cd64afb70508f3837237db8f96563e86dc37cf..1f155442a3935571606f6a9e1a3eeb9bf193e79b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigStatsHelper.java
@@ -176,8 +176,8 @@ public class ConfigStatsHelper extends HelperBase {
      */
     private class AlphaComparator implements Comparator<String> {
         public int compare(String lhs, String rhs) {
-            String lname = _(lhs);
-            String rname = _(rhs);
+            String lname = _t(lhs);
+            String rname = _t(rhs);
             return Collator.getInstance().compare(lname, rname);
         }
     }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java
index f6174755ed3322093ba2d22b6721104efa8725e9..7747d22b2eb118551063d7e8b6a482d7e893bb81 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigSummaryHandler.java
@@ -19,30 +19,30 @@ public class ConfigSummaryHandler extends FormHandler {
     protected void processForm() {
         if (_action == null) return;
         String group = getJettyString("group");
-        boolean deleting = _action.equals(_("Delete selected"));
-        boolean adding = _action.equals(_("Add item"));
-        boolean saving = _action.equals(_("Save order"));
+        boolean deleting = _action.equals(_t("Delete selected"));
+        boolean adding = _action.equals(_t("Add item"));
+        boolean saving = _action.equals(_t("Save order"));
         boolean moving = _action.startsWith("move_");
-        if (_action.equals(_("Save")) && "0".equals(group)) {
+        if (_action.equals(_t("Save")) && "0".equals(group)) {
             try {
                 int refreshInterval = Integer.parseInt(getJettyString("refreshInterval"));
                 if (refreshInterval >= CSSHelper.MIN_REFRESH) {
                     _context.router().saveConfig(CSSHelper.PROP_REFRESH, "" + refreshInterval);
-                    addFormNotice(_("Refresh interval changed"));
+                    addFormNotice(_t("Refresh interval changed"));
                 } else
-                    addFormError(_("Refresh interval must be at least {0} seconds", CSSHelper.MIN_REFRESH));
+                    addFormError(_t("Refresh interval must be at least {0} seconds", CSSHelper.MIN_REFRESH));
             } catch (java.lang.NumberFormatException e) {
-                addFormError(_("Refresh interval must be a number"));
+                addFormError(_t("Refresh interval must be a number"));
                 return;
             }
-        } else if (_action.equals(_("Restore full default"))) {
+        } else if (_action.equals(_t("Restore full default"))) {
             _context.router().saveConfig(SummaryHelper.PROP_SUMMARYBAR + "default", SummaryHelper.DEFAULT_FULL);
-            addFormNotice(_("Full summary bar default restored.") + " " +
-                          _("Summary bar will refresh shortly."));
-        } else if (_action.equals(_("Restore minimal default"))) {
+            addFormNotice(_t("Full summary bar default restored.") + " " +
+                          _t("Summary bar will refresh shortly."));
+        } else if (_action.equals(_t("Restore minimal default"))) {
             _context.router().saveConfig(SummaryHelper.PROP_SUMMARYBAR + "default", SummaryHelper.DEFAULT_MINIMAL);
-            addFormNotice(_("Minimal summary bar default restored.") + " " +
-                          _("Summary bar will refresh shortly."));
+            addFormNotice(_t("Minimal summary bar default restored.") + " " +
+                          _t("Summary bar will refresh shortly."));
         } else if (adding || deleting || saving || moving) {
             Map<Integer, String> sections = new TreeMap<Integer, String>();
             for (Object o : _settings.keySet()) {
@@ -58,19 +58,19 @@ public class ConfigSummaryHandler extends FormHandler {
                     int order = Integer.parseInt(v);
                     sections.put(order, k);
                 } catch (java.lang.NumberFormatException e) {
-                    addFormError(_("Order must be an integer"));
+                    addFormError(_t("Order must be an integer"));
                     return;
                 }
             }
             if (adding) {
                 String name = getJettyString("name");
                 if (name == null || name.length() <= 0) {
-                    addFormError(_("No section selected"));
+                    addFormError(_t("No section selected"));
                     return;
                 }
                 String order = getJettyString("order");
                 if (order == null || order.length() <= 0) {
-                    addFormError(_("No order entered"));
+                    addFormError(_t("No order entered"));
                     return;
                 }
                 name = DataHelper.escapeHTML(name).replace(",", "&#44;");
@@ -78,9 +78,9 @@ public class ConfigSummaryHandler extends FormHandler {
                 try {
                     int ki = Integer.parseInt(order);
                     sections.put(ki, name);
-                    addFormNotice(_("Added") + ": " + name);
+                    addFormNotice(_t("Added") + ": " + name);
                 } catch (java.lang.NumberFormatException e) {
-                    addFormError(_("Order must be an integer"));
+                    addFormError(_t("Order must be an integer"));
                     return;
                 }
             } else if (deleting) {
@@ -104,7 +104,7 @@ public class ConfigSummaryHandler extends FormHandler {
                     if (toDelete.contains(i)) {
                         String removedName = sections.get(i);
                         iter.remove();
-                        addFormNotice(_("Removed") + ": " + removedName);
+                        addFormNotice(_t("Removed") + ": " + removedName);
                     }
                 }
             } else if (moving) {
@@ -126,17 +126,17 @@ public class ConfigSummaryHandler extends FormHandler {
                         sections.put(i + n, sections.get(i));
                         sections.put(i, temp);
                     }
-                    addFormNotice(_("Moved") + ": " + sections.get(to));
+                    addFormNotice(_t("Moved") + ": " + sections.get(to));
                 } catch (java.lang.NumberFormatException e) {
-                    addFormError(_("Order must be an integer"));
+                    addFormError(_t("Order must be an integer"));
                     return;
                 }
             }
             SummaryHelper.saveSummaryBarSections(_context, "default", sections);
-            addFormNotice(_("Saved order of sections.") + " " +
-                          _("Summary bar will refresh shortly."));
+            addFormNotice(_t("Saved order of sections.") + " " +
+                          _t("Summary bar will refresh shortly."));
         } else {
-            //addFormError(_("Unsupported"));
+            //addFormError(_t("Unsupported"));
         }
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java
index ad444c9a6a61b94279ab8eadab252834f6748086..bbc93dab28b7b63ad5532cb4360f284287f5963a 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHandler.java
@@ -27,7 +27,7 @@ public class ConfigTunnelsHandler extends FormHandler {
     }
     
     public void setShouldsave(String moo) { 
-        if ( (moo != null) && (moo.equals(_("Save changes"))) )
+        if ( (moo != null) && (moo.equals(_t("Save changes"))) )
             _shouldSave = true; 
     }
     
@@ -127,14 +127,14 @@ public class ConfigTunnelsHandler extends FormHandler {
         if (updated > 0)
             // the count isn't really correct anyway, since we don't check for actual changes
             //addFormNotice("Updated settings for " + updated + " pools.");
-            addFormNotice(_("Updated settings for all pools."));
+            addFormNotice(_t("Updated settings for all pools."));
         
         if (saveRequired) {
             boolean saved = _context.router().saveConfig(changes, null);
             if (saved) 
-                addFormNotice(_("Exploratory tunnel configuration saved successfully."));
+                addFormNotice(_t("Exploratory tunnel configuration saved successfully."));
             else
-                addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
+                addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs."));
         }
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
index d66c44777a350ab9d232bd796473eb6113b7364c..6e93602f4a441f280b6e6d73f9b9e4ad6a239448 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigTunnelsHelper.java
@@ -30,7 +30,7 @@ public class ConfigTunnelsHelper extends HelperBase {
         TunnelPoolSettings exploratoryIn = _context.tunnelManager().getInboundSettings();
         TunnelPoolSettings exploratoryOut = _context.tunnelManager().getOutboundSettings();
         
-        renderForm(buf, 0, "exploratory", _("Exploratory tunnels"), exploratoryIn, exploratoryOut);
+        renderForm(buf, 0, "exploratory", _t("Exploratory tunnels"), exploratoryIn, exploratoryOut);
         
         cur = 1;
         for (Destination dest : clients) {
@@ -46,7 +46,7 @@ public class ConfigTunnelsHelper extends HelperBase {
                 name = dest.calculateHash().toBase64().substring(0,6);
         
             String prefix = dest.calculateHash().toBase64().substring(0,4);
-            renderForm(buf, cur, prefix, _("Client tunnels for {0}", DataHelper.escapeHTML(_(name))), in, out);
+            renderForm(buf, cur, prefix, _t("Client tunnels for {0}", DataHelper.escapeHTML(_t(name))), in, out);
             cur++;
         }
         
@@ -75,26 +75,26 @@ public class ConfigTunnelsHelper extends HelperBase {
             in.getLength() + in.getLengthVariance() <= 0 ||
             out.getLength() <= 0 ||
             out.getLength() + out.getLengthVariance() <= 0)
-            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("ANONYMITY WARNING - Settings include 0-hop tunnels.") + "</font></th></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _t("ANONYMITY WARNING - Settings include 0-hop tunnels.") + "</font></th></tr>");
         else if (in.getLength() <= 1 ||
             in.getLength() + in.getLengthVariance() <= 1 ||
             out.getLength() <= 1 ||
             out.getLength() + out.getLengthVariance() <= 1)
-            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("ANONYMITY WARNING - Settings include 1-hop tunnels.") + "</font></th></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _t("ANONYMITY WARNING - Settings include 1-hop tunnels.") + "</font></th></tr>");
         if (in.getLength() + Math.abs(in.getLengthVariance()) >= WARN_LENGTH ||
             out.getLength() + Math.abs(out.getLengthVariance()) >= WARN_LENGTH)
-            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include very long tunnels.") + "</font></th></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _t("PERFORMANCE WARNING - Settings include very long tunnels.") + "</font></th></tr>");
         if (in.getTotalQuantity() >= WARN_QUANTITY ||
             out.getTotalQuantity() >= WARN_QUANTITY)
-            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _("PERFORMANCE WARNING - Settings include high tunnel quantities.") + "</font></th></tr>");
+            buf.append("<tr><th colspan=\"3\"><font color=\"red\">" + _t("PERFORMANCE WARNING - Settings include high tunnel quantities.") + "</font></th></tr>");
 
-        buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\">&nbsp;&nbsp;" + _("Inbound") + "</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\">&nbsp;&nbsp;" + _("Outbound") + "</th></tr>\n");
+        buf.append("<tr><th></th><th><img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"Inbound Tunnels\">&nbsp;&nbsp;" + _t("Inbound") + "</th><th><img src=\"/themes/console/images/outbound.png\" alt=\"Outbound Tunnels\" title=\"Outbound\">&nbsp;&nbsp;" + _t("Outbound") + "</th></tr>\n");
 
 //        buf.append("<tr><th></th><th>Inbound</th><th>Outbound</th></tr>\n");
         
         // tunnel depth
         int maxLength = advanced ? MAX_ADVANCED_LENGTH : MAX_LENGTH;
-        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Length") + ":</td>\n");
+        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _t("Length") + ":</td>\n");
         buf.append("<td align=\"center\"><select name=\"").append(index).append(".depthInbound\">\n");
         int now = in.getLength();
         renderOptions(buf, 0, maxLength, now, "", HOP);
@@ -111,7 +111,7 @@ public class ConfigTunnelsHelper extends HelperBase {
         buf.append("</tr>\n");
 
         // tunnel depth variance
-        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Randomization") + ":</td>\n");
+        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _t("Randomization") + ":</td>\n");
         buf.append("<td align=\"center\"><select name=\"").append(index).append(".varianceInbound\">\n");
         now = in.getLengthVariance();
         renderOptions(buf, 0, 0, now, "", HOP);
@@ -136,7 +136,7 @@ public class ConfigTunnelsHelper extends HelperBase {
 
         // tunnel quantity
         int maxQuantity = advanced ? MAX_ADVANCED_QUANTITY : MAX_QUANTITY;
-        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Quantity") + ":</td>\n");
+        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _t("Quantity") + ":</td>\n");
         buf.append("<td align=\"center\"><select name=\"").append(index).append(".quantityInbound\">\n");
         now = in.getQuantity();
         renderOptions(buf, 1, maxQuantity, now, "", TUNNEL);
@@ -154,7 +154,7 @@ public class ConfigTunnelsHelper extends HelperBase {
 
         // tunnel backup quantity
         int maxBQuantity = advanced ? MAX_ADVANCED_BACKUP_QUANTITY : MAX_BACKUP_QUANTITY;
-        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Backup quantity") + ":</td>\n");
+        buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _t("Backup quantity") + ":</td>\n");
         buf.append("<td align=\"center\"><select name=\"").append(index).append(".backupInbound\">\n");
         now = in.getBackupQuantity();
         renderOptions(buf, 0, maxBQuantity, now, "", TUNNEL);
@@ -176,7 +176,7 @@ public class ConfigTunnelsHelper extends HelperBase {
         // And let's not display them at all unless they have contents, which should be rare.
         Properties props = in.getUnknownOptions();
         if (!props.isEmpty()) {
-            buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Inbound options") + ":</td>\n" +
+            buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _t("Inbound options") + ":</td>\n" +
                        "<td colspan=\"2\" align=\"center\"><input name=\"").append(index);
             buf.append(".inboundOptions\" type=\"text\" size=\"32\" disabled=\"disabled\" " +
                        "value=\"");
@@ -188,7 +188,7 @@ public class ConfigTunnelsHelper extends HelperBase {
         }
         props = out.getUnknownOptions();
         if (!props.isEmpty()) {
-            buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _("Outbound options") + ":</td>\n" +
+            buf.append("<tr><td align=\"right\" class=\"mediumtags\">" + _t("Outbound options") + ":</td>\n" +
                        "<td colspan=\"2\" align=\"center\"><input name=\"").append(index);
             buf.append(".outboundOptions\" type=\"text\" size=\"32\" disabled=\"disabled\" " +
                        "value=\"");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
index 7a9b2c406b083afe31df2ea7b36b127712ba5ce7..b5b6a54375cd72c433928dc3500db022429e92a2 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHandler.java
@@ -16,9 +16,9 @@ public class ConfigUIHandler extends FormHandler {
     protected void processForm() {
         if (_shouldSave) {
             saveChanges();
-        } else if (_action.equals(_("Delete selected"))) {
+        } else if (_action.equals(_t("Delete selected"))) {
             delUser();
-        } else if (_action.equals(_("Add user"))) {
+        } else if (_action.equals(_t("Add user"))) {
             addUser();
         }
     }
@@ -60,29 +60,29 @@ public class ConfigUIHandler extends FormHandler {
         boolean ok = _context.router().saveConfig(changes, removes);
         if (ok) {
             if (!oldTheme.equals(_config))
-                addFormNoticeNoEscape(_("Theme change saved.") +
+                addFormNoticeNoEscape(_t("Theme change saved.") +
                               " <a href=\"configui\">" +
-                              _("Refresh the page to view.") +
+                              _t("Refresh the page to view.") +
                               "</a>");
             if (oldForceMobileConsole != _forceMobileConsole)
-                addFormNoticeNoEscape(_("Mobile console option saved.") +
+                addFormNoticeNoEscape(_t("Mobile console option saved.") +
                               " <a href=\"configui\">" +
-                              _("Refresh the page to view.") +
+                              _t("Refresh the page to view.") +
                               "</a>");
         } else {
-            addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs."));
         }
     }
 
     private void addUser() {
         String name = getJettyString("name");
         if (name == null || name.length() <= 0) {
-            addFormError(_("No user name entered"));
+            addFormError(_t("No user name entered"));
             return;
         }
         String pw = getJettyString("nofilter_pw");
         if (pw == null || pw.length() <= 0) {
-            addFormError(_("No password entered"));
+            addFormError(_t("No password entered"));
             return;
         }
         ConsolePasswordManager mgr = new ConsolePasswordManager(_context);
@@ -90,10 +90,10 @@ public class ConfigUIHandler extends FormHandler {
         if (mgr.saveMD5(RouterConsoleRunner.PROP_CONSOLE_PW, RouterConsoleRunner.JETTY_REALM, name, pw)) {
             if (!_context.getBooleanProperty(RouterConsoleRunner.PROP_PW_ENABLE))
                 _context.router().saveConfig(RouterConsoleRunner.PROP_PW_ENABLE, "true");
-            addFormNotice(_("Added user {0}", name));
-            addFormError(_("Restart required to take effect"));
+            addFormNotice(_t("Added user {0}", name));
+            addFormError(_t("Restart required to take effect"));
         } else {
-            addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
+            addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs."));
         }
     }
 
@@ -108,13 +108,13 @@ public class ConfigUIHandler extends FormHandler {
                 continue;
             k = k.substring(7);
             if (mgr.remove(RouterConsoleRunner.PROP_CONSOLE_PW, k)) {
-                addFormNotice(_("Removed user {0}", k));
+                addFormNotice(_t("Removed user {0}", k));
                 success = true;
             } else {
-                addFormError(_("Error saving the configuration (applied but not saved) - please see the error logs."));
+                addFormError(_t("Error saving the configuration (applied but not saved) - please see the error logs."));
             }
         }
         if (success)
-            addFormError(_("Restart required to take effect"));
+            addFormError(_t("Restart required to take effect"));
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
index 294cc6dc0f93fa4b59955e384f5f9771280d02cb..1432de98b9c409a5798a5d315bcc4a16820a8cb4 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUIHelper.java
@@ -15,14 +15,14 @@ public class ConfigUIHelper extends HelperBase {
             buf.append("<input type=\"radio\" class=\"optbox\" name=\"theme\" ");
             if (theme.equals(current))
                 buf.append("checked=\"checked\" ");
-            buf.append("value=\"").append(theme).append("\">").append(_(theme)).append("<br>\n");
+            buf.append("value=\"").append(theme).append("\">").append(_t(theme)).append("<br>\n");
         }
         boolean universalTheming = _context.getBooleanProperty(CSSHelper.PROP_UNIVERSAL_THEMING);
         buf.append("<input type=\"checkbox\" name=\"universalTheming\" ");
         if (universalTheming)
             buf.append("checked=\"checked\" ");
         buf.append("value=\"1\">")
-           .append(_("Set theme universally across all apps"))
+           .append(_t("Set theme universally across all apps"))
            .append("<br>\n");
         return buf.toString();
     }
@@ -34,7 +34,7 @@ public class ConfigUIHelper extends HelperBase {
         if (forceMobileConsole)
             buf.append("checked=\"checked\" ");
         buf.append("value=\"1\">")
-           .append(_("Force the mobile console to be used"))
+           .append(_t("Force the mobile console to be used"))
            .append("<br>\n");
         return buf.toString();
     }
@@ -163,13 +163,13 @@ public class ConfigUIHelper extends HelperBase {
         buf.append("<table>");
         if (userpw.isEmpty()) {
             buf.append("<tr><td colspan=\"3\">");
-            buf.append(_("Add a user and password to enable."));
+            buf.append(_t("Add a user and password to enable."));
             buf.append("</td></tr>");
         } else {
             buf.append("<tr><th>")
-               .append(_("Remove"))
+               .append(_t("Remove"))
                .append("</th><th>")
-               .append(_("User Name"))
+               .append(_t("User Name"))
                .append("</th><th>&nbsp;</th></tr>\n");
             for (String name : userpw.keySet()) {
                 buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_")
@@ -180,10 +180,10 @@ public class ConfigUIHelper extends HelperBase {
             }
         }
         buf.append("<tr><td align=\"center\"><b>")
-           .append(_("Add")).append(":</b>" +
+           .append(_t("Add")).append(":</b>" +
                    "</td><td align=\"left\"><input type=\"text\" name=\"name\">" +
                    "</td><td align=\"left\"><b>");
-        buf.append(_("Password")).append(":</b> " +
+        buf.append(_t("Password")).append(":</b> " +
                    "<input type=\"password\" size=\"40\" name=\"nofilter_pw\"></td></tr>" +
                    "</table>\n");
         return buf.toString();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
index ef3fb4eb18061eb0840437d91129cdb6a1642664..744d996835addb0e419863bd4fb6f5e4bc718e5b 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHandler.java
@@ -34,10 +34,12 @@ public class ConfigUpdateHandler extends FormHandler {
 //  public static final String DEFAULT_NEWS_URL = "http://dev.i2p.net/cgi-bin/cvsweb.cgi/i2p/news.xml?rev=HEAD";
     /** very old default */
     public static final String OLD_DEFAULT_NEWS_URL = "http://complication.i2p/news.xml";
-    /** old default */
+    /** older default */
     public static final String DEFAULT_NEWS_URL = "http://echelon.i2p/i2p/news.xml";
-    /** current default */
-    public static final String DEFAULT_NEWS_URL_SU3 = "http://echelon.i2p/news/news.su3";
+    /** old default */
+    public static final String OLD_DEFAULT_NEWS_URL_SU3 = "http://echelon.i2p/news/news.su3";
+    /** current default, i2pnews.i2p, run by echelon */
+    public static final String DEFAULT_NEWS_URL_SU3 = "http://tc73n4kivdroccekirco7rhgxdg5f3cjvbaapabupeyzrqwv5guq.b32.i2p/news.su3";
     public static final String PROP_REFRESH_FREQUENCY = "router.newsRefreshFrequency";
     public static final long DEFAULT_REFRESH_FREQ = 36*60*60*1000l;
     public static final String DEFAULT_REFRESH_FREQUENCY = Long.toString(DEFAULT_REFRESH_FREQ);
@@ -155,14 +157,14 @@ public class ConfigUpdateHandler extends FormHandler {
     protected void processForm() {
         if (_action == null)
             return;
-        if (_action.equals(_("Check for updates"))) {
+        if (_action.equals(_t("Check for updates"))) {
             ConsoleUpdateManager mgr = UpdateHandler.updateManager(_context);
             if (mgr == null) {
                 addFormError("Update manager not registered, cannot check");
                 return;
             }
             if (mgr.isUpdateInProgress() || mgr.isCheckInProgress()) {
-                addFormError(_("Update or check already in progress"));
+                addFormError(_t("Update or check already in progress"));
                 return;
             }
 
@@ -172,7 +174,7 @@ public class ConfigUpdateHandler extends FormHandler {
             if (shouldProxy && proxyPort == ConfigUpdateHandler.DEFAULT_PROXY_PORT_INT &&
                 proxyHost.equals(ConfigUpdateHandler.DEFAULT_PROXY_HOST) &&
                 _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) < 0) {
-                addFormError(_("HTTP client proxy tunnel must be running"));
+                addFormError(_t("HTTP client proxy tunnel must be running"));
                 return;
             }
 
@@ -185,19 +187,19 @@ public class ConfigUpdateHandler extends FormHandler {
                 a3 = mgr.checkAvailable(ROUTER_UNSIGNED, 40*1000) != null;
             if (a1 || a2 || a3) {
                 if ( (_updatePolicy == null) || (!_updatePolicy.equals("notify")) )
-                    addFormNotice(_("Update available, attempting to download now"));
+                    addFormNotice(_t("Update available, attempting to download now"));
                 else
-                    addFormNotice(_("Update available, click button on left to download"));
+                    addFormNotice(_t("Update available, click button on left to download"));
                 // So that update() will post a status to the summary bar before we reload
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException ie) {}
             } else
-                addFormNotice(_("No update available"));
+                addFormNotice(_t("No update available"));
             return;
         }
 
-        if (!_action.equals(_("Save")))
+        if (!_action.equals(_t("Save")))
             return;
 
         Map<String, String> changes = new HashMap<String, String>();
@@ -211,26 +213,26 @@ public class ConfigUpdateHandler extends FormHandler {
                     changes.put(PROP_NEWS_URL, _newsURL);
                     // this invalidates the news
                     changes.put(NewsHelper.PROP_LAST_CHECKED, "0");
-                    addFormNotice(_("Updating news URL to {0}", _newsURL));
+                    addFormNotice(_t("Updating news URL to {0}", _newsURL));
                 } else {
                     addFormError("Changing news URL disabled");
                 }
             }
         }
         
-        if (_proxyHost != null && _proxyHost.length() > 0 && !_proxyHost.equals(_("internal"))) {
+        if (_proxyHost != null && _proxyHost.length() > 0 && !_proxyHost.equals(_t("internal"))) {
             String oldHost = _context.router().getConfigSetting(PROP_PROXY_HOST);
             if ( (oldHost == null) || (!_proxyHost.equals(oldHost)) ) {
                 changes.put(PROP_PROXY_HOST, _proxyHost);
-                addFormNotice(_("Updating proxy host to {0}", _proxyHost));
+                addFormNotice(_t("Updating proxy host to {0}", _proxyHost));
             }
         }
         
-        if (_proxyPort != null && _proxyPort.length() > 0 && !_proxyPort.equals(_("internal"))) {
+        if (_proxyPort != null && _proxyPort.length() > 0 && !_proxyPort.equals(_t("internal"))) {
             String oldPort = _context.router().getConfigSetting(PROP_PROXY_PORT);
             if ( (oldPort == null) || (!_proxyPort.equals(oldPort)) ) {
                 changes.put(PROP_PROXY_PORT, _proxyPort);
-                addFormNotice(_("Updating proxy port to {0}", _proxyPort));
+                addFormNotice(_t("Updating proxy port to {0}", _proxyPort));
             }
         }
         
@@ -246,15 +248,15 @@ public class ConfigUpdateHandler extends FormHandler {
         try { oldFreq = Long.parseLong(oldFreqStr); } catch (NumberFormatException nfe) {}
         if (_refreshFrequency != oldFreq) {
             changes.put(PROP_REFRESH_FREQUENCY, ""+_refreshFrequency);
-            addFormNoticeNoEscape(_("Updating refresh frequency to {0}",
-                            _refreshFrequency <= 0 ? _("Never") : DataHelper.formatDuration2(_refreshFrequency)));
+            addFormNoticeNoEscape(_t("Updating refresh frequency to {0}",
+                            _refreshFrequency <= 0 ? _t("Never") : DataHelper.formatDuration2(_refreshFrequency)));
         }
 
         if ( (_updatePolicy != null) && (_updatePolicy.length() > 0) ) {
             String oldPolicy = _context.router().getConfigSetting(PROP_UPDATE_POLICY);
             if ( (oldPolicy == null) || (!_updatePolicy.equals(oldPolicy)) ) {
                 changes.put(PROP_UPDATE_POLICY, _updatePolicy);
-                addFormNotice(_("Updating update policy to {0}", _updatePolicy));
+                addFormNotice(_t("Updating update policy to {0}", _updatePolicy));
             }
         }
 
@@ -263,7 +265,7 @@ public class ConfigUpdateHandler extends FormHandler {
             String oldURL = _context.router().getConfigSetting(PROP_UPDATE_URL);
             if ( (oldURL == null) || (!_updateURL.equals(oldURL)) ) {
                 changes.put(PROP_UPDATE_URL, _updateURL);
-                addFormNotice(_("Updating update URLs."));
+                addFormNotice(_t("Updating update URLs."));
             }
         }
 
@@ -275,7 +277,7 @@ public class ConfigUpdateHandler extends FormHandler {
                 // note that keys are not validated here and no console error message will be generated
                 if (isAdvanced()) {
                     changes.put(PROP_TRUSTED_KEYS, _trustedKeys);
-                    addFormNotice(_("Updating trusted keys."));
+                    addFormNotice(_t("Updating trusted keys."));
                 } else {
                     addFormError("Changing trusted keys disabled");
                 }
@@ -287,7 +289,7 @@ public class ConfigUpdateHandler extends FormHandler {
             if ( (oldURL == null) || (!_zipURL.equals(oldURL)) ) {
                 if (isAdvanced()) {
                     changes.put(PROP_ZIP_URL, _zipURL);
-                    addFormNotice(_("Updating unsigned update URL to {0}", _zipURL));
+                    addFormNotice(_t("Updating unsigned update URL to {0}", _zipURL));
                 } else {
                     addFormError("Changing unsigned update URL disabled");
                 }
@@ -299,7 +301,7 @@ public class ConfigUpdateHandler extends FormHandler {
             if ( (oldURL == null) || (!_devSU3URL.equals(oldURL)) ) {
                 if (isAdvanced()) {
                     changes.put(PROP_DEV_SU3_URL, _devSU3URL);
-                    addFormNotice(_("Updating signed development build URL to {0}", _devSU3URL));
+                    addFormNotice(_t("Updating signed development build URL to {0}", _devSU3URL));
                 } else {
                     addFormError("Changing signed update URL disabled");
                 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java
index c5c13c0aa748d502c8a6a55b6394f99d29c95c9b..93644982f8f87b80bbb29c34873f51e24d1c34d9 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigUpdateHelper.java
@@ -34,7 +34,8 @@ public class ConfigUpdateHelper extends HelperBase {
     public static String getNewsURL(I2PAppContext ctx) {
         String url = ctx.getProperty(ConfigUpdateHandler.PROP_NEWS_URL);
         if (url != null && !url.equals(ConfigUpdateHandler.OLD_DEFAULT_NEWS_URL) &&
-            !url.equals(ConfigUpdateHandler.DEFAULT_NEWS_URL))
+            !url.equals(ConfigUpdateHandler.DEFAULT_NEWS_URL) &&
+            !url.equals(ConfigUpdateHandler.OLD_DEFAULT_NEWS_URL_SU3))
             return url;
         else
             return ConfigUpdateHandler.DEFAULT_NEWS_URL_SU3;
@@ -50,13 +51,13 @@ public class ConfigUpdateHelper extends HelperBase {
 
     public String getProxyHost() {
         if (isInternal())
-            return _("internal") + "\" readonly=\"readonly";
+            return _t("internal") + "\" readonly=\"readonly";
         return _context.getProperty(ConfigUpdateHandler.PROP_PROXY_HOST, ConfigUpdateHandler.DEFAULT_PROXY_HOST);
     }
 
     public String getProxyPort() {
         if (isInternal())
-            return _("internal") + "\" readonly=\"readonly";
+            return _t("internal") + "\" readonly=\"readonly";
         return Integer.toString(ConfigUpdateHandler.proxyPort(_context));
     }
 
@@ -126,9 +127,9 @@ public class ConfigUpdateHelper extends HelperBase {
                 buf.append("\" selected=\"selected");
             
             if (PERIODS[i] == -1)
-                buf.append("\">").append(_("Never")).append("</option>\n");
+                buf.append("\">").append(_t("Never")).append("</option>\n");
             else
-                buf.append("\">").append(_("Every")).append(' ').append(DataHelper.formatDuration2(PERIODS[i])).append("</option>\n");
+                buf.append("\">").append(_t("Every")).append(' ').append(DataHelper.formatDuration2(PERIODS[i])).append("</option>\n");
         }
         buf.append("</select>\n");
         return buf.toString();
@@ -146,14 +147,14 @@ public class ConfigUpdateHelper extends HelperBase {
         buf.append("<option value=\"notify\"");
         if ("notify".equals(policy) || _dontInstall)
             buf.append(" selected=\"selected\"");
-        buf.append('>').append(_("Notify only")).append("</option>");
+        buf.append('>').append(_t("Notify only")).append("</option>");
 
         buf.append("<option value=\"download\"");
         if (_dontInstall)
             buf.append(" disabled=\"disabled\"");
         else if ("download".equals(policy))
             buf.append(" selected=\"selected\"");
-        buf.append('>').append(_("Download and verify only")).append("</option>");
+        buf.append('>').append(_t("Download and verify only")).append("</option>");
         
         if (_context.hasWrapper()) {
             buf.append("<option value=\"install\"");
@@ -161,7 +162,7 @@ public class ConfigUpdateHelper extends HelperBase {
                 buf.append(" disabled=\"disabled\"");
             else if ("install".equals(policy))
                 buf.append(" selected=\"selected\"");
-            buf.append('>').append(_("Download, verify, and restart")).append("</option>");
+            buf.append('>').append(_t("Download, verify, and restart")).append("</option>");
         }
         
         buf.append("</select>\n");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/EventLogHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/EventLogHelper.java
index 492c006e2b953939db1c9360608b74363f48a7f8..f42e1cd6e25d1a6fa7a7e9210e2b12143ff85813 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/EventLogHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/EventLogHelper.java
@@ -66,7 +66,7 @@ public class EventLogHelper extends FormHandler {
     public void setContextId(String contextId) {
         super.setContextId(contextId);
         for (int i = 0; i < _events.length; i += 2) {
-            _xevents.put(_events[i], _(_events[i + 1]));
+            _xevents.put(_events[i], _t(_events[i + 1]));
         }
     }
     
@@ -99,27 +99,27 @@ public class EventLogHelper extends FormHandler {
         // So just use the "shared/console nonce".
         String nonce = CSSHelper.getNonce();
         try {
-            _out.write("<br><h3>" + _("Display Events") + "</h3>");
+            _out.write("<br><h3>" + _t("Display Events") + "</h3>");
             _out.write("<form action=\"events\" method=\"POST\">\n" +
                        "<input type=\"hidden\" name=\"action\" value=\"save\">\n" +
                        "<input type=\"hidden\" name=\"nonce\" value=\"" + nonce + "\" >\n");
-            _out.write(_("Events since") + ": <select name=\"from\">");
+            _out.write(_t("Events since") + ": <select name=\"from\">");
             for (int i = 0; i < _times.length; i++) {
                 writeOption(_times[i]);
             }
             _out.write("</select><br>");
-            _out.write(_("Event type") + ": <select name=\"type\">");
+            _out.write(_t("Event type") + ": <select name=\"type\">");
             // sorted by translated display string
             Map<String, String> events = new TreeMap<String, String>(Collator.getInstance());
             for (int i = 0; i < _events.length; i += 2) {
                 events.put(_xevents.get(_events[i]), _events[i]);
             }
-            writeOption(_("All events"), ALL);
+            writeOption(_t("All events"), ALL);
             for (Map.Entry<String, String> e : events.entrySet()) {
                 writeOption(e.getKey(), e.getValue());
             }
             _out.write("</select>" +
-                       "<hr><div class=\"formaction\"><input type=\"submit\" class=\"accept\" value=\"" + _("Filter events") + "\"></div></form>");
+                       "<hr><div class=\"formaction\"><input type=\"submit\" class=\"accept\" value=\"" + _t("Filter events") + "\"></div></form>");
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
@@ -145,7 +145,7 @@ public class EventLogHelper extends FormHandler {
              _out.write(" selected=\"selected\"");
          _out.write(">");
          if (age == 0)
-             _out.write(_("All events"));
+             _out.write(_t("All events"));
          else
              _out.write(DataHelper.formatDuration2(age));
          _out.write("</option>\n");
@@ -167,21 +167,21 @@ public class EventLogHelper extends FormHandler {
         if (events.isEmpty()) {
             if (isAll) {
                 if (_age == 0)
-                    return _("No events found");
-                return _("No events found in previous {0}", DataHelper.formatDuration2(_age));
+                    return _t("No events found");
+                return _t("No events found in previous {0}", DataHelper.formatDuration2(_age));
             }
             if (_age == 0)
-                return _("No \"{0}\" events found", xev);
-            return _("No \"{0}\" events found in previous {1}", xev, DataHelper.formatDuration2(_age));
+                return _t("No \"{0}\" events found", xev);
+            return _t("No \"{0}\" events found in previous {1}", xev, DataHelper.formatDuration2(_age));
         }
         StringBuilder buf = new StringBuilder(2048);
         buf.append("<table><tr><th>");
-        buf.append(_("Time"));
+        buf.append(_t("Time"));
         buf.append("</th><th>");
         if (isAll) {
-            buf.append(_("Event"));
+            buf.append(_t("Event"));
             buf.append("</th><th>");
-            buf.append(_("Details"));
+            buf.append(_t("Details"));
         } else {
             buf.append(xev);
         }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java
index a56f8f7ad18af4405035525731e72974d157c915..d4bd1d2ff9695d92236e524dbef21aeebdc6d6c8 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/FormHandler.java
@@ -23,6 +23,7 @@ public abstract class FormHandler {
     protected RouterContext _context;
     protected Log _log;
     /** Not for multipart/form-data, will be null */
+    @SuppressWarnings("rawtypes")
     protected Map _settings;
     /** Only for multipart/form-data. Warning, parameters are NOT XSS filtered */
     protected RequestWrapper _requestWrapper;
@@ -63,6 +64,7 @@ public abstract class FormHandler {
      *
      * @since 0.9.4 consolidated from numerous FormHandlers
      */
+    @SuppressWarnings({"rawtypes", "unchecked"})
     public void setSettings(Map settings) { _settings = new HashMap(settings); }
 
     /**
@@ -248,9 +250,9 @@ public abstract class FormHandler {
         }
         
         if (!_nonce.equals(_nonce1) && !_nonce.equals(_nonce2)) {
-                addFormError(_("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")
+                addFormError(_t("Invalid form submission, probably because you used the 'back' or 'reload' button on your browser. Please resubmit.")
                              + ' ' +
-                             _("If the problem persists, verify that you have cookies enabled in your browser."));
+                             _t("If the problem persists, verify that you have cookies enabled in your browser."));
                 _valid = false;
         }
     }
@@ -291,28 +293,28 @@ public abstract class FormHandler {
     }
 
     /** translate a string */
-    public String _(String s) {
+    public String _t(String s) {
         return Messages.getString(s, _context);
     }
 
     /**
      *  translate a string with a parameter
-     *  This is a lot more expensive than _(s), so use sparingly.
+     *  This is a lot more expensive than _t(s), so use sparingly.
      *
      *  @param s string to be translated containing {0}
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
-    public String _(String s, Object o) {
+    public String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 
     /** two params @since 0.8.2 */
-    public String _(String s, Object o, Object o2) {
+    public String _t(String s, Object o, Object o2) {
         return Messages.getString(s, o, o2, _context);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
index eff8dc3e3606c2a349774aa25ee2312e76fd0109..ab35a104a48ea92d27999dfb2a0e630f9f4155f7 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/GraphHelper.java
@@ -159,7 +159,7 @@ public class GraphHelper extends FormHandler {
                            + "&amp;w=" + (3 * _width)
                            + "&amp;h=" + (3 * _height)
                            + "\">");
-                String title = _("Combined bandwidth graph");
+                String title = _t("Combined bandwidth graph");
                 _out.write("<img class=\"statimage\""
                            + " src=\"viewstat.jsp?stat=bw.combined"
                            + "&amp;periodCount=" + _periodCount 
@@ -171,7 +171,7 @@ public class GraphHelper extends FormHandler {
             for (SummaryListener lsnr : ordered) {
                 Rate r = lsnr.getRate();
                 // e.g. "statname for 60m"
-                String title = _("{0} for {1}", r.getRateStat().getName(), DataHelper.formatDuration2(_periodCount * r.getPeriod()));
+                String title = _t("{0} for {1}", r.getRateStat().getName(), DataHelper.formatDuration2(_periodCount * r.getPeriod()));
                 _out.write("<a href=\"graph?stat="
                            + r.getRateStat().getName() 
                            + '.' + r.getPeriod() 
@@ -194,7 +194,7 @@ public class GraphHelper extends FormHandler {
 
             // FIXME jrobin doesn't support setting the timezone, will have to mod TimeAxis.java
             // 0.9.1 - all graphs currently state UTC on them, so this text blurb is unnecessary,
-            //_out.write("<p><i>" + _("All times are UTC.") + "</i></p>\n");
+            //_out.write("<p><i>" + _t("All times are UTC.") + "</i></p>\n");
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
@@ -220,7 +220,7 @@ public class GraphHelper extends FormHandler {
             if (_stat.equals("bw.combined")) {
                 period = 60000;
                 name = _stat;
-                displayName = _("Bandwidth usage");
+                displayName = _t("Bandwidth usage");
             } else {
                 Set<Rate> rates = StatSummarizer.instance().parseSpecs(_stat);
                 if (rates.size() != 1) {
@@ -233,9 +233,9 @@ public class GraphHelper extends FormHandler {
                 displayName = name;
             }
             _out.write("<h3>");
-            _out.write(_("{0} for {1}", displayName, DataHelper.formatDuration2(_periodCount * period)));
+            _out.write(_t("{0} for {1}", displayName, DataHelper.formatDuration2(_periodCount * period)));
             if (_end > 0)
-                _out.write(' ' + _("ending {0} ago", DataHelper.formatDuration2(_end * period)));
+                _out.write(' ' + _t("ending {0} ago", DataHelper.formatDuration2(_end * period)));
 
             _out.write("</h3><img class=\"statimage\" border=\"0\""
                        + " src=\"viewstat.jsp?stat="
@@ -250,57 +250,57 @@ public class GraphHelper extends FormHandler {
 
             if (_width < MAX_X && _height < MAX_Y) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end, _width * 3 / 2, _height * 3 / 2));
-                _out.write(_("Larger"));
+                _out.write(_t("Larger"));
                 _out.write("</a> - ");
             }
 
             if (_width > MIN_X && _height > MIN_Y) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end, _width * 2 / 3, _height * 2 / 3));
-                _out.write(_("Smaller"));
+                _out.write(_t("Smaller"));
                 _out.write("</a> - ");
             }
 
             if (_height < MAX_Y) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end, _width, _height * 3 / 2));
-                _out.write(_("Taller"));
+                _out.write(_t("Taller"));
                 _out.write("</a> - ");
             }
 
             if (_height > MIN_Y) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end, _width, _height * 2 / 3));
-                _out.write(_("Shorter"));
+                _out.write(_t("Shorter"));
                 _out.write("</a> - ");
             }
 
             if (_width < MAX_X) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end, _width * 3 / 2, _height));
-                _out.write(_("Wider"));
+                _out.write(_t("Wider"));
                 _out.write("</a> - ");
             }
 
             if (_width > MIN_X) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end, _width * 2 / 3, _height));
-                _out.write(_("Narrower"));
+                _out.write(_t("Narrower"));
                 _out.write("</a>");
             }
 
             _out.write("<br>");
             if (_periodCount < MAX_C) {
                 _out.write(link(_stat, _showEvents, _periodCount * 2, _end, _width, _height));
-                _out.write(_("Larger interval"));
+                _out.write(_t("Larger interval"));
                 _out.write("</a> - ");
             }
 
             if (_periodCount > MIN_C) {
                 _out.write(link(_stat, _showEvents, _periodCount / 2, _end, _width, _height));
-                _out.write(_("Smaller interval"));
+                _out.write(_t("Smaller interval"));
                 _out.write("</a>");
             }
 
             _out.write("<br>");
             if (_periodCount < MAX_C) {
                 _out.write(link(_stat, _showEvents, _periodCount, _end + _periodCount, _width, _height));
-                _out.write(_("Previous interval"));
+                _out.write(_t("Previous interval"));
                 _out.write("</a>");
             }
 
@@ -311,17 +311,17 @@ public class GraphHelper extends FormHandler {
                 if (_periodCount < MAX_C)
                     _out.write(" - ");
                 _out.write(link(_stat, _showEvents, _periodCount, end, _width, _height));
-                _out.write(_("Next interval"));
+                _out.write(_t("Next interval"));
                 _out.write("</a> ");
             }
 
             _out.write("<br>");
             _out.write(link(_stat, !_showEvents, _periodCount, _end, _width, _height));
             if (!_stat.equals("bw.combined"))
-                _out.write(_showEvents ? _("Plot averages") : _("plot events"));
+                _out.write(_showEvents ? _t("Plot averages") : _t("plot events"));
             _out.write("</a>");
 
-            _out.write("</p><p><i>" + _("All times are UTC.") + "</i></p>\n");
+            _out.write("</p><p><i>" + _t("All times are UTC.") + "</i></p>\n");
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
@@ -353,17 +353,17 @@ public class GraphHelper extends FormHandler {
         // So just use the "shared/console nonce".
         String nonce = CSSHelper.getNonce();
         try {
-            _out.write("<br><h3>" + _("Configure Graph Display") + " [<a href=\"configstats\">" + _("Select Stats") + "</a>]</h3>");
+            _out.write("<br><h3>" + _t("Configure Graph Display") + " [<a href=\"configstats\">" + _t("Select Stats") + "</a>]</h3>");
             _out.write("<form action=\"graphs\" method=\"POST\">\n" +
                        "<input type=\"hidden\" name=\"action\" value=\"save\">\n" +
                        "<input type=\"hidden\" name=\"nonce\" value=\"" + nonce + "\" >\n");
-            _out.write(_("Periods") + ": <input size=\"5\" style=\"text-align: right;\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
-            _out.write(_("Plot averages") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"checked\" ") + "> ");
-            _out.write(_("or")+ " " +_("plot events") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"checked\" " : "") + "><br>\n");
-            _out.write(_("Image sizes") + ": " + _("width") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"width\" value=\"" + _width 
-                       + "\"> " + _("pixels") + ", " + _("height") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"height\" value=\"" + _height  
-                       + "\"> " + _("pixels") + "<br>\n");
-            _out.write(_("Refresh delay") + ": <select name=\"refreshDelay\">");
+            _out.write(_t("Periods") + ": <input size=\"5\" style=\"text-align: right;\" type=\"text\" name=\"periodCount\" value=\"" + _periodCount + "\"><br>\n");
+            _out.write(_t("Plot averages") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"false\" " + (_showEvents ? "" : "checked=\"checked\" ") + "> ");
+            _out.write(_t("or")+ " " +_t("plot events") + ": <input type=\"radio\" class=\"optbox\" name=\"showEvents\" value=\"true\" "+ (_showEvents ? "checked=\"checked\" " : "") + "><br>\n");
+            _out.write(_t("Image sizes") + ": " + _t("width") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"width\" value=\"" + _width 
+                       + "\"> " + _t("pixels") + ", " + _t("height") + ": <input size=\"4\" style=\"text-align: right;\" type=\"text\" name=\"height\" value=\"" + _height  
+                       + "\"> " + _t("pixels") + "<br>\n");
+            _out.write(_t("Refresh delay") + ": <select name=\"refreshDelay\">");
             for (int i = 0; i < times.length; i++) {
                 _out.write("<option value=\"");
                 _out.write(Integer.toString(times[i]));
@@ -374,17 +374,17 @@ public class GraphHelper extends FormHandler {
                 if (times[i] > 0)
                     _out.write(DataHelper.formatDuration2(times[i] * 1000));
                 else
-                    _out.write(_("Never"));
+                    _out.write(_t("Never"));
                 _out.write("</option>\n");
             }
             _out.write("</select><br>\n" +
-                       _("Store graph data on disk?") +
+                       _t("Store graph data on disk?") +
                        " <input type=\"checkbox\" class=\"optbox\" value=\"true\" name=\"persistent\"");
             boolean persistent = _context.getBooleanPropertyDefaultTrue(SummaryListener.PROP_PERSISTENT);
             if (persistent)
                 _out.write(" checked=\"checked\"");
             _out.write(">" +
-                       "<hr><div class=\"formaction\"><input type=\"submit\" class=\"accept\" value=\"" + _("Save settings and redraw graphs") + "\"></div></form>");
+                       "<hr><div class=\"formaction\"><input type=\"submit\" class=\"accept\" value=\"" + _t("Save settings and redraw graphs") + "\"></div></form>");
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
@@ -440,7 +440,7 @@ public class GraphHelper extends FormHandler {
             changes.put(PROP_EVENTS, "" + _showEvents);
             changes.put(SummaryListener.PROP_PERSISTENT, "" + _persistent);
             _context.router().saveConfig(changes, null);
-            addFormNotice(_("Graph settings saved"));
+            addFormNotice(_t("Graph settings saved"));
         }
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java
index ff0dc80592cf53b72661a16bf868901a2d15d8f5..1c14848dcf7ea70c29750dba1ab38a169babc851 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/HelperBase.java
@@ -44,28 +44,28 @@ public abstract class HelperBase {
     public void storeWriter(Writer out) { _out = out; }
 
     /** translate a string */
-    public String _(String s) {
+    public String _t(String s) {
         return Messages.getString(s, _context);
     }
 
     /**
      *  translate a string with a parameter
-     *  This is a lot more expensive than _(s), so use sparingly.
+     *  This is a lot more expensive than _t(s), so use sparingly.
      *
      *  @param s string to be translated containing {0}
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
-    public String _(String s, Object o) {
+    public String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 
     /** two params @since 0.7.14 */
-    public String _(String s, Object o, Object o2) {
+    public String _t(String s, Object o, Object o2) {
         return Messages.getString(s, o, o2, _context);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
index 114441e5c15817f4128202497688a5525cce4aaa..b6afcf5cabd8926a059d2a275ef34b334add0a3c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java
@@ -25,6 +25,7 @@ public class HomeHelper extends HelperBase {
     static final String PROP_OLDHOME = "routerconsole.oldHomePage";
     private static final String PROP_SEARCH = "routerconsole.showSearch";
 
+    // No commas allowed in text strings!
     static final String DEFAULT_SERVICES =
         _x("Addressbook") + S + _x("Manage your I2P hosts file here (I2P domain name resolution)") + S + "/dns" + S + I + "book_addresses.png" + S +
         _x("Configure Bandwidth") + S + _x("I2P Bandwidth Configuration") + S + "/config" + S + I + "action_log.png" + S +
@@ -37,6 +38,7 @@ public class HomeHelper extends HelperBase {
         _x("Website") + S + _x("Local web server") + S + "http://127.0.0.1:7658/" + S + I + "server_32x32.png" + S +
         "";
 
+    // No commas allowed in text strings!
     static final String DEFAULT_FAVORITES =
         "anoncoin.i2p" + S + _x("The Anoncoin project") + S + "http://anoncoin.i2p/" + S + I + "anoncoin_32.png" + S +
         _x("Bug Reports") + S + _x("Bug tracker") + S + "http://trac.i2p2.i2p/report/1" + S + I + "bug.png" + S +
@@ -44,10 +46,12 @@ public class HomeHelper extends HelperBase {
         _x("Dev Forum") + S + _x("Development forum") + S + "http://zzz.i2p/" + S + I + "group_gear.png" + S +
         _x("diftracker") + S + _x("Bittorrent tracker") + S + "http://diftracker.i2p/" + S + I + "magnet.png" + S +
         "echelon.i2p" + S + _x("I2P Applications") + S + "http://echelon.i2p/" + S + I + "box_open.png" + S +
+        "exchanged.i2p" + S + _x("Anonymous cryptocurrency exchange") + S + "http://exchanged.i2p/" + S + I + "exchanged.png" + S +
         _x("FAQ") + S + _x("Frequently Asked Questions") + S + "http://i2p-projekt.i2p/faq" + S + I + "question.png" + S +
         _x("Forum") + S + _x("Community forum") + S + "http://forum.i2p/" + S + I + "group.png" + S +
         _x("Anonymous Git Hosting") + S + _x("A public anonymous Git hosting site - supports pulling via Git and HTTP and pushing via SSH") + S + "http://git.repo.i2p/" + S + I + "git-logo.png" + S +
         "hiddengate.i2p" + S + _x("HiddenGate") + S + "http://hiddengate.i2p/" + S + I + "hglogo32.png" + S +
+        _x("I2P Wiki") + S + _x("Anonymous wiki - share the knowledge") + S + "http://i2pwiki.i2p/" + S + I + "i2pwiki_logo.png" + S +
         "Ident " + _x("Microblog") + S + _x("Your premier microblogging service on I2P") + S + "http://id3nt.i2p/" + S + I + "ident_icon_blue.png" + S +
         _x("Javadocs") + S + _x("Technical documentation") + S + "http://i2p-javadocs.i2p/" + S + I + "education.png" + S +
         //"jisko.i2p" + S + _x("Simple and fast microblogging website") + S + "http://jisko.i2p/" + S + I + "jisko_console_icon.png" + S +
@@ -55,15 +59,16 @@ public class HomeHelper extends HelperBase {
         "killyourtv.i2p" + S + _x("Debian and Tahoe-LAFS repositories") + S + "http://killyourtv.i2p/" + S + I + "television_delete.png" + S +
         _x("Free Web Hosting") + S + _x("Free eepsite hosting with PHP and MySQL") + S + "http://open4you.i2p/" + S + I + "open4you-logo.png" + S +
         _x("Pastebin") + S + _x("I2P Pastebin") + S + "http://pastethis.i2p/" + S + I + "paste_plain.png" + S +
-        "Planet I2P" + S + _x("I2P News") + S + "http://planet.i2p/" + S + I + "world.png" + S +
+        _x("Planet I2P") + S + _x("I2P News") + S + "http://planet.i2p/" + S + I + "world.png" + S +
         _x("Plugins") + S + _x("Add-on directory") + S + "http://plugins.i2p/" + S + I + "plugin.png" + S +
         _x("Postman's Tracker") + S + _x("Bittorrent tracker") + S + "http://tracker2.postman.i2p/" + S + I + "magnet.png" + S +
         _x("Project Website") + S + _x("I2P home page") + S + "http://i2p-projekt.i2p/" + S + I + "info_rhombus.png" + S +
+        _x("Russian News Feed") + S + "lenta.i2p" + S + "http://lenta.i2p/" + S + I + "lenta_main_logo.png" + S +
         //"Salt" + S + "salt.i2p" + S + "http://salt.i2p/" + S + I + "salt_console.png" + S +
         "stats.i2p" + S + _x("I2P Network Statistics") + S + "http://stats.i2p/cgi-bin/dashboard.cgi" + S + I + "chart_line.png" + S +
         _x("Technical Docs") + S + _x("Technical documentation") + S + "http://i2p-projekt.i2p/how" + S + I + "education.png" + S +
         _x("Trac Wiki") + S + S + "http://trac.i2p2.i2p/" + S + I + "billiard_marker.png" + S +
-        _x("Ugha's Wiki") + S + S + "http://ugha.i2p/" + S + I + "billiard_marker.png" + S +
+        //_x("Ugha's Wiki") + S + S + "http://ugha.i2p/" + S + I + "billiard_marker.png" + S +
         _x("Sponge's main site") + S + _x("Seedless and the Robert BitTorrent applications") + S + "http://sponge.i2p/" + S + I + "user_astronaut.png" + S +
         "";
 
@@ -105,9 +110,9 @@ public class HomeHelper extends HelperBase {
     public String getProxyStatus() {
         int port = _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY);
         if (port <= 0)
-            return _("The HTTP proxy is not up");
+            return _t("The HTTP proxy is not up");
         return "<img src=\"http://console.i2p/onepixel.png?" + _context.random().nextInt() + "\"" +
-               " alt=\"" + _("Your browser is not properly configured to use the HTTP proxy at {0}",
+               " alt=\"" + _t("Your browser is not properly configured to use the HTTP proxy at {0}",
                              _context.getProperty(ConfigUpdateHandler.PROP_PROXY_HOST, ConfigUpdateHandler.DEFAULT_PROXY_HOST) + ':' + port) +
                "\">";
     }
@@ -167,13 +172,22 @@ public class HomeHelper extends HelperBase {
         ctx.router().saveConfig(prop, buf.toString());
     }
 
-    private static String renderApps(Collection<App> apps) {
+    private String renderApps(Collection<App> apps) {
+        String website = _t("Website");
         StringBuilder buf = new StringBuilder(1024);
         buf.append("<div class=\"appgroup\">");
         for (App app : apps) {
+            String url;
+            if (app.name.equals(website) && app.url.equals("http://127.0.0.1:7658/")) {
+                // fixup eepsite link
+                url = "http://" + _context.portMapper().getHost(PortMapper.SVC_EEPSITE, "127.0.0.1") +
+                      ':' + _context.portMapper().getPort(PortMapper.SVC_EEPSITE, 7658) + '/';
+            } else {
+                url = app.url;
+            }
             buf.append("<div class=\"app\">" +
                        "<div class=\"appimg\">" +
-                       "<a href=\"").append(app.url).append("\">" +
+                       "<a href=\"").append(url).append("\">" +
                        "<img class=\"");
             // toopie is 54x68, not 16x16, needs special alignment and sizing
             if (app.icon.endsWith("/itoopie_sm.png"))
@@ -184,7 +198,7 @@ public class HomeHelper extends HelperBase {
                        "</div>" +
                        "<table class=\"app\"><tr class=\"app\"><td class=\"app\">" +
                        "<div class=\"applabel\">" +
-                       "<a href=\"").append(app.url).append("\" title=\"").append(app.desc).append("\">").append(app.name).append("</a>" +
+                       "<a href=\"").append(url).append("\" title=\"").append(app.desc).append("\">").append(app.name).append("</a>" +
                        "</div>" +
                        "</td></tr></table>" +
                        "</div>\n");
@@ -196,11 +210,11 @@ public class HomeHelper extends HelperBase {
     private String renderConfig(Collection<App> apps) {
         StringBuilder buf = new StringBuilder(1024);
         buf.append("<table><tr><th>")
-           .append(_("Remove"))
+           .append(_t("Remove"))
            .append("</th><th colspan=\"2\">")
-           .append(_("Name"))
+           .append(_t("Name"))
            .append("</th><th>")
-           .append(_("URL"))
+           .append(_t("URL"))
            .append("</th></tr>\n");
         for (App app : apps) {
             buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_")
@@ -223,7 +237,7 @@ public class HomeHelper extends HelperBase {
             buf.append("</a></td></tr>\n");
         }
         buf.append("<tr><td colspan=\"2\" align=\"center\"><b>")
-           .append(_("Add")).append(":</b>" +
+           .append(_t("Add")).append(":</b>" +
                    "</td><td align=\"left\"><input type=\"text\" name=\"nofilter_name\"></td>" +
                    "<td align=\"left\"><input type=\"text\" size=\"40\" name=\"nofilter_url\"></td></tr>");
         buf.append("</table>\n");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java
index e270bf7ffc5dd458b17090e247d3eb7db801161f..7bc28287fb588aea42b170555dfcd97c8da354fd 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/JobQueueHelper.java
@@ -1,8 +1,7 @@
 package net.i2p.router.web;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.StringWriter;
 import java.io.Serializable;
 import java.io.Writer;
 import java.util.ArrayList;
@@ -25,9 +24,9 @@ public class JobQueueHelper extends HelperBase {
                 renderStatusHTML(_out);
                 return "";
             } else {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024);
-                renderStatusHTML(new OutputStreamWriter(baos));
-                return new String(baos.toByteArray());
+                StringWriter sw = new StringWriter(32*1024);
+                renderStatusHTML(sw);
+                return sw.toString();
             }
         } catch (IOException ioe) {
             ioe.printStackTrace();
@@ -48,29 +47,29 @@ public class JobQueueHelper extends HelperBase {
         int numRunners = _context.jobQueue().getJobs(readyJobs, timedJobs, activeJobs, justFinishedJobs);
         
         StringBuilder buf = new StringBuilder(32*1024);
-        buf.append("<b><div class=\"joblog\"><h3>").append(_("I2P Job Queue")).append("</h3><br><div class=\"wideload\">")
-           .append(_("Job runners")).append(": ").append(numRunners)
+        buf.append("<b><div class=\"joblog\"><h3>").append(_t("I2P Job Queue")).append("</h3><br><div class=\"wideload\">")
+           .append(_t("Job runners")).append(": ").append(numRunners)
            .append("</b><br>\n");
 
         long now = _context.clock().now();
 
-        buf.append("<hr><b>").append(_("Active jobs")).append(": ").append(activeJobs.size()).append("</b><ol>\n");
+        buf.append("<hr><b>").append(_t("Active jobs")).append(": ").append(activeJobs.size()).append("</b><ol>\n");
         for (int i = 0; i < activeJobs.size(); i++) {
             Job j = activeJobs.get(i);
-            buf.append("<li>(").append(_("started {0} ago", DataHelper.formatDuration2(now-j.getTiming().getStartAfter()))).append("): ");
+            buf.append("<li>(").append(_t("started {0} ago", DataHelper.formatDuration2(now-j.getTiming().getStartAfter()))).append("): ");
             buf.append(j.toString()).append("</li>\n");
         }
         buf.append("</ol>\n");
 
-        buf.append("<hr><b>").append(_("Just finished jobs")).append(": ").append(justFinishedJobs.size()).append("</b><ol>\n");
+        buf.append("<hr><b>").append(_t("Just finished jobs")).append(": ").append(justFinishedJobs.size()).append("</b><ol>\n");
         for (int i = 0; i < justFinishedJobs.size(); i++) {
             Job j = justFinishedJobs.get(i);
-            buf.append("<li>(").append(_("finished {0} ago", DataHelper.formatDuration2(now-j.getTiming().getActualEnd()))).append("): ");
+            buf.append("<li>(").append(_t("finished {0} ago", DataHelper.formatDuration2(now-j.getTiming().getActualEnd()))).append("): ");
             buf.append(j.toString()).append("</li>\n");
         }
         buf.append("</ol>\n");
 
-        buf.append("<hr><b>").append(_("Ready/waiting jobs")).append(": ").append(readyJobs.size()).append("</b><ol>\n");
+        buf.append("<hr><b>").append(_t("Ready/waiting jobs")).append(": ").append(readyJobs.size()).append("</b><ol>\n");
         ObjectCounter<String> counter = new ObjectCounter<String>();
         for (int i = 0; i < readyJobs.size(); i++) {
             Job j = readyJobs.get(i);
@@ -87,7 +86,7 @@ public class JobQueueHelper extends HelperBase {
         out.write(buf.toString());
         buf.setLength(0);
 
-        buf.append("<hr><b>").append(_("Scheduled jobs")).append(": ").append(timedJobs.size()).append("</b><ol>\n");
+        buf.append("<hr><b>").append(_t("Scheduled jobs")).append(": ").append(timedJobs.size()).append("</b><ol>\n");
         long prev = Long.MIN_VALUE;
         counter.clear();
         for (int i = 0; i < timedJobs.size(); i++) {
@@ -97,7 +96,7 @@ public class JobQueueHelper extends HelperBase {
                 continue;
             long time = j.getTiming().getStartAfter() - now;
             // translators: {0} is a job name, {1} is a time, e.g. 6 min
-            buf.append("<li>").append(_("{0} will start in {1}", j.getName(), DataHelper.formatDuration2(time)));
+            buf.append("<li>").append(_t("{0} will start in {1}", j.getName(), DataHelper.formatDuration2(time)));
             // debug, don't bother translating
             if (time < 0)
                 buf.append(" <b>DELAYED</b>");
@@ -111,7 +110,7 @@ public class JobQueueHelper extends HelperBase {
         out.write(buf.toString());
         buf.setLength(0);
         
-        buf.append("<hr><b>").append(_("Total Job Statistics")).append("</b>\n");
+        buf.append("<hr><b>").append(_t("Total Job Statistics")).append("</b>\n");
         getJobStats(buf);
         out.write(buf.toString());
     }
@@ -122,7 +121,7 @@ public class JobQueueHelper extends HelperBase {
         if (names.size() < 4)
             return;
         buf.append("<table style=\"width: 30%; margin-left: 100px;\">\n" +
-                   "<tr><th>").append(_("Job")).append("</th><th>").append(_("Queued")).append("<th>");
+                   "<tr><th>").append(_t("Job")).append("</th><th>").append(_t("Queued")).append("<th>");
         Collections.sort(names, new JobCountComparator(counter));
         for (String name : names) {
             buf.append("<tr><td>").append(name)
@@ -139,12 +138,12 @@ public class JobQueueHelper extends HelperBase {
      */
     private void getJobStats(StringBuilder buf) { 
         buf.append("<table>\n" +
-                   "<tr><th>").append(_("Job")).append("</th><th>").append(_("Runs")).append("</th>" +
-                   "<th>").append(_("Dropped")).append("</th>" +
-                   "<th>").append(_("Time")).append("</th><th><i>").append(_("Avg")).append("</i></th><th><i>")
-           .append(_("Max")).append("</i></th><th><i>").append(_("Min")).append("</i></th>" +
-                   "<th>").append(_("Pending")).append("</th><th><i>").append(_("Avg")).append("</i></th><th><i>")
-           .append(_("Max")).append("</i></th><th><i>").append(_("Min")).append("</i></th></tr>\n");
+                   "<tr><th>").append(_t("Job")).append("</th><th>").append(_t("Runs")).append("</th>" +
+                   "<th>").append(_t("Dropped")).append("</th>" +
+                   "<th>").append(_t("Time")).append("</th><th><i>").append(_t("Avg")).append("</i></th><th><i>")
+           .append(_t("Max")).append("</i></th><th><i>").append(_t("Min")).append("</i></th>" +
+                   "<th>").append(_t("Pending")).append("</th><th><i>").append(_t("Avg")).append("</i></th><th><i>")
+           .append(_t("Max")).append("</i></th><th><i>").append(_t("Min")).append("</i></th></tr>\n");
         long totRuns = 0;
         long totDropped = 0;
         long totExecTime = 0;
@@ -195,7 +194,7 @@ public class JobQueueHelper extends HelperBase {
         }
 
         buf.append("<tr class=\"tablefooter\">");
-        buf.append("<td><b>").append(_("Summary")).append("</b></td>");
+        buf.append("<td><b>").append(_t("Summary")).append("</b></td>");
         buf.append("<td align=\"right\">").append(totRuns).append("</td>");
         buf.append("<td align=\"right\">").append(totDropped).append("</td>");
         buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(totExecTime)).append("</td>");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java
index 74ce11a197abd4fdb68c489e55d2a19304845316..1343a88cd211f89b512a1e34da72ef1640103d95 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java
@@ -83,6 +83,7 @@ public class LocaleWebAppHandler extends HandlerWrapper
                 if (lang != null && lang.length() > 0 && !lang.equals("en")) {
                     String testPath = pathInContext.substring(0, len - 4) + '_' + lang + ".jsp";
                     // Do we have a servlet for the new path that isn't the catchall *.jsp?
+                    @SuppressWarnings("rawtypes")
                     Map.Entry servlet = _wac.getServletHandler().getHolderEntry(testPath);
                     if (servlet != null) {
                         String servletPath = (String) servlet.getKey();
@@ -130,7 +131,7 @@ public class LocaleWebAppHandler extends HandlerWrapper
     /**
      *  Mysteriously removed from Jetty 7
      */
-    private void setInitParams(Map params) {
+    private void setInitParams(Map<?,?> params) {
         setInitParams(_wac, params);
     }
 
@@ -138,7 +139,7 @@ public class LocaleWebAppHandler extends HandlerWrapper
      *  @since Jetty 7
      */
     public static void setInitParams(WebAppContext context, Map<?,?> params) {
-        for (Map.Entry e : params.entrySet()) {
+        for (Map.Entry<?,?> e : params.entrySet()) {
             context.setInitParameter((String)e.getKey(), (String)e.getValue());
         }
     }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
index e3845df9dab80150b4dc8e6bac741f2ce967568e..dbed0c82e7608dad39e294825d6568e330683d29 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java
@@ -46,7 +46,7 @@ public class LogsHelper extends HelperBase {
      */
     public String getLogs() {
         String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages());
-        return "<p>" + _("File location") + ": <b><code>" + _context.logManager().currentFile() + "</code></b></p>" + str;
+        return "<p>" + _t("File location") + ": <b><code>" + _context.logManager().currentFile() + "</code></b></p>" + str;
     }
     
     /**
@@ -97,10 +97,10 @@ public class LogsHelper extends HelperBase {
             str = FileUtil.readTextFile(f.getAbsolutePath(), 250, false);
         }
         if (str == null) {
-            return "<p>" + _("File not found") + ": <b><code>" + f.getAbsolutePath() + "</code></b></p>";
+            return "<p>" + _t("File not found") + ": <b><code>" + f.getAbsolutePath() + "</code></b></p>";
         } else {
             str = str.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
-            return "<p>" + _("File location") + ": <b><code>" + f.getAbsolutePath() + "</code></b></p><pre>" + str + "</pre>";
+            return "<p>" + _t("File location") + ": <b><code>" + f.getAbsolutePath() + "</code></b></p><pre>" + str + "</pre>";
         }
     }
     
@@ -115,7 +115,7 @@ public class LogsHelper extends HelperBase {
     /** formats in reverse order */
     private String formatMessages(List<String> msgs) {
         if (msgs.isEmpty())
-            return "<p><i>" + _("No log messages") + "</i></p>";
+            return "<p><i>" + _t("No log messages") + "</i></p>";
         boolean colorize = _context.getBooleanPropertyDefaultTrue("routerconsole.logs.color");
         StringBuilder buf = new StringBuilder(16*1024); 
         buf.append("<ul>");
@@ -138,13 +138,13 @@ public class LogsHelper extends HelperBase {
                 // Homeland Security Advisory System
                 // http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm
                 // but pink instead of yellow for WARN
-                if (msg.contains(_("CRIT")))
+                if (msg.contains(_t("CRIT")))
                     color = "#cc0000";
-                else if (msg.contains(_("ERROR")))
+                else if (msg.contains(_t("ERROR")))
                     color = "#ff3300";
-                else if (msg.contains(_("WARN")))
+                else if (msg.contains(_t("WARN")))
                     color = "#ff00cc";
-                else if (msg.contains(_("INFO")))
+                else if (msg.contains(_t("INFO")))
                     color = "#000099";
                 else
                     color = "#006600";
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/Messages.java b/apps/routerconsole/java/src/net/i2p/router/web/Messages.java
index c76f260e8dce2ca267e23014de5bc4a89c2a5bd5..e138c0ffdec763df3ee5b1239058426718a913fc 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/Messages.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/Messages.java
@@ -24,7 +24,7 @@ public class Messages extends Translate {
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java
index a72e2cd651ea9d557b614216dffa1eec64d6b577..808297fb53c53ec5de809b3585191c9dee720c85 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbHelper.java
@@ -5,6 +5,8 @@ import net.i2p.data.DataHelper;
 
 public class NetDbHelper extends HelperBase {
     private String _routerPrefix;
+    private String _version;
+    private String _country;
     private int _full;
     private boolean _lease;
     private boolean _debug;
@@ -33,6 +35,18 @@ public class NetDbHelper extends HelperBase {
             _routerPrefix = DataHelper.stripHTML(r);  // XSS
     }
 
+    /** @since 0.9.21 */
+    public void setVersion(String v) {
+        if (v != null)
+            _version = DataHelper.stripHTML(v);  // XSS
+    }
+
+    /** @since 0.9.21 */
+    public void setCountry(String c) {
+        if (c != null)
+            _country = DataHelper.stripHTML(c);  // XSS
+    }
+
     public void setFull(String f) {
         try {
             _full = Integer.parseInt(f);
@@ -59,8 +73,8 @@ public class NetDbHelper extends HelperBase {
         NetDbRenderer renderer = new NetDbRenderer(_context);
         try {
             renderNavBar();
-            if (_routerPrefix != null)
-                renderer.renderRouterInfoHTML(_out, _routerPrefix);
+            if (_routerPrefix != null || _version != null || _country != null)
+                renderer.renderRouterInfoHTML(_out, _routerPrefix, _version, _country);
             else if (_lease)
                 renderer.renderLeaseSetHTML(_out, _debug);
             else
@@ -111,12 +125,12 @@ public class NetDbHelper extends HelperBase {
                 // we are there
                 if (span)
                     buf.append("<span class=\"tab2\">");
-                buf.append(_(titles[i]));
+                buf.append(_t(titles[i]));
             } else {
                 // we are not there, make a link
                 if (span)
                     buf.append("<span class=\"tab\">");
-                buf.append("<a href=\"netdb").append(links[i]).append("\">").append(_(titles[i])).append("</a>");
+                buf.append("<a href=\"netdb").append(links[i]).append("\">").append(_t(titles[i])).append("</a>");
             }
             if (span)
                 buf.append(" </span>\n");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
index 01e4659878bb51ce3e727dafc13805ff9692dc82..ff6b092a2c0648764cc6af698114edc2215034cb 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java
@@ -35,6 +35,7 @@ import net.i2p.router.RouterContext;
 import net.i2p.router.TunnelPoolSettings;
 import net.i2p.router.util.HashDistance;   // debug
 import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
+import net.i2p.util.Log;
 import net.i2p.util.ObjectCounter;
 import net.i2p.util.Translate;
 import net.i2p.util.VersionComparator;
@@ -78,7 +79,14 @@ public class NetDbRenderer {
         }
     }
 
-    public void renderRouterInfoHTML(Writer out, String routerPrefix) throws IOException {
+    /**
+     *  One String must be non-null
+     *
+     *  @param routerPrefix may be null. "." for our router only
+     *  @param version may be null
+     *  @param country may be null
+     */
+    public void renderRouterInfoHTML(Writer out, String routerPrefix, String version, String country) throws IOException {
         StringBuilder buf = new StringBuilder(4*1024);
         if (".".equals(routerPrefix)) {
             renderRouterInfo(buf, _context.router().getRouterInfo(), true, true);
@@ -87,13 +95,23 @@ public class NetDbRenderer {
             Set<RouterInfo> routers = _context.netDb().getRouters();
             for (RouterInfo ri : routers) {
                 Hash key = ri.getIdentity().getHash();
-                if (key.toBase64().startsWith(routerPrefix)) {
+                if ((routerPrefix != null && key.toBase64().startsWith(routerPrefix)) ||
+                    (version != null && version.equals(ri.getVersion())) ||
+                    (country != null && country.equals(_context.commSystem().getCountry(key)))) {
                     renderRouterInfo(buf, ri, false, true);
                     notFound = false;
                 }
             }
-            if (notFound)
-                buf.append(_("Router") + ' ').append(routerPrefix).append(' ' + _("not found in network database") );
+            if (notFound) {
+                buf.append(_t("Router")).append(' ');
+                if (routerPrefix != null)
+                    buf.append(routerPrefix);
+                else if (version != null)
+                    buf.append(version);
+                else if (country != null)
+                    buf.append(country);
+                buf.append(' ').append(_t("not found in network database"));
+            }
         }
         out.write(buf.toString());
         out.flush();
@@ -124,24 +142,28 @@ public class NetDbRenderer {
         int rapCount = 0;
         BigInteger median = null;
         int c = 0;
-        if (debug) {
+        if (leases.isEmpty()) {
+          if (!debug)
+              buf.append("<i>").append(_t("none")).append("</i>");
+        } else {
+          if (debug) {
             // Find the center of the RAP leasesets
             for (LeaseSet ls : leases) {
                 if (ls.getReceivedAsPublished())
                     rapCount++;
             }
             medianCount = rapCount / 2;
-        }
-        long now = _context.clock().now();
-        for (LeaseSet ls : leases) {
+          }
+          long now = _context.clock().now();
+          for (LeaseSet ls : leases) {
             Destination dest = ls.getDestination();
             Hash key = dest.calculateHash();
-            buf.append("<b>").append(_("LeaseSet")).append(": ").append(key.toBase64()).append("</b>\n");
+            buf.append("<b>").append(_t("LeaseSet")).append(": ").append(key.toBase64()).append("</b>\n");
             if (_context.clientManager().isLocal(dest)) {
-                buf.append(" (<a href=\"tunnels#" + key.toBase64().substring(0,4) + "\">" + _("Local") + "</a> ");
+                buf.append(" (<a href=\"tunnels#" + key.toBase64().substring(0,4) + "\">" + _t("Local") + "</a> ");
                 if (! _context.clientManager().shouldPublishLeaseSet(key))
-                    buf.append(_("Unpublished") + ' ');
-                buf.append(_("Destination") + ' ');
+                    buf.append(_t("Unpublished") + ' ');
+                buf.append(_t("Destination") + ' ');
                 TunnelPoolSettings in = _context.tunnelManager().getInboundSettings(key);
                 if (in != null && in.getDestinationNickname() != null)
                     buf.append(in.getDestinationNickname());
@@ -153,10 +175,10 @@ public class NetDbRenderer {
                 String host = _context.namingService().reverseLookup(dest);
                 if (host == null) {
                     buf.append("<a href=\"/susidns/addressbook.jsp?book=private&amp;destination=")
-                       .append(dest.toBase64()).append("#add\">").append(_("Add to local addressbook")).append("</a><br>\n");    
+                       .append(dest.toBase64()).append("#add\">").append(_t("Add to local addressbook")).append("</a><br>\n");    
                 }
             } else {
-                buf.append(" (").append(_("Destination")).append(' ');
+                buf.append(" (").append(_t("Destination")).append(' ');
                 String host = _context.namingService().reverseLookup(dest);
                 if (host != null) {
                     buf.append("<a href=\"http://").append(host).append("/\">").append(host).append("</a>)<br>\n");
@@ -165,14 +187,14 @@ public class NetDbRenderer {
                     buf.append(dest.toBase64().substring(0, 6)).append(")<br>\n" +
                                "<a href=\"http://").append(b32).append("\">").append(b32).append("</a><br>\n" +
                                "<a href=\"/susidns/addressbook.jsp?book=private&amp;destination=")
-                       .append(dest.toBase64()).append("#add\">").append(_("Add to local addressbook")).append("</a><br>\n");    
+                       .append(dest.toBase64()).append("#add\">").append(_t("Add to local addressbook")).append("</a><br>\n");    
                 }
             }
             long exp = ls.getLatestLeaseDate()-now;
             if (exp > 0)
-                buf.append(_("Expires in {0}", DataHelper.formatDuration2(exp)));
+                buf.append(_t("Expires in {0}", DataHelper.formatDuration2(exp)));
             else
-                buf.append(_("Expired {0} ago", DataHelper.formatDuration2(0-exp)));
+                buf.append(_t("Expired {0} ago", DataHelper.formatDuration2(0-exp)));
             buf.append("<br>\n");
             if (debug) {
                 buf.append("RAP? " + ls.getReceivedAsPublished());
@@ -191,22 +213,23 @@ public class NetDbRenderer {
             }
             for (int i = 0; i < ls.getLeaseCount(); i++) {
                 Lease lease = ls.getLease(i);
-                buf.append(_("Lease")).append(' ').append(i + 1).append(": ").append(_("Gateway")).append(' ');
+                buf.append(_t("Lease")).append(' ').append(i + 1).append(": ").append(_t("Gateway")).append(' ');
                 buf.append(_context.commSystem().renderPeerHTML(lease.getGateway()));
-                buf.append(' ').append(_("Tunnel")).append(' ').append(lease.getTunnelId().getTunnelId()).append(' ');
+                buf.append(' ').append(_t("Tunnel")).append(' ').append(lease.getTunnelId().getTunnelId()).append(' ');
                 if (debug) {
                     long exl = lease.getEndDate().getTime() - now;
                     if (exl > 0)
-                        buf.append(_("Expires in {0}", DataHelper.formatDuration2(exl)));
+                        buf.append(_t("Expires in {0}", DataHelper.formatDuration2(exl)));
                     else
-                        buf.append(_("Expired {0} ago", DataHelper.formatDuration2(0-exl)));
+                        buf.append(_t("Expired {0} ago", DataHelper.formatDuration2(0-exl)));
                 }
                 buf.append("<br>\n");
             }
             buf.append("<hr>\n");
             out.write(buf.toString());
             buf.setLength(0);
-        }
+          } // for each
+        }  // !empty
         if (debug) {
             FloodfillNetworkDatabaseFacade netdb = (FloodfillNetworkDatabaseFacade)_context.netDb();
             buf.append("<p><b>Total Leasesets: ").append(leases.size());
@@ -260,10 +283,12 @@ public class NetDbRenderer {
      */
     public void renderStatusHTML(Writer out, int mode) throws IOException {
         if (!_context.netDb().isInitialized()) {
-            out.write(_("Not initialized"));
+            out.write(_t("Not initialized"));
             out.flush();
             return;
         }
+        Log log = _context.logManager().getLog(NetDbRenderer.class);
+        long start = System.currentTimeMillis();
         
         boolean full = mode == 1;
         boolean shortStats = mode == 2;
@@ -302,6 +327,10 @@ public class NetDbRenderer {
                 transportCount[classifyTransports(ri)]++;
             }
         }
+        long end = System.currentTimeMillis();
+        if (log.shouldWarn())
+            log.warn("part 1 took " + (end - start));
+        start = end;
             
      //
      // don't bother to reindent
@@ -310,32 +339,37 @@ public class NetDbRenderer {
 
         // the summary table
         buf.append("<table border=\"0\" cellspacing=\"30\"><tr><th colspan=\"3\">")
-           .append(_("Network Database Router Statistics"))
+           .append(_t("Network Database Router Statistics"))
            .append("</th></tr><tr><td style=\"vertical-align: top;\">");
         // versions table
         List<String> versionList = new ArrayList<String>(versions.objects());
         if (!versionList.isEmpty()) {
             Collections.sort(versionList, Collections.reverseOrder(new VersionComparator()));
             buf.append("<table>\n");
-            buf.append("<tr><th>" + _("Version") + "</th><th>" + _("Count") + "</th></tr>\n");
+            buf.append("<tr><th>" + _t("Version") + "</th><th>" + _t("Count") + "</th></tr>\n");
             for (String routerVersion : versionList) {
                 int num = versions.count(routerVersion);
-                buf.append("<tr><td align=\"center\">").append(DataHelper.stripHTML(routerVersion));
-                buf.append("</td><td align=\"center\">").append(num).append("</td></tr>\n");
+                String ver = DataHelper.stripHTML(routerVersion);
+                buf.append("<tr><td align=\"center\"><a href=\"/netdb?v=").append(ver).append("\">").append(ver);
+                buf.append("</a></td><td align=\"center\">").append(num).append("</td></tr>\n");
             }
             buf.append("</table>\n");
         }
         buf.append("</td><td style=\"vertical-align: top;\">");
         out.write(buf.toString());
         buf.setLength(0);
+        end = System.currentTimeMillis();
+        if (log.shouldWarn())
+            log.warn("part 2 took " + (end - start));
+        start = end;
             
         // transports table
         buf.append("<table>\n");
-        buf.append("<tr><th align=\"left\">" + _("Transports") + "</th><th>" + _("Count") + "</th></tr>\n");
+        buf.append("<tr><th align=\"left\">" + _t("Transports") + "</th><th>" + _t("Count") + "</th></tr>\n");
         for (int i = 0; i < TNAMES.length; i++) {
             int num = transportCount[i];
             if (num > 0) {
-                buf.append("<tr><td>").append(_(TNAMES[i]));
+                buf.append("<tr><td>").append(_t(TNAMES[i]));
                 buf.append("</td><td align=\"center\">").append(num).append("</td></tr>\n");
             }
         }
@@ -343,24 +377,32 @@ public class NetDbRenderer {
         buf.append("</td><td style=\"vertical-align: top;\">");
         out.write(buf.toString());
         buf.setLength(0);
+        end = System.currentTimeMillis();
+        if (log.shouldWarn())
+            log.warn("part 3 took " + (end - start));
+        start = end;
 
         // country table
         List<String> countryList = new ArrayList<String>(countries.objects());
         if (!countryList.isEmpty()) {
             Collections.sort(countryList, new CountryComparator());
             buf.append("<table>\n");
-            buf.append("<tr><th align=\"left\">" + _("Country") + "</th><th>" + _("Count") + "</th></tr>\n");
+            buf.append("<tr><th align=\"left\">" + _t("Country") + "</th><th>" + _t("Count") + "</th></tr>\n");
             for (String country : countryList) {
                 int num = countries.count(country);
                 buf.append("<tr><td><img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append("\"");
-                buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> ");
+                buf.append(" src=\"/flags.jsp?c=").append(country).append("\"> <a href=\"/netdb?c=").append(country).append("\">");
                 buf.append(getTranslatedCountry(country));
-                buf.append("</td><td align=\"center\">").append(num).append("</td></tr>\n");
+                buf.append("</a></td><td align=\"center\">").append(num).append("</td></tr>\n");
             }
             buf.append("</table>\n");
         }
 
         buf.append("</td></tr></table>");
+        end = System.currentTimeMillis();
+        if (log.shouldWarn())
+            log.warn("part 4 took " + (end - start));
+        start = end;
 
      //
      // don't bother to reindent
@@ -408,29 +450,29 @@ public class NetDbRenderer {
         String hash = info.getIdentity().getHash().toBase64();
         buf.append("<table><tr><th><a name=\"").append(hash.substring(0, 6)).append("\" ></a>");
         if (isUs) {
-            buf.append("<a name=\"our-info\" ></a><b>" + _("Our info") + ": ").append(hash).append("</b></th></tr><tr><td>\n");
+            buf.append("<a name=\"our-info\" ></a><b>" + _t("Our info") + ": ").append(hash).append("</b></th></tr><tr><td>\n");
         } else {
-            buf.append("<b>" + _("Peer info for") + ":</b> ").append(hash).append("\n");
+            buf.append("<b>" + _t("Peer info for") + ":</b> ").append(hash).append("\n");
             if (!full) {
-                buf.append("[<a href=\"netdb?r=").append(hash.substring(0, 6)).append("\" >").append(_("Full entry")).append("</a>]");
+                buf.append("[<a href=\"netdb?r=").append(hash.substring(0, 6)).append("\" >").append(_t("Full entry")).append("</a>]");
             }
             buf.append("</th></tr><tr><td>\n");
         }
         
         long age = _context.clock().now() - info.getPublished();
         if (isUs && _context.router().isHidden()) {
-            buf.append("<b>").append(_("Hidden")).append(", ").append(_("Updated")).append(":</b> ")
-               .append(_("{0} ago", DataHelper.formatDuration2(age))).append("<br>\n");
+            buf.append("<b>").append(_t("Hidden")).append(", ").append(_t("Updated")).append(":</b> ")
+               .append(_t("{0} ago", DataHelper.formatDuration2(age))).append("<br>\n");
         } else if (age > 0) {
-            buf.append("<b>").append(_("Published")).append(":</b> ")
-               .append(_("{0} ago", DataHelper.formatDuration2(age))).append("<br>\n");
+            buf.append("<b>").append(_t("Published")).append(":</b> ")
+               .append(_t("{0} ago", DataHelper.formatDuration2(age))).append("<br>\n");
         } else {
             // shouldnt happen
-            buf.append("<b>" + _("Published") + ":</b> in ").append(DataHelper.formatDuration2(0-age)).append("???<br>\n");
+            buf.append("<b>" + _t("Published") + ":</b> in ").append(DataHelper.formatDuration2(0-age)).append("???<br>\n");
         }
-        buf.append("<b>").append(_("Signing Key")).append(":</b> ")
+        buf.append("<b>").append(_t("Signing Key")).append(":</b> ")
            .append(info.getIdentity().getSigningPublicKey().getType().toString());
-        buf.append("<br>\n<b>" + _("Address(es)") + ":</b> ");
+        buf.append("<br>\n<b>" + _t("Address(es)") + ":</b> ");
         String country = _context.commSystem().getCountry(info.getIdentity().getHash());
         if(country != null) {
             buf.append("<img height=\"11\" width=\"16\" alt=\"").append(country.toUpperCase(Locale.US)).append('\"');
@@ -442,17 +484,17 @@ public class NetDbRenderer {
             buf.append("<b>").append(DataHelper.stripHTML(style)).append(":</b> ");
             int cost = addr.getCost();
             if (!((style.equals("SSU") && cost == 5) || (style.equals("NTCP") && cost == 10)))
-                buf.append('[').append(_("cost")).append('=').append("" + cost).append("] ");
+                buf.append('[').append(_t("cost")).append('=').append("" + cost).append("] ");
             Map<Object, Object> p = addr.getOptionsMap();
             for (Map.Entry<Object, Object> e : p.entrySet()) {
                 String name = (String) e.getKey();
                 String val = (String) e.getValue();
-                buf.append('[').append(_(DataHelper.stripHTML(name))).append('=').append(DataHelper.stripHTML(val)).append("] ");
+                buf.append('[').append(_t(DataHelper.stripHTML(name))).append('=').append(DataHelper.stripHTML(val)).append("] ");
             }
         }
         buf.append("</td></tr>\n");
         if (full) {
-            buf.append("<tr><td>" + _("Stats") + ": <br><code>");
+            buf.append("<tr><td>" + _t("Stats") + ": <br><code>");
             Map<Object, Object> p = info.getOptionsMap();
             for (Map.Entry<Object, Object> e : p.entrySet()) {
                 String key = (String) e.getKey();
@@ -496,7 +538,7 @@ public class NetDbRenderer {
     }
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         return Messages.getString(s, _context);
     }
 
@@ -507,17 +549,17 @@ public class NetDbRenderer {
 
     /**
      *  translate a string with a parameter
-     *  This is a lot more expensive than _(s), so use sparingly.
+     *  This is a lot more expensive than _t(s), so use sparingly.
      *
      *  @param s string to be translated containing {0}
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
-    private String _(String s, Object o) {
+    private String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NewsFeedHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NewsFeedHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..357887f9e7e9d835cd9b0f24e046f09bf4abac8a
--- /dev/null
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NewsFeedHelper.java
@@ -0,0 +1,92 @@
+package net.i2p.router.web;
+
+import java.text.DateFormat;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+import net.i2p.I2PAppContext;
+import net.i2p.app.ClientAppManager;
+import net.i2p.data.DataHelper;
+import net.i2p.router.news.NewsEntry;
+import net.i2p.router.news.NewsManager;
+
+
+/**
+ *  HTML-formatted full news entries
+ *
+ *  @since 0.9.23
+ */
+public class NewsFeedHelper extends HelperBase {
+    
+    private int _start = 0;
+    private int _limit = 2;
+
+    /**
+     *  @param limit less than or equal to zero means all
+     */
+    public void setLimit(int limit) {
+        _limit = limit;
+    }
+
+    public void setStart(int start) {
+        _start = start;
+    }
+
+    public String getEntries() {
+        return getEntries(_context, _start, _limit);
+    }
+
+    /**
+     *  @param max less than or equal to zero means all
+     *  @return non-null, "" if none
+     */
+    static String getEntries(I2PAppContext ctx, int start, int max) {
+        if (max <= 0)
+            max = Integer.MAX_VALUE;
+        StringBuilder buf = new StringBuilder(512);
+        List<NewsEntry> entries = Collections.emptyList();
+        ClientAppManager cmgr = ctx.clientAppManager();
+        if (cmgr != null) {
+            NewsManager nmgr = (NewsManager) cmgr.getRegisteredApp(NewsManager.APP_NAME);
+            if (nmgr != null)
+                entries = nmgr.getEntries();
+        }
+        if (!entries.isEmpty()) {
+            DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT);
+            // the router sets the JVM time zone to UTC but saves the original here so we can get it
+            String systemTimeZone = ctx.getProperty("i2p.systemTimeZone");
+            if (systemTimeZone != null)
+                fmt.setTimeZone(TimeZone.getTimeZone(systemTimeZone));
+            int i = 0;
+            for (NewsEntry entry : entries) {
+                if (i++ < start)
+                    continue;
+                buf.append("<div class=\"newsentry\"><h3>");
+                if (entry.updated > 0) {
+                    Date date = new Date(entry.updated);
+                    buf.append("<font size=\"-1\">")
+                       .append(fmt.format(date))
+                       .append(":</font> ");
+                }
+                if (entry.link != null)
+                    buf.append("<a href=\"").append(DataHelper.escapeHTML(entry.link)).append("\">");
+                buf.append(entry.title);
+                if (entry.link != null)
+                    buf.append("</a>");
+                if (entry.authorName != null) {
+                    buf.append(" <font size=\"-2\">(<i>")
+                       .append(Messages.getString("by {0}", DataHelper.escapeHTML(entry.authorName), ctx))
+                       .append("</i>)</font>\n");
+                }
+                buf.append("</h3>\n<div class=\"newscontent\">\n")
+                   .append(entry.content)
+                   .append("\n</div></div>\n");
+                if (i >= start + max)
+                    break;
+            }
+        }
+        return buf.toString();
+    }
+}
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java
index f7a30c6ddff8847b6cc5065bd76563e830bb942e..ee353925a5e9759e3f08cd476ff69fbef5a0acf7 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/NewsHelper.java
@@ -28,6 +28,11 @@ public class NewsHelper extends ContentHelper {
     public static final String PROP_LAST_CHECKED = "routerconsole.newsLastChecked";
     /** @since 0.9.4 */
     public static final String PROP_LAST_UPDATED = "routerconsole.newsLastUpdated";
+    /**
+     * Default true
+     * @since 0.9.21
+     */
+    public static final String PROP_TRANSLATE = "routerconsole.newsTranslate";
     public static final String NEWS_FILE = "docs/news.xml";
 
     /**
@@ -94,6 +99,28 @@ public class NewsHelper extends ContentHelper {
         return mgr.getUpdateConstraint(ROUTER_SIGNED, "");
     }
 
+    /**
+     *  Translated message about new version available but constrained
+     *  @return null if none
+     *  @since 0.9.23
+     */
+    public static String unsignedUpdateConstraint() {
+        ConsoleUpdateManager mgr = ConsoleUpdateManager.getInstance();
+        if (mgr == null) return null;
+        return mgr.getUpdateConstraint(ROUTER_UNSIGNED, "");
+    }
+
+    /**
+     *  Translated message about new version available but constrained
+     *  @return null if none
+     *  @since 0.9.23
+     */
+    public static String devSU3UpdateConstraint() {
+        ConsoleUpdateManager mgr = ConsoleUpdateManager.getInstance();
+        if (mgr == null) return null;
+        return mgr.getUpdateConstraint(ROUTER_DEV_SU3, "");
+    }
+
     /**
      *  Release update only.
      *  Already downloaded but not installed version.
@@ -199,37 +226,12 @@ public class NewsHelper extends ContentHelper {
         return mgr.getStatus();
     }
 
-    private static final String BUNDLE_NAME = "net.i2p.router.news.messages";
-
     /**
      *  If we haven't downloaded news yet, use the translated initial news file
      */
     @Override
     public String getContent() {
-        File news = new File(_page);
-        if (!news.exists()) {
-            _page = (new File(_context.getBaseDir(), "docs/initialNews/initialNews.xml")).getAbsolutePath();
-            // don't use super, translate on-the-fly
-            Reader reader = null;
-            try {
-                char[] buf = new char[512];
-                StringBuilder out = new StringBuilder(2048);
-                reader = new TranslateReader(_context, BUNDLE_NAME, new FileInputStream(_page));
-                int len;
-                while((len = reader.read(buf)) > 0) {
-                    out.append(buf, 0, len);
-                }
-                return out.toString();
-            } catch (IOException ioe) {
-                return "";
-            } finally {
-                try {
-                    if (reader != null)
-                        reader.close();
-                } catch (IOException foo) {}
-            }
-        }
-        return super.getContent();
+        return NewsFeedHelper.getEntries(_context, 0, 2);
     }
 
     /**
@@ -307,7 +309,10 @@ public class NewsHelper extends ContentHelper {
                  buf.append(" <a href=\"/?news=1&amp;consoleNonce=").append(consoleNonce).append("\">")
                     .append(Messages.getString("Show news", ctx));
              }
-             buf.append("</a>");
+             buf.append("</a>" +
+                        " - <a href=\"/news\">")
+                .append(Messages.getString("Show all news", ctx))
+                .append("</a>");
          }
          return buf.toString();
     }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
index d0a6277e0139456ee67cbc26d207efdad04c601e..386eb664e1100555a511ea2e402d7a2da52fbdb3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java
@@ -157,6 +157,12 @@ public class PluginStarter implements Runnable {
                                      Messages.getString("HTTP client proxy tunnel must be running", ctx));
             return;
         }
+        if (ctx.commSystem().isDummy()) {
+            mgr.notifyComplete(null, Messages.getString("Plugin update check failed", ctx) +
+                                     " - " +
+                                     "VM Comm System");
+            return;
+        }
 
         Log log = ctx.logManager().getLog(PluginStarter.class);
         int updated = 0;
@@ -258,6 +264,7 @@ public class PluginStarter implements Runnable {
      *  @return true on success
      *  @throws just about anything, caller would be wise to catch Throwable
      */
+    @SuppressWarnings("deprecation")
     public static boolean startPlugin(RouterContext ctx, String appName) throws Exception {
         Log log = ctx.logManager().getLog(PluginStarter.class);
         File pluginDir = new File(ctx.getConfigDir(), PLUGIN_DIR + '/' + appName);
@@ -338,9 +345,11 @@ public class PluginStarter implements Runnable {
         if (tfiles != null) {
             for (int i = 0; i < tfiles.length; i++) {
                 String name = tfiles[i].getName();
-                if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i])))
+                if (tfiles[i].isDirectory() && (!Arrays.asList(STANDARD_THEMES).contains(tfiles[i]))) {
+                    // deprecated
                     ctx.router().setConfigSetting(ConfigUIHelper.PROP_THEME_PFX + name, tfiles[i].getAbsolutePath());
                     // we don't need to save
+                }
             }
         }
 
@@ -537,7 +546,7 @@ public class PluginStarter implements Runnable {
 
         boolean deleted = FileUtil.rmdir(pluginDir, false);
         Properties props = pluginProperties();
-        for (Iterator iter = props.keySet().iterator(); iter.hasNext(); ) {
+        for (Iterator<?> iter = props.keySet().iterator(); iter.hasNext(); ) {
             String name = (String)iter.next();
             if (name.startsWith(PREFIX + appName + '.'))
                 iter.remove();
@@ -967,7 +976,7 @@ public class PluginStarter implements Runnable {
     private static void addPath(URL u) throws Exception {
         URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
         Class<URLClassLoader> urlClass = URLClassLoader.class;
-        Method method = urlClass.getDeclaredMethod("addURL", new Class[]{URL.class});
+        Method method = urlClass.getDeclaredMethod("addURL", URL.class);
         method.setAccessible(true);
         method.invoke(urlClassLoader, new Object[]{u});
     }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
index 1a5461246233f301712523774730f01d93152ca0..2cb7e311f2cce2a8ee39c654137aea1950d63b8a 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java
@@ -75,7 +75,7 @@ class ProfileOrganizerRenderer {
       ////
       if (mode < 2) {
 
-        //buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+        //buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
         buf.append(ngettext("Showing 1 recent profile.", "Showing {0} recent profiles.", order.size())).append('\n');
         if (older > 0)
             buf.append(ngettext("Hiding 1 older profile.", "Hiding {0} older profiles.", older)).append('\n');
@@ -84,12 +84,12 @@ class ProfileOrganizerRenderer {
         buf.append("</p>");
                    buf.append("<table>");
                    buf.append("<tr>");
-                   buf.append("<th>").append(_("Peer")).append("</th>");
-                   buf.append("<th>").append(_("Groups (Caps)")).append("</th>");
-                   buf.append("<th>").append(_("Speed")).append("</th>");
-                   buf.append("<th>").append(_("Capacity")).append("</th>");
-                   buf.append("<th>").append(_("Integration")).append("</th>");
-                   buf.append("<th>").append(_("Status")).append("</th>");
+                   buf.append("<th>").append(_t("Peer")).append("</th>");
+                   buf.append("<th>").append(_t("Groups (Caps)")).append("</th>");
+                   buf.append("<th>").append(_t("Speed")).append("</th>");
+                   buf.append("<th>").append(_t("Capacity")).append("</th>");
+                   buf.append("<th>").append(_t("Integration")).append("</th>");
+                   buf.append("<th>").append(_t("Status")).append("</th>");
                    buf.append("<th>&nbsp;</th>");
                    buf.append("</tr>");
         int prevTier = 1;
@@ -127,12 +127,12 @@ class ProfileOrganizerRenderer {
             buf.append("</td><td align=\"center\">");
             
             switch (tier) {
-                case 1: buf.append(_("Fast, High Capacity")); break;
-                case 2: buf.append(_("High Capacity")); break;
-                case 3: buf.append(_("Standard")); break;
-                default: buf.append(_("Failing")); break;
+                case 1: buf.append(_t("Fast, High Capacity")); break;
+                case 2: buf.append(_t("High Capacity")); break;
+                case 3: buf.append(_t("Standard")); break;
+                default: buf.append(_t("Failing")); break;
             }
-            if (isIntegrated) buf.append(", ").append(_("Integrated"));
+            if (isIntegrated) buf.append(", ").append(_t("Integrated"));
             RouterInfo info = _context.netDb().lookupRouterInfoLocally(peer);
             if (info != null) {
                 // prevent HTML injection in the caps and version
@@ -163,9 +163,9 @@ class ProfileOrganizerRenderer {
             }
             buf.append("</td><td align=\"right\">").append(num(prof.getIntegrationValue()));
             buf.append("</td><td align=\"center\">");
-            if (_context.banlist().isBanlisted(peer)) buf.append(_("Banned"));
-            if (prof.getIsFailing()) buf.append(' ').append(_("Failing"));
-            if (_context.commSystem().wasUnreachable(peer)) buf.append(' ').append(_("Unreachable"));
+            if (_context.banlist().isBanlisted(peer)) buf.append(_t("Banned"));
+            if (prof.getIsFailing()) buf.append(' ').append(_t("Failing"));
+            if (_context.commSystem().wasUnreachable(peer)) buf.append(' ').append(_t("Unreachable"));
             RateAverages ra = RateAverages.getTemp();
             Rate failed = prof.getTunnelHistory().getFailedRate().getRate(30*60*1000);
             long fails = failed.computeAverages(ra, false).getTotalEventCount();
@@ -173,13 +173,13 @@ class ProfileOrganizerRenderer {
                 Rate accepted = prof.getTunnelCreateResponseTime().getRate(30*60*1000);
                 long total = fails + accepted.computeAverages(ra, false).getTotalEventCount();
                 if (total / fails <= 10)   // hide if < 10%
-                    buf.append(' ').append(fails).append('/').append(total).append(' ').append(_("Test Fails"));
+                    buf.append(' ').append(fails).append('/').append(total).append(' ').append(_t("Test Fails"));
             }
             buf.append("&nbsp;</td>");
             //buf.append("<td nowrap align=\"center\"><a target=\"_blank\" href=\"dumpprofile.jsp?peer=")
-            //   .append(peer.toBase64().substring(0,6)).append("\">").append(_("profile")).append("</a>");
+            //   .append(peer.toBase64().substring(0,6)).append("\">").append(_t("profile")).append("</a>");
             buf.append("<td nowrap align=\"center\"><a href=\"viewprofile?peer=")
-               .append(peer.toBase64()).append("\">").append(_("profile")).append("</a>");
+               .append(peer.toBase64()).append("\">").append(_t("profile")).append("</a>");
             buf.append("&nbsp;<a href=\"configpeer?peer=").append(peer.toBase64()).append("\">+-</a></td>\n");
             buf.append("</tr>");
             // let's not build the whole page in memory (~500 bytes per peer)
@@ -193,26 +193,26 @@ class ProfileOrganizerRenderer {
       ////
       } else {
 
-        //buf.append("<h2><a name=\"flood\"></a>").append(_("Floodfill and Integrated Peers"))
+        //buf.append("<h2><a name=\"flood\"></a>").append(_t("Floodfill and Integrated Peers"))
         //   .append(" (").append(integratedPeers.size()).append(")</h2>\n");
         buf.append("<table>");
         buf.append("<tr>");
-        buf.append("<th class=\"smallhead\">").append(_("Peer")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Caps")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Integ. Value")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Last Heard About")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Last Heard From")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Last Good Send")).append("</th>");        
-        buf.append("<th class=\"smallhead\">").append(_("Last Bad Send")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("10m Resp. Time")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("1h Resp. Time")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("1d Resp. Time")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Last Good Lookup")).append("</th>"); 
-        buf.append("<th class=\"smallhead\">").append(_("Last Bad Lookup")).append("</th>");        
-        buf.append("<th class=\"smallhead\">").append(_("Last Good Store")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("Last Bad Store")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("1h Fail Rate")).append("</th>");
-        buf.append("<th class=\"smallhead\">").append(_("1d Fail Rate")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Peer")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Caps")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Integ. Value")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Last Heard About")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Last Heard From")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Last Good Send")).append("</th>");        
+        buf.append("<th class=\"smallhead\">").append(_t("Last Bad Send")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("10m Resp. Time")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("1h Resp. Time")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("1d Resp. Time")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Last Good Lookup")).append("</th>"); 
+        buf.append("<th class=\"smallhead\">").append(_t("Last Bad Lookup")).append("</th>");        
+        buf.append("<th class=\"smallhead\">").append(_t("Last Good Store")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("Last Bad Store")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("1h Fail Rate")).append("</th>");
+        buf.append("<th class=\"smallhead\">").append(_t("1d Fail Rate")).append("</th>");
         buf.append("</tr>");
         RateAverages ra = RateAverages.getTemp();
         for (PeerProfile prof : order) {
@@ -227,33 +227,24 @@ class ProfileOrganizerRenderer {
             else
                 buf.append("<td>&nbsp;</td>");
             buf.append("<td align=\"right\">").append(num(prof.getIntegrationValue())).append("</td>");
-            long time;
-            time = now - prof.getLastHeardAbout();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-            time = now - prof.getLastHeardFrom();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-            time = now - prof.getLastSendSuccessful();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-            time = now - prof.getLastSendFailed();
-            buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastHeardAbout())).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastHeardFrom())).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastSendSuccessful())).append("</td>");
+            buf.append("<td align=\"right\">").append(formatInterval(now, prof.getLastSendFailed())).append("</td>");
             buf.append("<td align=\"right\">").append(avg(prof, 10*60*1000l, ra)).append("</td>");
             buf.append("<td align=\"right\">").append(avg(prof, 60*60*1000l, ra)).append("</td>");
             buf.append("<td align=\"right\">").append(avg(prof, 24*60*60*1000l, ra)).append("</td>");
             DBHistory dbh = prof.getDBHistory();
             if (dbh != null) {
-                time = now - dbh.getLastLookupSuccessful();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-                time = now - dbh.getLastLookupFailed();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-                time = now - dbh.getLastStoreSuccessful();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
-                time = now - dbh.getLastStoreFailed();
-                buf.append("<td align=\"right\">").append(DataHelper.formatDuration2(time)).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastLookupSuccessful())).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastLookupFailed())).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastStoreSuccessful())).append("</td>");
+                buf.append("<td align=\"right\">").append(formatInterval(now, dbh.getLastStoreFailed())).append("</td>");
                 buf.append("<td align=\"right\">").append(davg(dbh, 60*60*1000l, ra)).append("</td>");
                 buf.append("<td align=\"right\">").append(davg(dbh, 24*60*60*1000l, ra)).append("</td>");
             } else {
                 for (int i = 0; i < 6; i++)
-                    buf.append("<td align=\"right\">").append(_(NA));
+                    buf.append("<td align=\"right\">").append(_t(NA));
             }
             buf.append("</tr>\n");
         }
@@ -265,20 +256,20 @@ class ProfileOrganizerRenderer {
       }
       if (mode < 2) {
 
-        buf.append("<h3>").append(_("Thresholds")).append("</h3>");
-        buf.append("<p><b>").append(_("Speed")).append(":</b> ").append(num(_organizer.getSpeedThreshold()))
-           .append(" (").append(fast).append(' ').append(_("fast peers")).append(")<br>");
-        buf.append("<b>").append(_("Capacity")).append(":</b> ").append(num(_organizer.getCapacityThreshold()))
-           .append(" (").append(reliable).append(' ').append(_("high capacity peers")).append(")<br>");
-        buf.append("<b>").append(_("Integration")).append(":</b> ").append(num(_organizer.getIntegrationThreshold()))
-           .append(" (").append(integrated).append(' ').append(_(" well integrated peers")).append(")</p>");
-        buf.append("<h3>").append(_("Definitions")).append("</h3><ul>");
-        buf.append("<li><b>").append(_("groups")).append("</b>: ").append(_("as determined by the profile organizer")).append("</li>");
-        buf.append("<li><b>").append(_("caps")).append("</b>: ").append(_("capabilities in the netDb, not used to determine profiles")).append("</li>");
-        buf.append("<li><b>").append(_("speed")).append("</b>: ").append(_("peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel")).append("</li>");
-        buf.append("<li><b>").append(_("capacity")).append("</b>: ").append(_("how many tunnels can we ask them to join in an hour?")).append("</li>");
-        buf.append("<li><b>").append(_("integration")).append("</b>: ").append(_("how many new peers have they told us about lately?")).append("</li>");
-        buf.append("<li><b>").append(_("status")).append("</b>: ").append(_("is the peer banned, or unreachable, or failing tunnel tests?")).append("</li>");
+        buf.append("<h3>").append(_t("Thresholds")).append("</h3>");
+        buf.append("<p><b>").append(_t("Speed")).append(":</b> ").append(num(_organizer.getSpeedThreshold()))
+           .append(" (").append(fast).append(' ').append(_t("fast peers")).append(")<br>");
+        buf.append("<b>").append(_t("Capacity")).append(":</b> ").append(num(_organizer.getCapacityThreshold()))
+           .append(" (").append(reliable).append(' ').append(_t("high capacity peers")).append(")<br>");
+        buf.append("<b>").append(_t("Integration")).append(":</b> ").append(num(_organizer.getIntegrationThreshold()))
+           .append(" (").append(integrated).append(' ').append(_t(" well integrated peers")).append(")</p>");
+        buf.append("<h3>").append(_t("Definitions")).append("</h3><ul>");
+        buf.append("<li><b>").append(_t("groups")).append("</b>: ").append(_t("as determined by the profile organizer")).append("</li>");
+        buf.append("<li><b>").append(_t("caps")).append("</b>: ").append(_t("capabilities in the netDb, not used to determine profiles")).append("</li>");
+        buf.append("<li><b>").append(_t("speed")).append("</b>: ").append(_t("peak throughput (bytes per second) over a 1 minute period that the peer has sustained in a single tunnel")).append("</li>");
+        buf.append("<li><b>").append(_t("capacity")).append("</b>: ").append(_t("how many tunnels can we ask them to join in an hour?")).append("</li>");
+        buf.append("<li><b>").append(_t("integration")).append("</b>: ").append(_t("how many new peers have they told us about lately?")).append("</li>");
+        buf.append("<li><b>").append(_t("status")).append("</b>: ").append(_t("is the peer banned, or unreachable, or failing tunnel tests?")).append("</li>");
         buf.append("</ul>");
 
       ////
@@ -345,13 +336,13 @@ class ProfileOrganizerRenderer {
     private String avg (PeerProfile prof, long rate, RateAverages ra) {
             RateStat rs = prof.getDbResponseTime();
             if (rs == null)
-                return _(NA);
+                return _t(NA);
             Rate r = rs.getRate(rate);
             if (r == null)
-                return _(NA);
+                return _t(NA);
             r.computeAverages(ra, false);
             if (ra.getTotalEventCount() == 0)
-                return _(NA);
+                return _t(NA);
             return DataHelper.formatDuration2(Math.round(ra.getAverage()));
     }
 
@@ -369,8 +360,15 @@ class ProfileOrganizerRenderer {
             return ((int) avg) + "%";
     }
 
+    /** @since 0.9.21 */
+    private String formatInterval(long now, long then) {
+        if (then <= 0)
+            return _t(NA);
+        return DataHelper.formatDuration2(now - then);
+    }
+
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         return Messages.getString(s, _context);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
index 6645558d5d730a2fc5b48c5c11557bcdf33eb811..3236d1f126cad7c5b2c6282d56cd174406be0f13 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfilesHelper.java
@@ -104,12 +104,12 @@ public class ProfilesHelper extends HelperBase {
                 // we are there
                 if (span)
                     buf.append("<span class=\"tab2\">");
-                buf.append(_(titles[i]));
+                buf.append(_t(titles[i]));
             } else {
                 // we are not there, make a link
                 if (span)
                     buf.append("<span class=\"tab\">");
-                buf.append("<a href=\"profiles").append(links[i]).append("\">").append(_(titles[i])).append("</a>");
+                buf.append("<a href=\"profiles").append(links[i]).append("\">").append(_t(titles[i])).append("</a>");
             }
             if (span)
                 buf.append(" </span>\n");
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
index 213f82db14533a26f75c096ed0095c40ed0081b7..f16cee60856cb3897782bca0601e9eb1718b1e36 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java
@@ -26,8 +26,9 @@ import net.i2p.crypto.KeyStoreUtil;
 import net.i2p.data.DataHelper;
 import net.i2p.jetty.I2PLogger;
 import net.i2p.router.RouterContext;
-import net.i2p.router.update.ConsoleUpdateManager;
 import net.i2p.router.app.RouterApp;
+import net.i2p.router.news.NewsManager;
+import net.i2p.router.update.ConsoleUpdateManager;
 import net.i2p.util.Addresses;
 import net.i2p.util.FileUtil;
 import net.i2p.util.I2PAppThread;
@@ -298,12 +299,12 @@ public class RouterConsoleRunner implements RouterApp {
             log.logAlways(net.i2p.util.Log.WARN, s);
             System.out.println("Warning: " + s);
             if (noJava7) {
-                s = "Java 7 will be required by mid-2015, please upgrade soon";
+                s = "Java 7 will be required by late 2015, please upgrade soon";
                 log.logAlways(net.i2p.util.Log.WARN, s);
                 System.out.println("Warning: " + s);
             }
             if (noPack200) {
-                s = "Pack200 will be required by mid-2015, please upgrade Java soon";
+                s = "Pack200 will be required by late 2015, please upgrade Java soon";
                 log.logAlways(net.i2p.util.Log.WARN, s);
                 System.out.println("Warning: " + s);
             }
@@ -517,7 +518,7 @@ public class RouterConsoleRunner implements RouterApp {
                     sslFactory.setKeyManagerPassword(_context.getProperty(PROP_KEY_PASSWORD, "thisWontWork"));
                     sslFactory.addExcludeProtocols(I2PSSLSocketFactory.EXCLUDE_PROTOCOLS.toArray(
                                                    new String[I2PSSLSocketFactory.EXCLUDE_PROTOCOLS.size()]));
-                    sslFactory.addExcludeCipherSuites(I2PSSLSocketFactory.INCLUDE_CIPHERS.toArray(
+                    sslFactory.addExcludeCipherSuites(I2PSSLSocketFactory.EXCLUDE_CIPHERS.toArray(
                                                       new String[I2PSSLSocketFactory.EXCLUDE_CIPHERS.size()]));
                     StringTokenizer tok = new StringTokenizer(_sslListenHost, " ,");
                     while (tok.hasMoreTokens()) {
@@ -706,6 +707,8 @@ public class RouterConsoleRunner implements RouterApp {
         
             ConsoleUpdateManager um = new ConsoleUpdateManager(_context, _mgr, null);
             um.start();
+            NewsManager nm = new NewsManager(_context, _mgr, null);
+            nm.startup();
         
             if (PluginStarter.pluginsEnabled(_context)) {
                 t = new I2PAppThread(new PluginStarter(_context), "PluginStarter", true);
@@ -757,6 +760,13 @@ public class RouterConsoleRunner implements RouterApp {
                     changes.put(PROP_KEY_PASSWORD, keyPassword);
                     _context.router().saveConfig(changes, null);
                 } catch (Exception e) {}  // class cast exception
+                // export cert, fails silently
+                File dir = new SecureDirectory(_context.getConfigDir(), "certificates");
+                dir.mkdir();
+                dir = new SecureDirectory(dir, "console");
+                dir.mkdir();
+                File certFile = new File(dir, "console.local.crt");
+                KeyStoreUtil.exportCert(ks, DEFAULT_KEYSTORE_PASSWORD, "console", certFile);
             }
         }
         if (success) {
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java
index 3ee03289be3b835a9bb0fe1d7647e8b8e4e54f82..e04809d6f3a338cc82e239285c8bfb02fae57045 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SearchHelper.java
@@ -71,7 +71,7 @@ public class SearchHelper extends HelperBase {
             }
         }
         StringBuilder buf = new StringBuilder(1024);
-        buf.append("<select name=\"engine\" title=\"").append(_("Select search engine")).append("\">");
+        buf.append("<select name=\"engine\" title=\"").append(_t("Select search engine")).append("\">");
         for (String name : _engines.keySet()) {
             buf.append("<option value=\"").append(name).append('\"');
             if (name.equals(dflt))
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java
index 853bcbe81a5bebd0e27ada7864f5c701d758b042..b55283b4cc559af7b5898c0b9746f5df5b5646f5 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/StatSummarizer.java
@@ -329,7 +329,7 @@ public class StatSummarizer implements Runnable {
         else if (height <= 0)
             height = GraphHelper.DEFAULT_Y;
         txLsnr.renderPng(out, width, height, hideLegend, hideGrid, hideTitle, showEvents, periodCount,
-                         end, showCredit, rxLsnr, _("Bandwidth usage"));
+                         end, showCredit, rxLsnr, _t("Bandwidth usage"));
         return true;
     }
     
@@ -375,7 +375,7 @@ public class StatSummarizer implements Runnable {
     private static final boolean IS_WIN = SystemVersion.isWindows();
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         // the RRD font doesn't have zh chars, at least on my system
         // Works on 1.5.9 except on windows
         if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java
index 80fca929858a264617457f19df02abed1005bcdc..634940edf5407631ecfb1bfd29c908d4be82c545 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java
@@ -40,7 +40,7 @@ public class StatsGenerator {
         groups.putAll(unsorted);
         for (String group : groups.keySet()) {
             buf.append("<option value=\"#").append(group).append("\">");
-            buf.append(_(group)).append("</option>\n");
+            buf.append(_t(group)).append("</option>\n");
             // let's just do the groups
             //Set stats = (Set)entry.getValue();
             //for (Iterator statIter = stats.iterator(); statIter.hasNext(); ) {
@@ -54,14 +54,14 @@ public class StatsGenerator {
             //out.write(buf.toString());
             //buf.setLength(0);
         }
-        buf.append("</select> <input type=\"submit\" value=\"").append(_("GO")).append("\" />");
+        buf.append("</select> <input type=\"submit\" value=\"").append(_t("GO")).append("\" />");
         buf.append("</form>");
         
-        buf.append(_("Statistics gathered during this router's uptime")).append(" (");
+        buf.append(_t("Statistics gathered during this router's uptime")).append(" (");
         long uptime = _context.router().getUptime();
         buf.append(DataHelper.formatDuration2(uptime));
-        buf.append(").  ").append( _("The data gathered is quantized over a 1 minute period, so should just be used as an estimate."));
-        buf.append(' ').append( _("These statistics are primarily used for development and debugging."));
+        buf.append(").  ").append( _t("The data gathered is quantized over a 1 minute period, so should just be used as an estimate."));
+        buf.append(' ').append( _t("These statistics are primarily used for development and debugging."));
 
         out.write(buf.toString());
         buf.setLength(0);
@@ -72,7 +72,7 @@ public class StatsGenerator {
             buf.append("<h3><a name=\"");
             buf.append(group);
             buf.append("\">");
-            buf.append(_(group));
+            buf.append(_t(group));
             buf.append("</a></h3>");
             buf.append("<ul>");
             out.write(buf.toString());
@@ -102,7 +102,7 @@ public class StatsGenerator {
         buf.append(freq.getDescription());
         buf.append("</i><br>");
         if (freq.getEventCount() <= 0) {
-            buf.append(_("No lifetime events")).append("<br>\n");
+            buf.append(_t("No lifetime events")).append("<br>\n");
             return;
         }
         long uptime = _context.router().getUptime();
@@ -113,15 +113,15 @@ public class StatsGenerator {
             if (periods[i] > uptime)
                 break;
             buf.append("<li>");
-            renderPeriod(buf, periods[i], _("frequency"));
+            renderPeriod(buf, periods[i], _t("frequency"));
             Frequency curFreq = freq.getFrequency(periods[i]);
             buf.append(DataHelper.formatDuration2(Math.round(curFreq.getAverageInterval())));
             buf.append("; ");
-            buf.append(_("Rolling average events per period"));
+            buf.append(_t("Rolling average events per period"));
             buf.append(": ");
             buf.append(num(curFreq.getAverageEventsPerPeriod()));
             buf.append("; ");
-            buf.append(_("Highest events per period"));
+            buf.append(_t("Highest events per period"));
             buf.append(": ");
             buf.append(num(curFreq.getMaxAverageEventsPerPeriod()));
             buf.append("; ");
@@ -132,12 +132,12 @@ public class StatsGenerator {
             //}
             //buf.append(" <i>avg interval between updates:</i> (").append(num(curFreq.getAverageInterval())).append("ms, min ");
             //buf.append(num(curFreq.getMinAverageInterval())).append("ms)");
-            buf.append(_("Lifetime average events per period")).append(": ");
+            buf.append(_t("Lifetime average events per period")).append(": ");
             buf.append(num(curFreq.getStrictAverageEventsPerPeriod()));
             buf.append("</li>\n");
         }
         // Display the strict average
-        buf.append("<li><b>").append(_("Lifetime average frequency")).append(":</b> ");
+        buf.append("<li><b>").append(_t("Lifetime average frequency")).append(":</b> ");
         buf.append(DataHelper.formatDuration2(freq.getFrequency()));
         buf.append(" (");
         buf.append(ngettext("1 event", "{0} events", (int) freq.getEventCount()));
@@ -153,7 +153,7 @@ public class StatsGenerator {
             buf.append("</i><br>");
         }
         if (rate.getLifetimeEventCount() <= 0) {
-            buf.append(_("No lifetime events")).append("<br>\n");
+            buf.append(_t("No lifetime events")).append("<br>\n");
             return;
         }
         long now = _context.clock().now();
@@ -165,12 +165,12 @@ public class StatsGenerator {
             if (curRate.getLastCoalesceDate() <= curRate.getCreationDate())
                 break;
             buf.append("<li>");
-            renderPeriod(buf, periods[i], _("rate"));
+            renderPeriod(buf, periods[i], _t("rate"));
             if (curRate.getLastEventCount() > 0) {
-                buf.append(_("Average")).append(": ");
+                buf.append(_t("Average")).append(": ");
                 buf.append(num(curRate.getAverageValue()));
                 buf.append("; ");
-                buf.append(_("Highest average"));
+                buf.append(_t("Highest average"));
                 buf.append(": ");
                 buf.append(num(curRate.getExtremeAverageValue()));
                 buf.append("; ");
@@ -199,16 +199,16 @@ public class StatsGenerator {
 
                 buf.append(ngettext("There was 1 event in this period.", "There were {0} events in this period.", (int)curRate.getLastEventCount()));
                 buf.append(' ');
-                buf.append(_("The period ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate())));
+                buf.append(_t("The period ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate())));
             } else {
-                buf.append(" <i>").append(_("No events")).append("</i> ");
+                buf.append(" <i>").append(_t("No events")).append("</i> ");
             }
             long numPeriods = curRate.getLifetimePeriods();
             if (numPeriods > 0) {
                 double avgFrequency = curRate.getLifetimeEventCount() / (double)numPeriods;
-                buf.append(" (").append(_("Average event count")).append(": ");
+                buf.append(" (").append(_t("Average event count")).append(": ");
                 buf.append(num(avgFrequency));
-                buf.append("; ").append(_("Events in peak period")).append(": ");
+                buf.append("; ").append(_t("Events in peak period")).append(": ");
                 // This isn't really the highest event count, but the event count during the period with the highest total value.
                 buf.append(curRate.getExtremeEventCount());
                 buf.append(")");
@@ -216,19 +216,19 @@ public class StatsGenerator {
             if (curRate.getSummaryListener() != null) {
                 buf.append(" <a href=\"graph?stat=").append(name)
                    .append('.').append(periods[i]);
-                buf.append("\">").append(_("Graph Data")).append("</a> - ");
+                buf.append("\">").append(_t("Graph Data")).append("</a> - ");
                 buf.append(" <a href=\"graph?stat=").append(name)
                    .append('.').append(periods[i]);
-                buf.append("&amp;showEvents=true\">").append(_("Graph Event Count")).append("</a>");
+                buf.append("&amp;showEvents=true\">").append(_t("Graph Event Count")).append("</a>");
                 // This can really blow up your browser if you click on it
                 //buf.append(" - <a href=\"viewstat.jsp?stat=").append(name);
                 //buf.append("&amp;period=").append(periods[i]);
-                //buf.append("&amp;format=xml\">").append(_("Export Data as XML")).append("</a>");
+                //buf.append("&amp;format=xml\">").append(_t("Export Data as XML")).append("</a>");
             }
             buf.append("</li>\n");
         }
         // Display the strict average
-        buf.append("<li><b>").append(_("Lifetime average value")).append(":</b> ");
+        buf.append("<li><b>").append(_t("Lifetime average value")).append(":</b> ");
         buf.append(num(rate.getLifetimeAverageValue()));
         buf.append(" (");
         buf.append(ngettext("1 event", "{0} events", (int) rate.getLifetimeEventCount()));
@@ -258,19 +258,19 @@ public class StatsGenerator {
      */
     private class AlphaComparator implements Comparator<String> {
         public int compare(String lhs, String rhs) {
-            String lname = _(lhs);
-            String rname = _(rhs);
+            String lname = _t(lhs);
+            String rname = _t(rhs);
             return Collator.getInstance().compare(lname, rname);
         }
     }
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         return Messages.getString(s, _context);
     }
 
     /** translate a string */
-    private String _(String s, Object o) {
+    private String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java
index 302316217749cec426d43deef349f91654a27eec..002f7983b0c38e3ef81c7aff16d2505406c3a2bc 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java
@@ -3,14 +3,22 @@ package net.i2p.router.web;
 import java.io.File;
 import java.io.IOException;
 import java.io.Writer;
+import java.text.DateFormat;
 import java.util.Collections;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.TimeZone;
 
+import net.i2p.app.ClientAppManager;
 import net.i2p.crypto.SigType;
 import net.i2p.data.DataHelper;
 import net.i2p.router.RouterContext;
+import net.i2p.router.news.NewsEntry;
+import net.i2p.router.news.NewsManager;
+import net.i2p.util.PortMapper;
+import net.i2p.util.SystemVersion;
 
 /**
  *  Refactored from summarynoframe.jsp to save ~100KB
@@ -117,9 +125,9 @@ public class SummaryBarRenderer {
     public String renderHelpAndFAQHTML() {
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/help\" target=\"_top\" title=\"")
-           .append(_("I2P Router Help &amp; FAQ"))
+           .append(_t("I2P Router Help &amp; FAQ"))
            .append("\">")
-           .append(_("Help &amp; FAQ"))
+           .append(_t("Help &amp; FAQ"))
            .append("</a></h3>");
         return buf.toString();
     }
@@ -127,29 +135,33 @@ public class SummaryBarRenderer {
     public String renderI2PServicesHTML() {
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/configclients\" target=\"_top\" title=\"")
-           .append(_("Configure startup of clients and webapps (services); manually start dormant services"))
+           .append(_t("Configure startup of clients and webapps (services); manually start dormant services"))
            .append("\">")
-           .append(_("I2P Services"))
+           .append(_t("I2P Services"))
            .append("</a></h3>\n" +
 
                    "<hr class=\"b\"><table><tr><td>" +
 
                    "<a href=\"/susimail/susimail\" target=\"_blank\" title=\"")
-           .append(_("Anonymous webmail client"))
+           .append(_t("Anonymous webmail client"))
            .append("\">")
-           .append(nbsp(_("Email")))
+           .append(nbsp(_t("Email")))
            .append("</a>\n" +
 
                    "<a href=\"/i2psnark/\" target=\"_blank\" title=\"")
-           .append(_("Built-in anonymous BitTorrent Client"))
+           .append(_t("Built-in anonymous BitTorrent Client"))
            .append("\">")
-           .append(nbsp(_("Torrents")))
+           .append(nbsp(_t("Torrents")))
            .append("</a>\n" +
 
-                   "<a href=\"http://127.0.0.1:7658/\" target=\"_blank\" title=\"")
-           .append(_("Local web server"))
+                   "<a href=\"http://")
+           .append(_context.portMapper().getHost(PortMapper.SVC_EEPSITE, "127.0.0.1"))
+           .append(':')
+           .append(_context.portMapper().getPort(PortMapper.SVC_EEPSITE, 7658))
+           .append("/\" target=\"_blank\" title=\"")
+           .append(_t("Local web server"))
            .append("\">")
-           .append(nbsp(_("Website")))
+           .append(nbsp(_t("Website")))
            .append("</a>\n")
 
            .append(NavHelper.getClientAppLinks(_context))
@@ -161,73 +173,73 @@ public class SummaryBarRenderer {
     public String renderI2PInternalsHTML() {
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/config\" target=\"_top\" title=\"")
-           .append(_("Configure I2P Router"))
+           .append(_t("Configure I2P Router"))
            .append("\">")
-           .append(_("I2P Internals"))
+           .append(_t("I2P Internals"))
            .append("</a></h3><hr class=\"b\">\n" +
 
                    "<table><tr><td>\n" +
 
                    "<a href=\"/tunnels\" target=\"_top\" title=\"")
-           .append(_("View existing tunnels and tunnel build status"))
+           .append(_t("View existing tunnels and tunnel build status"))
            .append("\">")
-           .append(nbsp(_("Tunnels")))
+           .append(nbsp(_t("Tunnels")))
            .append("</a>\n" +
 
                    "<a href=\"/peers\" target=\"_top\" title=\"")
-           .append(_("Show all current peer connections"))
+           .append(_t("Show all current peer connections"))
            .append("\">")
-           .append(nbsp(_("Peers")))
+           .append(nbsp(_t("Peers")))
            .append("</a>\n" +
 
                    "<a href=\"/profiles\" target=\"_top\" title=\"")
-           .append(_("Show recent peer performance profiles"))
+           .append(_t("Show recent peer performance profiles"))
            .append("\">")
-           .append(nbsp(_("Profiles")))
+           .append(nbsp(_t("Profiles")))
            .append("</a>\n" +
 
                    "<a href=\"/netdb\" target=\"_top\" title=\"")
-           .append(_("Show list of all known I2P routers"))
+           .append(_t("Show list of all known I2P routers"))
            .append("\">")
-           .append(nbsp(_("NetDB")))
+           .append(nbsp(_t("NetDB")))
            .append("</a>\n" +
 
                    "<a href=\"/logs\" target=\"_top\" title=\"")
-           .append(_("Health Report"))
+           .append(_t("Health Report"))
            .append("\">")
-           .append(nbsp(_("Logs")))
+           .append(nbsp(_t("Logs")))
            .append("</a>\n");
 
        //          "<a href=\"/jobs.jsp\" target=\"_top\" title=\"")
-       //  .append(_("Show the router's workload, and how it's performing"))
+       //  .append(_t("Show the router's workload, and how it's performing"))
        //  .append("\">")
-       //  .append(_("Jobs"))
+       //  .append(_t("Jobs"))
        //  .append("</a>\n" +
 
         if (!StatSummarizer.isDisabled()) {
             buf.append("<a href=\"/graphs\" target=\"_top\" title=\"")
-               .append(_("Graph router performance"))
+               .append(_t("Graph router performance"))
                .append("\">")
-               .append(nbsp(_("Graphs")))
+               .append(nbsp(_t("Graphs")))
                .append("</a>\n");
         }
 
         buf.append("<a href=\"/stats\" target=\"_top\" title=\"")
-           .append(_("Textual router performance statistics"))
+           .append(_t("Textual router performance statistics"))
            .append("\">")
-           .append(nbsp(_("Stats")))
+           .append(nbsp(_t("Stats")))
            .append("</a>\n" +
 
                    "<a href=\"/dns\" target=\"_top\" title=\"")
-           .append(_("Manage your I2P hosts file here (I2P domain name resolution)"))
+           .append(_t("Manage your I2P hosts file here (I2P domain name resolution)"))
            .append("\">")
-           .append(nbsp(_("Addressbook")))
+           .append(nbsp(_t("Addressbook")))
            .append("</a>\n" +
 
                     "<a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"")
-           .append(_("Local Tunnels"))
+           .append(_t("Local Tunnels"))
            .append("\">")
-           .append(nbsp(_("Hidden Services Manager")))
+           .append(nbsp(_t("Hidden Services Manager")))
            .append("</a>\n");
 
         if (_context.getBooleanProperty(HelperBase.PROP_ADVANCED))
@@ -243,44 +255,44 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/help\" target=\"_top\" title=\"")
-           .append(_("I2P Router Help"))
+           .append(_t("I2P Router Help"))
            .append("\">")
-           .append(_("General"))
+           .append(_t("General"))
            .append("</a></h3><hr class=\"b\">\n" +
 
                    "<table><tr>" +
                    "<td align=\"left\"><b title=\"")
-           .append(_("Your Local Identity is your unique I2P router identity, similar to an ip address but tailored to I2P. "))
-           .append(_("Never disclose this to anyone, as it can reveal your real world ip."))
+           .append(_t("Your Local Identity is your unique I2P router identity, similar to an ip address but tailored to I2P. "))
+           .append(_t("Never disclose this to anyone, as it can reveal your real world ip."))
            .append("\">")
-           .append(_("Local Identity"))
+           .append(_t("Local Identity"))
            .append(":</b></td>" +
                    "<td align=\"right\">" +
                    "<a title=\"")
-           .append(_("Your unique I2P router identity is"))
+           .append(_t("Your unique I2P router identity is"))
            .append(' ')
            .append(_helper.getIdent())
            .append(", ")
-           .append(_("never reveal it to anyone"))
+           .append(_t("never reveal it to anyone"))
            .append("\" href=\"/netdb?r=.\" target=\"_top\">")
-           .append(_("show"))
+           .append(_t("show"))
            .append("</a></td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("The version of the I2P software we are running"))
+           .append(_t("The version of the I2P software we are running"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Version"))
+           .append(_t("Version"))
            .append(":</b></td>" +
                    "<td align=\"right\">")
            .append(_helper.getVersion())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("How long we've been running for this session"))
+           .append(_t("How long we've been running for this session"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Uptime"))
+           .append(_t("Uptime"))
            .append(":</b></td>" +
                    "<td align=\"right\">")
            .append(_helper.getUptime())
@@ -293,20 +305,20 @@ public class SummaryBarRenderer {
         StringBuilder buf = new StringBuilder(512);
         buf.append("<table>" +
                    "<tr title=\"")
-           .append(_("The version of the I2P software we are running"))
+           .append(_t("The version of the I2P software we are running"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Version"))
+           .append(_t("Version"))
            .append(":</b></td>" +
                    "<td align=\"right\">")
            .append(_helper.getVersion())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("How long we've been running for this session"))
+           .append(_t("How long we've been running for this session"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Uptime"))
+           .append(_t("Uptime"))
            .append(":</b></td>" +
                    "<td align=\"right\">")
            .append(_helper.getUptime())
@@ -318,9 +330,9 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h4><a href=\"/confignet#help\" target=\"_top\" title=\"")
-           .append(_("Help with configuring your firewall and router for optimal I2P performance"))
+           .append(_t("Help with configuring your firewall and router for optimal I2P performance"))
            .append("\">")
-           .append(_("Network"))
+           .append(_t("Network"))
            .append(": ")
            .append(_helper.getReachability())
            .append("</a></h4>\n");
@@ -329,11 +341,18 @@ public class SummaryBarRenderer {
             if ("ru".equals(Messages.getLanguage(_context)))
                 buf.append("-ru");
             buf.append("\" target=\"_top\" title=\"")
-               .append(_("See more information on the wiki"))
+               .append(_t("See more information on the wiki"))
                .append("\">")
-               .append(_("Warning: ECDSA is not available. Update your Java or OS"))
+               .append(_t("Warning: ECDSA is not available. Update your Java or OS"))
                .append("</a></h4>\n");
         }
+        if (!SystemVersion.isJava7()) {
+            buf.append("<hr><h4>")
+               .append(_t("Warning: Java version {0} is no longer supported by I2P.", System.getProperty("java.version")))
+               .append(' ')
+               .append(_t("Update Java to version {0} or higher to receive I2P updates.", "7"))
+               .append("</h4>\n");
+        }
         return buf.toString();
     }
 
@@ -343,9 +362,9 @@ public class SummaryBarRenderer {
         if ("".equals(updateStatus)) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/configupdate\" target=\"_top\" title=\"")
-           .append(_("Configure I2P Updates"))
+           .append(_t("Configure I2P Updates"))
            .append("\">")
-           .append(_("I2P Update"))
+           .append(_t("I2P Update"))
            .append("</a></h3><hr class=\"b\">\n");
         buf.append(updateStatus);
         return buf.toString();
@@ -362,18 +381,18 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/peers\" target=\"_top\" title=\"")
-           .append(_("Show all current peer connections"))
+           .append(_t("Show all current peer connections"))
            .append("\">")
-           .append(_("Peers"))
+           .append(_t("Peers"))
            .append("</a></h3><hr class=\"b\">\n" +
 
                    "<table>\n" +
 
                    "<tr title=\"")
-           .append(_("Peers we've been talking to in the last few minutes/last hour"))
+           .append(_t("Peers we've been talking to in the last few minutes/last hour"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Active"))
+           .append(_t("Active"))
            .append(":</b></td><td align=\"right\">");
         int active = _helper.getActivePeers();
         buf.append(active)
@@ -382,37 +401,37 @@ public class SummaryBarRenderer {
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("The number of peers available for building client tunnels"))
+           .append(_t("The number of peers available for building client tunnels"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Fast"))
+           .append(_t("Fast"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getFastPeers())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("The number of peers available for building exploratory tunnels"))
+           .append(_t("The number of peers available for building exploratory tunnels"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("High capacity"))
+           .append(_t("High capacity"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getHighCapacityPeers())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("The number of peers available for network database inquiries"))
+           .append(_t("The number of peers available for network database inquiries"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Integrated"))
+           .append(_t("Integrated"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getWellIntegratedPeers())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("The total number of peers in our network database"))
+           .append(_t("The total number of peers in our network database"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Known"))
+           .append(_t("Known"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getAllPeers())
            .append("</td></tr>\n" +
@@ -432,9 +451,9 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/config\" title=\"")
-           .append(_("Configure router bandwidth allocation"))
+           .append(_t("Configure router bandwidth allocation"))
            .append("\" target=\"_top\">")
-           .append(_("Bandwidth in/out"))
+           .append(_t("Bandwidth in/out"))
            .append("</a></h3><hr class=\"b\">" +
                    "<table>\n" +
 
@@ -454,14 +473,14 @@ public class SummaryBarRenderer {
 
         if (_context.router().getUptime() > 2*60*1000) {
             buf.append("<tr><td align=\"left\"><b>")
-           .append(_("Total"))
+           .append(_t("Total"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getLifetimeKBps())
            .append("Bps</td></tr>\n");
         }
 
         buf.append("<tr><td align=\"left\"><b>")
-           .append(_("Used"))
+           .append(_t("Used"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getInboundTransferred())
            .append(SummaryHelper.THINSP)
@@ -476,44 +495,44 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/tunnels\" target=\"_top\" title=\"")
-           .append(_("View existing tunnels and tunnel build status"))
+           .append(_t("View existing tunnels and tunnel build status"))
            .append("\">")
-           .append(_("Tunnels"))
+           .append(_t("Tunnels"))
            .append("</a></h3><hr class=\"b\">" +
                    "<table>\n" +
 
                    "<tr title=\"")
-           .append(_("Used for building and testing tunnels, and communicating with floodfill peers"))
+           .append(_t("Used for building and testing tunnels, and communicating with floodfill peers"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Exploratory"))
+           .append(_t("Exploratory"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getInboundTunnels() + _helper.getOutboundTunnels())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("Tunnels we are using to provide or access services on the network"))
+           .append(_t("Tunnels we are using to provide or access services on the network"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Client"))
+           .append(_t("Client"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getInboundClientTunnels() + _helper.getOutboundClientTunnels())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("Tunnels we are participating in, directly contributing bandwith to the network"))
+           .append(_t("Tunnels we are participating in, directly contributing bandwidth to the network"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Participating"))
+           .append(_t("Participating"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getParticipatingTunnels())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("The ratio of tunnel hops we provide to tunnel hops we use - a value greater than 1.00 indicates a positive contribution to the network"))
+           .append(_t("The ratio of tunnel hops we provide to tunnel hops we use - a value greater than 1.00 indicates a positive contribution to the network"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Share ratio"))
+           .append(_t("Share ratio"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getShareRatio())
            .append("</td></tr>\n" +
@@ -526,46 +545,46 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/jobs\" target=\"_top\" title=\"")
-           .append(_("What's in the router's job queue?"))
+           .append(_t("What's in the router's job queue?"))
            .append("\">")
-           .append(_("Congestion"))
+           .append(_t("Congestion"))
            .append("</a></h3><hr class=\"b\">" +
                    "<table>\n" +
 
                    "<tr title=\"")
-           .append(_("Indicates router performance"))
+           .append(_t("Indicates router performance"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Job lag"))
+           .append(_t("Job lag"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getJobLag())
            .append("</td></tr>\n" +
 
                    "<tr title=\"")
-           .append(_("Indicates how quickly outbound messages to other I2P routers are sent"))
+           .append(_t("Indicates how quickly outbound messages to other I2P routers are sent"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Message delay"))
+           .append(_t("Message delay"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getMessageDelay())
            .append("</td></tr>\n");
 
         if (!_context.getBooleanPropertyDefaultTrue("router.disableTunnelTesting")) {
             buf.append("<tr title=\"")
-           .append(_("Round trip time for a tunnel test"))
+           .append(_t("Round trip time for a tunnel test"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Tunnel lag"))
+           .append(_t("Tunnel lag"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getTunnelLag())
            .append("</td></tr>\n");
         }
 
         buf.append("<tr title=\"")
-           .append(_("Queued requests from other routers to participate in tunnels"))
+           .append(_t("Queued requests from other routers to participate in tunnels"))
            .append("\">" +
                    "<td align=\"left\"><b>")
-           .append(_("Backlog"))
+           .append(_t("Backlog"))
            .append(":</b></td><td align=\"right\">")
            .append(_helper.getInboundBacklog())
            .append("</td></tr>\n" +
@@ -578,7 +597,7 @@ public class SummaryBarRenderer {
         if (_helper == null) return "";
         StringBuilder buf = new StringBuilder(50);
         buf.append("<h4>")
-           .append(_(_helper.getTunnelStatus()))
+           .append(_t(_helper.getTunnelStatus()))
            .append("</h4>\n");
         return buf.toString();
     }
@@ -599,52 +618,48 @@ public class SummaryBarRenderer {
         String consoleNonce = CSSHelper.getNonce();
         if (consoleNonce != null) {
             // Set up title and pre-headings stuff.
-            buf.append("<h3><a href=\"/configupdate\">")
-               .append(_("News &amp; Updates"))
+            //buf.append("<h3><a href=\"/configupdate\">")
+            buf.append("<h3><a href=\"/news\">")
+               .append(_t("News &amp; Updates"))
                .append("</a></h3><hr class=\"b\"><div class=\"newsheadings\">\n");
             // Get news content.
-            String newsContent = newshelper.getContent();
-            if (newsContent != "") {
+            List<NewsEntry> entries = Collections.emptyList();
+            ClientAppManager cmgr = _context.clientAppManager();
+            if (cmgr != null) {
+                NewsManager nmgr = (NewsManager) cmgr.getRegisteredApp(NewsManager.APP_NAME);
+                if (nmgr != null)
+                    entries = nmgr.getEntries();
+            }
+            if (!entries.isEmpty()) {
                 buf.append("<ul>\n");
-                // Parse news content for headings.
-                boolean foundEntry = false;
-                int start = newsContent.indexOf("<h3>");
-                while (start >= 0) {
-                    // Add offset to start:
-                    // 4 - gets rid of <h3>
-                    // 16 - gets rid of the date as well (assuming form "<h3>yyyy-mm-dd: Foobarbaz...")
-                    // Don't truncate the "congratulations" in initial news
-                    if (newsContent.length() > start + 16 &&
-                        newsContent.substring(start + 4, start + 6).equals("20") &&
-                        newsContent.substring(start + 14, start + 16).equals(": "))
-                        newsContent = newsContent.substring(start+16, newsContent.length());
-                    else
-                        newsContent = newsContent.substring(start+4, newsContent.length());
-                    int end = newsContent.indexOf("</h3>");
-                    if (end >= 0) {
-                        String heading = newsContent.substring(0, end);
-                        buf.append("<li><a href=\"/?news=1&amp;consoleNonce=")
-                           .append(consoleNonce)
-                           .append("\">")
-                           .append(heading)
-                           .append("</a></li>\n");
-                        foundEntry = true;
+                DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT);
+                // the router sets the JVM time zone to UTC but saves the original here so we can get it
+                String systemTimeZone = _context.getProperty("i2p.systemTimeZone");
+                if (systemTimeZone != null)
+                    fmt.setTimeZone(TimeZone.getTimeZone(systemTimeZone));
+                int i = 0;
+                final int max = 2;
+                for (NewsEntry entry : entries) {
+                    buf.append("<li><a href=\"/?news=1&amp;consoleNonce=")
+                       .append(consoleNonce)
+                       .append("\">");
+                    if (entry.updated > 0) {
+                        Date date = new Date(entry.updated);
+                        buf.append(fmt.format(date))
+                           .append(": ");
                     }
-                    start = newsContent.indexOf("<h3>");
+                    buf.append(entry.title)
+                       .append("</a></li>\n");
+                    if (++i >= max)
+                        break;
                 }
                 buf.append("</ul>\n");
-                // Set up string containing <a> to show news.
-                String requestURI = _helper.getRequestURI();
-                if (requestURI.contains("/home") && !foundEntry) {
-                    buf.append("<a href=\"/?news=1&amp;consoleNonce=")
-                       .append(consoleNonce)
-                       .append("\">")
-                       .append(_("Show news"))
-                       .append("</a>\n");
-                }
+                //buf.append("<a href=\"/news\">")
+                //   .append(_t("Show all news"))
+                //   .append("</a>\n");
             } else {
                 buf.append("<center><i>")
-                   .append(_("none"))
+                   .append(_t("none"))
                    .append("</i></center>");
             }
             // Add post-headings stuff.
@@ -654,10 +669,15 @@ public class SummaryBarRenderer {
     }
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         return Messages.getString(s, _context);
     }
 
+    /** @since 0.9.23 */
+    private String _t(String s, Object o) {
+        return Messages.getString(s, o, _context);
+    }
+
     /**
      *  Where the translation is to two words or more,
      *  prevent splitting across lines
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
index 86c9daaea90a733138efc53c3790d2bcbe635483..7e97d9573947619b8a3b87920cacc930fe986b1c 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java
@@ -114,7 +114,7 @@ public class SummaryHelper extends HelperBase {
         long diff = Math.abs(ms);
         if (diff < 3000)
             return "";
-        return " (" + DataHelper.formatDuration2(diff) + " " + _("skew") + ")";
+        return " (" + DataHelper.formatDuration2(diff) + " " + _t("skew") + ")";
     }
 **/
     
@@ -140,19 +140,19 @@ public class SummaryHelper extends HelperBase {
             return "VM Comm System";
         if (_context.router().getUptime() > 60*1000 && (!_context.router().gracefulShutdownInProgress()) &&
             !_context.clientManager().isAlive())
-            return _("ERR-Client Manager I2CP Error - check logs");  // not a router problem but the user should know
+            return _t("ERR-Client Manager I2CP Error - check logs");  // not a router problem but the user should know
         // Warn based on actual skew from peers, not update status, so if we successfully offset
         // the clock, we don't complain.
         //if (!_context.clock().getUpdatedSuccessfully())
         long skew = _context.commSystem().getFramedAveragePeerClockSkew(33);
         // Display the actual skew, not the offset
         if (Math.abs(skew) > 30*1000)
-            return _("ERR-Clock Skew of {0}", DataHelper.formatDuration2(Math.abs(skew)));
+            return _t("ERR-Clock Skew of {0}", DataHelper.formatDuration2(Math.abs(skew)));
         if (_context.router().isHidden())
-            return _("Hidden");
+            return _t("Hidden");
         RouterInfo routerInfo = _context.router().getRouterInfo();
         if (routerInfo == null)
-            return _("Testing");
+            return _t("Testing");
 
         Status status = _context.commSystem().getStatus();
         switch (status) {
@@ -164,37 +164,37 @@ public class SummaryHelper extends HelperBase {
             case IPV4_SNAT_IPV6_OK:
                 RouterAddress ra = routerInfo.getTargetAddress("NTCP");
                 if (ra == null)
-                    return _(status.toStatusString());
+                    return _t(status.toStatusString());
                 byte[] ip = ra.getIP();
                 if (ip == null)
-                    return _("ERR-Unresolved TCP Address");
+                    return _t("ERR-Unresolved TCP Address");
                 // TODO set IPv6 arg based on configuration?
                 if (TransportUtil.isPubliclyRoutable(ip, true))
-                    return _(status.toStatusString());
-                return _("ERR-Private TCP Address");
+                    return _t(status.toStatusString());
+                return _t("ERR-Private TCP Address");
 
             case IPV4_SNAT_IPV6_UNKNOWN:
             case DIFFERENT:
-                return _("ERR-SymmetricNAT");
+                return _t("ERR-SymmetricNAT");
 
             case REJECT_UNSOLICITED:
             case IPV4_DISABLED_IPV6_FIREWALLED:
                 if (routerInfo.getTargetAddress("NTCP") != null)
-                    return _("WARN-Firewalled with Inbound TCP Enabled");
+                    return _t("WARN-Firewalled with Inbound TCP Enabled");
                 // fall through...
             case IPV4_FIREWALLED_IPV6_OK:
             case IPV4_FIREWALLED_IPV6_UNKNOWN:
                 if (((FloodfillNetworkDatabaseFacade)_context.netDb()).floodfillEnabled())
-                    return _("WARN-Firewalled and Floodfill");
+                    return _t("WARN-Firewalled and Floodfill");
                 //if (_context.router().getRouterInfo().getCapabilities().indexOf('O') >= 0)
-                //    return _("WARN-Firewalled and Fast");
-                return _(status.toStatusString());
+                //    return _t("WARN-Firewalled and Fast");
+                return _t(status.toStatusString());
 
             case DISCONNECTED:
-                return _("Disconnected - check network cable");
+                return _t("Disconnected - check network cable");
 
             case HOSED:
-                return _("ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart");
+                return _t("ERR-UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart");
 
             case UNKNOWN:
             case IPV4_UNKNOWN_IPV6_FIREWALLED:
@@ -203,14 +203,14 @@ public class SummaryHelper extends HelperBase {
                 ra = routerInfo.getTargetAddress("SSU");
                 if (ra == null && _context.router().getUptime() > 5*60*1000) {
                     if (getActivePeers() <= 0)
-                        return _("ERR-No Active Peers, Check Network Connection and Firewall");
+                        return _t("ERR-No Active Peers, Check Network Connection and Firewall");
                     else if (_context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_HOSTNAME) == null ||
                         _context.getProperty(ConfigNetHelper.PROP_I2NP_NTCP_PORT) == null)
-                        return _("ERR-UDP Disabled and Inbound TCP host/port not set");
+                        return _t("ERR-UDP Disabled and Inbound TCP host/port not set");
                     else
-                        return _("WARN-Firewalled with UDP Disabled");
+                        return _t("WARN-Firewalled with UDP Disabled");
                 }
-                return _(status.toStatusString());
+                return _t(status.toStatusString());
         }
     }
     
@@ -434,8 +434,8 @@ public class SummaryHelper extends HelperBase {
         
         StringBuilder buf = new StringBuilder(512);
         buf.append("<h3><a href=\"/i2ptunnelmgr\" target=\"_top\" title=\"")
-           .append(_("Add/remove/edit &amp; control your client and server tunnels"))
-           .append("\">").append(_("Local Tunnels"))
+           .append(_t("Add/remove/edit &amp; control your client and server tunnels"))
+           .append("\">").append(_t("Local Tunnels"))
            .append("</a></h3><hr class=\"b\"><div class=\"tunnels\">");
         if (!clients.isEmpty()) {
             Collections.sort(clients, new AlphaComparator());
@@ -447,35 +447,35 @@ public class SummaryHelper extends HelperBase {
                 
                 buf.append("<tr><td align=\"right\"><img src=\"/themes/console/images/");
                 if (_context.clientManager().shouldPublishLeaseSet(h))
-                    buf.append("server.png\" alt=\"Server\" title=\"").append(_("Hidden Service")).append("\">");
+                    buf.append("server.png\" alt=\"Server\" title=\"").append(_t("Hidden Service")).append("\">");
                 else
-                    buf.append("client.png\" alt=\"Client\" title=\"").append(_("Client")).append("\">");
+                    buf.append("client.png\" alt=\"Client\" title=\"").append(_t("Client")).append("\">");
                 buf.append("</td><td align=\"left\"><b><a href=\"tunnels#").append(h.toBase64().substring(0,4));
-                buf.append("\" target=\"_top\" title=\"").append(_("Show tunnels")).append("\">");
-                if (name.length() < 18)
+                buf.append("\" target=\"_top\" title=\"").append(_t("Show tunnels")).append("\">");
+                if (name.length() <= 20)
                     buf.append(DataHelper.escapeHTML(name));
                 else
-                    buf.append(DataHelper.escapeHTML(name.substring(0,15))).append("&hellip;");
+                    buf.append(DataHelper.escapeHTML(name.substring(0,18))).append("&hellip;");
                 buf.append("</a></b></td>\n");
                 LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h);
                 if (ls != null && _context.tunnelManager().getOutboundClientTunnelCount(h) > 0) {
                     long timeToExpire = ls.getEarliestLeaseDate() - _context.clock().now();
                     if (timeToExpire < 0) {
                         // red or yellow light                 
-                        buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"").append(_("Rebuilding")).append("&hellip;\" title=\"").append(_("Leases expired")).append(" ").append(DataHelper.formatDuration2(0-timeToExpire));
-                        buf.append(" ").append(_("ago")).append(". ").append(_("Rebuilding")).append("&hellip;\"></td></tr>\n");                    
+                        buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"").append(_t("Rebuilding")).append("&hellip;\" title=\"").append(_t("Leases expired")).append(" ").append(DataHelper.formatDuration2(0-timeToExpire));
+                        buf.append(" ").append(_t("ago")).append(". ").append(_t("Rebuilding")).append("&hellip;\"></td></tr>\n");                    
                     } else {
                         // green light 
-                        buf.append("<td><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"").append(_("Ready")).append("\"></td></tr>\n");
+                        buf.append("<td><img src=\"/themes/console/images/local_up.png\" alt=\"Ready\" title=\"").append(_t("Ready")).append("\"></td></tr>\n");
                     }
                 } else {
                     // yellow light
-                    buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"").append(_("Building")).append("&hellip;\" title=\"").append(_("Building tunnels")).append("&hellip;\"></td></tr>\n");
+                    buf.append("<td><img src=\"/themes/console/images/local_inprogress.png\" alt=\"").append(_t("Building")).append("&hellip;\" title=\"").append(_t("Building tunnels")).append("&hellip;\"></td></tr>\n");
                 }
             }
             buf.append("</table>");
         } else {
-            buf.append("<center><i>").append(_("none")).append("</i></center>");
+            buf.append("<center><i>").append(_t("none")).append("</i></center>");
         }
         buf.append("</div>\n");
         return buf.toString();
@@ -486,14 +486,16 @@ public class SummaryHelper extends HelperBase {
      *  Inner class, can't be Serializable
      */
     private class AlphaComparator implements Comparator<Destination> {
-        private final String xsc = _("shared clients");
+        private final String xsc = _t("shared clients");
 
         public int compare(Destination lhs, Destination rhs) {
             String lname = getName(lhs);
             String rname = getName(rhs);
-            if (lname.equals(xsc))
+            boolean lshared = lname.startsWith("shared clients") || lname.startsWith(xsc);
+            boolean rshared = rname.startsWith("shared clients") || rname.startsWith(xsc);
+            if (lshared && !rshared)
                 return -1;
-            if (rname.equals(xsc))
+            if (rshared && !lshared)
                 return 1;
             return Collator.getInstance().compare(lname, rname);
         }
@@ -509,9 +511,9 @@ public class SummaryHelper extends HelperBase {
             if (name == null)
                 name = d.calculateHash().toBase64().substring(0,6);
             else
-                name = _(name);
+                name = _t(name);
         } else {
-            name = _(name);
+            name = _t(name);
         }
         return name;
     }
@@ -710,18 +712,20 @@ public class SummaryHelper extends HelperBase {
                 buf.append("<hr>");
             else
                 needSpace = true;
-            buf.append("<h4><b>").append(_("Update downloaded")).append("<br>");
+            buf.append("<h4><b>").append(_t("Update downloaded")).append("<br>");
             if (_context.hasWrapper())
-                buf.append(_("Click Restart to install"));
+                buf.append(_t("Click Restart to install"));
             else
-                buf.append(_("Click Shutdown and restart to install"));
-            buf.append(' ').append(_("Version {0}", DataHelper.escapeHTML(dver)));
+                buf.append(_t("Click Shutdown and restart to install"));
+            buf.append(' ').append(_t("Version {0}", DataHelper.escapeHTML(dver)));
             buf.append("</b></h4>");
         }
         boolean avail = updateAvailable();
         boolean unsignedAvail = unsignedUpdateAvailable();
         boolean devSU3Avail = devSU3UpdateAvailable();
         String constraint = avail ? NewsHelper.updateConstraint() : null;
+        String unsignedConstraint = unsignedAvail ? NewsHelper.unsignedUpdateConstraint() : null;
+        String devSU3Constraint = devSU3Avail ? NewsHelper.devSU3UpdateConstraint() : null;
         if (avail && constraint != null &&
             !NewsHelper.isUpdateInProgress() &&
             !_context.router().gracefulShutdownInProgress()) {
@@ -729,11 +733,35 @@ public class SummaryHelper extends HelperBase {
                 buf.append("<hr>");
             else
                 needSpace = true;
-            buf.append("<h4><b>").append(_("Update available")).append(":<br>");
-            buf.append(_("Version {0}", getUpdateVersion())).append("<br>");
+            buf.append("<h4><b>").append(_t("Update available")).append(":<br>");
+            buf.append(_t("Version {0}", getUpdateVersion())).append("<br>");
             buf.append(constraint).append("</b></h4>");
             avail = false;
         }
+        if (unsignedAvail && unsignedConstraint != null &&
+            !NewsHelper.isUpdateInProgress() &&
+            !_context.router().gracefulShutdownInProgress()) {
+            if (needSpace)
+                buf.append("<hr>");
+            else
+                needSpace = true;
+            buf.append("<h4><b>").append(_t("Update available")).append(":<br>");
+            buf.append(_t("Version {0}", getUnsignedUpdateVersion())).append("<br>");
+            buf.append(unsignedConstraint).append("</b></h4>");
+            unsignedAvail = false;
+        }
+        if (devSU3Avail && devSU3Constraint != null &&
+            !NewsHelper.isUpdateInProgress() &&
+            !_context.router().gracefulShutdownInProgress()) {
+            if (needSpace)
+                buf.append("<hr>");
+            else
+                needSpace = true;
+            buf.append("<h4><b>").append(_t("Update available")).append(":<br>");
+            buf.append(_t("Version {0}", getDevSU3UpdateVersion())).append("<br>");
+            buf.append(devSU3Constraint).append("</b></h4>");
+            devSU3Avail = false;
+        }
         if ((avail || unsignedAvail || devSU3Avail) &&
             !NewsHelper.isUpdateInProgress() &&
             !_context.router().gracefulShutdownInProgress() &&
@@ -753,7 +781,7 @@ public class SummaryHelper extends HelperBase {
                 if (avail) {
                     buf.append("<button type=\"submit\" class=\"download\" name=\"updateAction\" value=\"signed\" >")
                        // Note to translators: parameter is a version, e.g. "0.8.4"
-                       .append(_("Download {0} Update", getUpdateVersion()))
+                       .append(_t("Download {0} Update", getUpdateVersion()))
                        .append("</button><br>\n");
                 }
                 if (devSU3Avail) {
@@ -761,7 +789,7 @@ public class SummaryHelper extends HelperBase {
                        // Note to translators: parameter is a router version, e.g. "0.9.19-16"
                        // <br> is optional, to help the browser make the lines even in the button
                        // If the translation is shorter than the English, you should probably not include <br>
-                       .append(_("Download Signed<br>Development Update<br>{0}", getDevSU3UpdateVersion()))
+                       .append(_t("Download Signed<br>Development Update<br>{0}", getDevSU3UpdateVersion()))
                        .append("</button><br>\n");
                 }
                 if (unsignedAvail) {
@@ -769,7 +797,7 @@ public class SummaryHelper extends HelperBase {
                        // Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
                        // <br> is optional, to help the browser make the lines even in the button
                        // If the translation is shorter than the English, you should probably not include <br>
-                       .append(_("Download Unsigned<br>Update {0}", getUnsignedUpdateVersion()))
+                       .append(_t("Download Unsigned<br>Update {0}", getUnsignedUpdateVersion()))
                        .append("</button><br>\n");
                 }
                 buf.append("</form>\n");
@@ -793,9 +821,9 @@ public class SummaryHelper extends HelperBase {
         StringBuilder buf = new StringBuilder(256);
         if (showFirewallWarning()) {
             buf.append("<h4><a href=\"/confignet\" target=\"_top\" title=\"")
-               .append(_("Help with firewall configuration"))
+               .append(_t("Help with firewall configuration"))
                .append("\">")
-               .append(_("Check network connection and NAT/firewall"))
+               .append(_t("Check network connection and NAT/firewall"))
                .append("</a></h4>");
         }
 
@@ -814,7 +842,7 @@ public class SummaryHelper extends HelperBase {
                 String uri = getRequestURI();
                 buf.append("<p><form action=\"").append(uri).append("\" method=\"POST\">\n");
                 buf.append("<input type=\"hidden\" name=\"reseedNonce\" value=\"").append(nonce).append("\" >\n");
-                buf.append("<button type=\"submit\" class=\"reload\" value=\"Reseed\" >").append(_("Reseed")).append("</button></form></p>\n");
+                buf.append("<button type=\"submit\" class=\"reload\" value=\"Reseed\" >").append(_t("Reseed")).append("</button></form></p>\n");
             }
         }
         // If a new reseed ain't running, and the last reseed had errors, show error message
@@ -899,18 +927,18 @@ public class SummaryHelper extends HelperBase {
 
         StringBuilder buf = new StringBuilder(2048);
         buf.append("<table class=\"sidebarconf\"><tr><th>")
-           .append(_("Remove"))
+           .append(_t("Remove"))
            .append("</th><th>")
-           .append(_("Name"))
+           .append(_t("Name"))
            .append("</th><th colspan=\"2\">")
-           .append(_("Order"))
+           .append(_t("Order"))
            .append("</th></tr>\n");
         for (String section : sections) {
             int i = sections.indexOf(section);
             buf.append("<tr><td align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"delete_")
                .append(i)
                .append("\"></td><td align=\"left\">")
-               .append(_(sectionNames.get(section)))
+               .append(_t(sectionNames.get(section)))
                .append("</td><td align=\"right\"><input type=\"hidden\" name=\"order_")
                .append(i).append('_').append(section)
                .append("\" value=\"")
@@ -920,22 +948,22 @@ public class SummaryHelper extends HelperBase {
                 buf.append("<button type=\"submit\" class=\"buttonTop\" name=\"action\" value=\"move_")
                    .append(i)
                    .append("_top\"><img alt=\"")
-                   .append(_("Top"))
+                   .append(_t("Top"))
                    .append("\" src=\"")
                    .append(imgPath)
                    .append("move_top.png")
                    .append("\" title=\"")
-                   .append(_("Move to top"))
+                   .append(_t("Move to top"))
                    .append("\"/></button>");
                 buf.append("<button type=\"submit\" class=\"buttonUp\" name=\"action\" value=\"move_")
                    .append(i)
                    .append("_up\"><img alt=\"")
-                   .append(_("Up"))
+                   .append(_t("Up"))
                    .append("\" src=\"")
                    .append(imgPath)
                    .append("move_up.png")
                    .append("\" title=\"")
-                   .append(_("Move up"))
+                   .append(_t("Move up"))
                    .append("\"/></button>");
             }
             buf.append("</td><td align=\"left\">");
@@ -943,34 +971,34 @@ public class SummaryHelper extends HelperBase {
                 buf.append("<button type=\"submit\" class=\"buttonDown\" name=\"action\" value=\"move_")
                    .append(i)
                    .append("_down\"><img alt=\"")
-                   .append(_("Down"))
+                   .append(_t("Down"))
                    .append("\" src=\"")
                    .append(imgPath)
                    .append("move_down.png")
                    .append("\" title=\"")
-                   .append(_("Move down"))
+                   .append(_t("Move down"))
                    .append("\"/></button>");
                 buf.append("<button type=\"submit\" class=\"buttonBottom\" name=\"action\" value=\"move_")
                    .append(i)
                    .append("_bottom\"><img alt=\"")
-                   .append(_("Bottom"))
+                   .append(_t("Bottom"))
                    .append("\" src=\"")
                    .append(imgPath)
                    .append("move_bottom.png")
                    .append("\" title=\"")
-                   .append(_("Move to bottom"))
+                   .append(_t("Move to bottom"))
                    .append("\"/></button>");
             }
             buf.append("</td></tr>\n");
         }
         buf.append("<tr><td align=\"center\">" +
                    "<input type=\"submit\" name=\"action\" class=\"delete\" value=\"")
-           .append(_("Delete selected"))
+           .append(_t("Delete selected"))
            .append("\"></td><td align=\"left\"><b>")
-           .append(_("Add")).append(":</b> " +
+           .append(_t("Add")).append(":</b> " +
                    "<select name=\"name\">\n" +
                    "<option value=\"\" selected=\"selected\">")
-           .append(_("Select a section to add"))
+           .append(_t("Select a section to add"))
            .append("</option>\n");
 
         for (String s : sortedSections) {
@@ -984,7 +1012,7 @@ public class SummaryHelper extends HelperBase {
            .append("\"></td>" +
                    "<td align=\"center\" colspan=\"2\">" +
                    "<input type=\"submit\" name=\"action\" class=\"add\" value=\"")
-           .append(_("Add item"))
+           .append(_t("Add item"))
            .append("\"></td></tr>")
            .append("</table>\n");
         return buf.toString();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java
index 06d6e9af5199f4bb39b3e6c3b148676cc1a5cf68..d97d185a85ea202977aebf069769aef0faa009cc 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java
@@ -139,9 +139,9 @@ class SummaryRenderer {
                 else
                     p = DataHelper.formatDuration2(period).replace("&nbsp;", " ");
                 if (showEvents)
-                    title = name + ' ' + _("events in {0}", p);
+                    title = name + ' ' + _t("events in {0}", p);
                 else
-                    title = name + ' ' + _("averaged for {0}", p);
+                    title = name + ' ' + _t("averaged for {0}", p);
                 def.setTitle(title);
             }
             String path = _listener.getData().getPath();
@@ -151,7 +151,7 @@ class SummaryRenderer {
             if (showEvents) {
                 // include the average event count on the plot
                 plotName = dsNames[1];
-                descr = _("Events per period");
+                descr = _t("Events per period");
             } else {
                 // include the average value
                 plotName = dsNames[0];
@@ -159,12 +159,12 @@ class SummaryRenderer {
                 // (there are over 500 of them)
                 // but the descriptions for the default graphs are tagged in
                 // Strings.java
-                descr = _(_listener.getRate().getRateStat().getDescription());
+                descr = _t(_listener.getRate().getRateStat().getDescription());
             }
 
             //long started = ((RouterContext)_context).router().getWhenStarted();
             //if (started > start && started < end)
-            //    def.vrule(started / 1000, RESTART_BAR_COLOR, _("Restart"), 4.0f);
+            //    def.vrule(started / 1000, RESTART_BAR_COLOR, _t("Restart"), 4.0f);
 
             def.datasource(plotName, path, plotName, SummaryListener.CF, _listener.getBackendName());
             if (descr.length() > 0) {
@@ -173,22 +173,22 @@ class SummaryRenderer {
                 def.area(plotName, Color.BLUE);
             }
             if (!hideLegend) {
-                def.gprint(plotName, SummaryListener.CF, _("avg") + ": %.2f %s");
-                def.gprint(plotName, "MAX", ' ' + _("max") + ": %.2f %S");
-                def.gprint(plotName, "LAST", ' ' + _("now") + ": %.2f %S\\r");
+                def.gprint(plotName, SummaryListener.CF, _t("avg") + ": %.2f %s");
+                def.gprint(plotName, "MAX", ' ' + _t("max") + ": %.2f %S");
+                def.gprint(plotName, "LAST", ' ' + _t("now") + ": %.2f %S\\r");
             }
             String plotName2 = null;
             if (lsnr2 != null) {
                 String dsNames2[] = lsnr2.getData().getDsNames();
                 plotName2 = dsNames2[0];
                 String path2 = lsnr2.getData().getPath();
-                String descr2 = _(lsnr2.getRate().getRateStat().getDescription());
+                String descr2 = _t(lsnr2.getRate().getRateStat().getDescription());
                 def.datasource(plotName2, path2, plotName2, SummaryListener.CF, lsnr2.getBackendName());
                 def.line(plotName2, Color.RED, descr2 + "\\r", 3);
                 if (!hideLegend) {
-                    def.gprint(plotName2, SummaryListener.CF, _("avg") + ": %.2f %s");
-                    def.gprint(plotName2, "MAX", ' ' + _("max") + ": %.2f %S");
-                    def.gprint(plotName2, "LAST", ' ' + _("now") + ": %.2f %S\\r");
+                    def.gprint(plotName2, SummaryListener.CF, _t("avg") + ": %.2f %s");
+                    def.gprint(plotName2, "MAX", ' ' + _t("max") + ": %.2f %S");
+                    def.gprint(plotName2, "LAST", ' ' + _t("now") + ": %.2f %S\\r");
                 }
             }
             if (!hideLegend) {
@@ -198,7 +198,7 @@ class SummaryRenderer {
                 for (Map.Entry<Long, String> event : events.entrySet()) {
                     long started = event.getKey().longValue();
                     if (started > start && started < end) {
-                        String legend = _("Restart") + ' ' + sdf.format(new Date(started)) + " UTC " + event.getValue() + "\\r";
+                        String legend = _t("Restart") + ' ' + sdf.format(new Date(started)) + " UTC " + event.getValue() + "\\r";
                         def.vrule(started / 1000, RESTART_BAR_COLOR, legend, 4.0f);
                     }
                 }
@@ -271,7 +271,7 @@ class SummaryRenderer {
     private static final boolean IS_WIN = SystemVersion.isWindows();
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         // the RRD font doesn't have zh chars, at least on my system
         // Works on 1.5.9 except on windows
         if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
@@ -282,7 +282,7 @@ class SummaryRenderer {
     /**
      *  translate a string with a parameter
      */
-    private String _(String s, String o) {
+    private String _t(String s, String o) {
         // the RRD font doesn't have zh chars, at least on my system
         // Works on 1.5.9 except on windows
         if (IS_WIN && "zh".equals(Messages.getLanguage(_context)))
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/TunnelHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/TunnelHelper.java
index db64f77c2588763efd7ba9f52de273bdbb68875d..c462c75d396db4f925aac2b02291587b77b1c0d3 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/TunnelHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/TunnelHelper.java
@@ -1,8 +1,7 @@
 package net.i2p.router.web;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.OutputStreamWriter;
+import java.io.StringWriter;
 
 
 public class TunnelHelper extends HelperBase {
@@ -15,9 +14,9 @@ public class TunnelHelper extends HelperBase {
                 renderer.renderStatusHTML(_out);
                 return "";
             } else {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream(32*1024);
-                renderer.renderStatusHTML(new OutputStreamWriter(baos));
-                return new String(baos.toByteArray());
+                StringWriter sw = new StringWriter(32*1024);
+                renderer.renderStatusHTML(sw);
+                return sw.toString();
             }
         } catch (IOException ioe) {
             ioe.printStackTrace();
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java
index 9fff49d1e5de8dd6b45b6534a924a4c0cd3e2317..a761a5ac24e0f84f4b35fecd998abfdc3c6373bb 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/TunnelRenderer.java
@@ -33,7 +33,7 @@ public class TunnelRenderer {
     }
     
     public void renderStatusHTML(Writer out) throws IOException {
-        out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>" + _("Exploratory tunnels") + " (<a href=\"/configtunnels#exploratory\">" + _("configure") + "</a>)</h2>\n");
+        out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>" + _t("Exploratory tunnels") + " (<a href=\"/configtunnels#exploratory\">" + _t("configure") + "</a>)</h2>\n");
         renderPool(out, _context.tunnelManager().getInboundExploratoryPool(), _context.tunnelManager().getOutboundExploratoryPool());
         
         List<Hash> destinations = null;
@@ -57,20 +57,22 @@ public class TunnelRenderer {
             if (name == null)
                 name = client.toBase64().substring(0,4);
             out.write("<h2><a name=\"" + client.toBase64().substring(0,4)
-                      + "\" ></a>" + _("Client tunnels for") + ' ' + DataHelper.escapeHTML(_(name)));
+                      + "\" ></a>" + _t("Client tunnels for") + ' ' + DataHelper.escapeHTML(_t(name)));
             if (isLocal)
-                out.write(" (<a href=\"/configtunnels#" + client.toBase64().substring(0,4) +"\">" + _("configure") + "</a>)</h2>\n");
+                out.write(" (<a href=\"/configtunnels#" + client.toBase64().substring(0,4) +"\">" + _t("configure") + "</a>)</h2>\n");
             else
-                out.write(" (" + _("dead") + ")</h2>\n");
+                out.write(" (" + _t("dead") + ")</h2>\n");
             renderPool(out, in, outPool);
         }
         
         List<HopConfig> participating = _context.tunnelDispatcher().listParticipatingTunnels();
-        Collections.sort(participating, new TunnelComparator());
-        out.write("<h2><a name=\"participating\"></a>" + _("Participating tunnels") + "</h2><table>\n");
-        out.write("<tr><th>" + _("Receive on") + "</th><th>" + _("From") + "</th><th>"
-                  + _("Send on") + "</th><th>" + _("To") + "</th><th>" + _("Expiration") + "</th>"
-                  + "<th>" + _("Usage") + "</th><th>" + _("Rate") + "</th><th>" + _("Role") + "</th></tr>\n");
+        out.write("<h2><a name=\"participating\"></a>" + _t("Participating tunnels") + "</h2>\n");
+        if (!participating.isEmpty()) {
+            Collections.sort(participating, new TunnelComparator());
+            out.write("<table><tr><th>" + _t("Receive on") + "</th><th>" + _t("From") + "</th><th>"
+                  + _t("Send on") + "</th><th>" + _t("To") + "</th><th>" + _t("Expiration") + "</th>"
+                  + "<th>" + _t("Usage") + "</th><th>" + _t("Rate") + "</th><th>" + _t("Role") + "</th></tr>\n");
+        }
         long processed = 0;
         RateStat rs = _context.statManager().getRate("tunnel.participatingMessageCount");
         if (rs != null)
@@ -108,7 +110,7 @@ public class TunnelRenderer {
             if (timeLeft > 0)
                 out.write("<td class=\"cells\" align=\"center\">" + DataHelper.formatDuration2(timeLeft) + "</td>");
             else
-                out.write("<td class=\"cells\" align=\"center\">(" + _("grace period") + ")</td>");
+                out.write("<td class=\"cells\" align=\"center\">(" + _t("grace period") + ")</td>");
             out.write("<td class=\"cells\" align=\"center\">" + cfg.getProcessedMessagesCount() + " KB</td>");
             int lifetime = (int) ((_context.clock().now() - cfg.getCreation()) / 1000);
             if (lifetime <= 0)
@@ -118,18 +120,22 @@ public class TunnelRenderer {
             int bps = 1024 * cfg.getProcessedMessagesCount() / lifetime;
             out.write("<td class=\"cells\" align=\"center\">" + bps + " Bps</td>");
             if (cfg.getSendTo() == null)
-                out.write("<td class=\"cells\" align=\"center\">" + _("Outbound Endpoint") + "</td>");
+                out.write("<td class=\"cells\" align=\"center\">" + _t("Outbound Endpoint") + "</td>");
             else if (cfg.getReceiveFrom() == null)
-                out.write("<td class=\"cells\" align=\"center\">" + _("Inbound Gateway") + "</td>");
+                out.write("<td class=\"cells\" align=\"center\">" + _t("Inbound Gateway") + "</td>");
             else
-                out.write("<td class=\"cells\" align=\"center\">" + _("Participant") + "</td>");
+                out.write("<td class=\"cells\" align=\"center\">" + _t("Participant") + "</td>");
             out.write("</tr>\n");
         }
-        out.write("</table>\n");
+        if (!participating.isEmpty())
+            out.write("</table>\n");
         if (displayed > DISPLAY_LIMIT)
-            out.write("<div class=\"statusnotes\"><b>" + _("Limited display to the {0} tunnels with the highest usage", DISPLAY_LIMIT)  + "</b></div>\n");
-        out.write("<div class=\"statusnotes\"><b>" + _("Inactive participating tunnels") + ": " + inactive + "</b></div>\n");
-        out.write("<div class=\"statusnotes\"><b>" + _("Lifetime bandwidth usage") + ": " + DataHelper.formatSize2(processed*1024) + "B</b></div>\n");
+            out.write("<div class=\"statusnotes\"><b>" + _t("Limited display to the {0} tunnels with the highest usage", DISPLAY_LIMIT)  + "</b></div>\n");
+        if (inactive > 0)
+            out.write("<div class=\"statusnotes\"><b>" + _t("Inactive participating tunnels") + ": " + inactive + "</b></div>\n");
+        else if (displayed <= 0)
+            out.write("<div class=\"statusnotes\"><b>" + _t("none") + "</b></div>\n");
+        out.write("<div class=\"statusnotes\"><b>" + _t("Lifetime bandwidth usage") + ": " + DataHelper.formatSize2(processed*1024) + "B</b></div>\n");
         //renderPeers(out);
         out.write("</div>");
     }
@@ -159,16 +165,16 @@ public class TunnelRenderer {
             if (info.getLength() > maxLength)
                 maxLength = info.getLength();
         }
-        out.write("<table><tr><th>" + _("In/Out") + "</th><th>" + _("Expiry") + "</th><th>" + _("Usage") + "</th><th>" + _("Gateway") + "</th>");
+        out.write("<table><tr><th>" + _t("In/Out") + "</th><th>" + _t("Expiry") + "</th><th>" + _t("Usage") + "</th><th>" + _t("Gateway") + "</th>");
         if (maxLength > 3) {
             out.write("<th align=\"center\" colspan=\"" + (maxLength - 2));
-            out.write("\">" + _("Participants") + "</th>");
+            out.write("\">" + _t("Participants") + "</th>");
         }
         else if (maxLength == 3) {
-            out.write("<th>" + _("Participant") + "</th>");
+            out.write("<th>" + _t("Participant") + "</th>");
         }
         if (maxLength > 1) {
-            out.write("<th>" + _("Endpoint") + "</th>");
+            out.write("<th>" + _t("Endpoint") + "</th>");
         }
         out.write("</tr>\n");
         for (int i = 0; i < tunnels.size(); i++) {
@@ -206,24 +212,26 @@ public class TunnelRenderer {
         }
         out.write("</table>\n");
         if (in != null) {
-            List pending = in.listPending();
+            // PooledTunnelCreatorConfig
+            List<?> pending = in.listPending();
             if (!pending.isEmpty()) {
-                out.write("<div class=\"statusnotes\"><center><b>" + _("Build in progress") + ": " + pending.size() + " " + _("inbound") + "</b></center></div>\n");
+                out.write("<div class=\"statusnotes\"><center><b>" + _t("Build in progress") + ": " + pending.size() + " " + _t("inbound") + "</b></center></div>\n");
                 live += pending.size();
             }
         }
         if (outPool != null) {
-            List pending = outPool.listPending();
+            // PooledTunnelCreatorConfig
+            List<?> pending = outPool.listPending();
             if (!pending.isEmpty()) {
-                out.write("<div class=\"statusnotes\"><center><b>" + _("Build in progress") + ": " + pending.size() + " " + _("outbound") + "</b></center></div>\n");
+                out.write("<div class=\"statusnotes\"><center><b>" + _t("Build in progress") + ": " + pending.size() + " " + _t("outbound") + "</b></center></div>\n");
                 live += pending.size();
             }
         }
         if (live <= 0)
-            out.write("<div class=\"statusnotes\"><center><b>" + _("No tunnels; waiting for the grace period to end.") + "</b></center></div>\n");
-        out.write("<div class=\"statusnotes\"><center><b>" + _("Lifetime bandwidth usage") + ": " +
-                  DataHelper.formatSize2(processedIn*1024) + "B " + _("in") + ", " +
-                  DataHelper.formatSize2(processedOut*1024) + "B " + _("out") + "</b></center></div>");
+            out.write("<div class=\"statusnotes\"><center><b>" + _t("No tunnels; waiting for the grace period to end.") + "</b></center></div>\n");
+        out.write("<div class=\"statusnotes\"><center><b>" + _t("Lifetime bandwidth usage") + ": " +
+                  DataHelper.formatSize2(processedIn*1024) + "B " + _t("in") + ", " +
+                  DataHelper.formatSize2(processedOut*1024) + "B " + _t("out") + "</b></center></div>");
     }
     
 /****
@@ -241,8 +249,8 @@ public class TunnelRenderer {
         List<Hash> peerList = new ArrayList(peers);
         Collections.sort(peerList, new CountryComparator(this._context.commSystem()));
 
-        out.write("<h2><a name=\"peers\"></a>" + _("Tunnel Counts By Peer") + "</h2>\n");
-        out.write("<table><tr><th>" + _("Peer") + "</th><th>" + _("Our Tunnels") + "</th><th>" + _("% of total") + "</th><th>" + _("Participating Tunnels") + "</th><th>" + _("% of total") + "</th></tr>\n");
+        out.write("<h2><a name=\"peers\"></a>" + _t("Tunnel Counts By Peer") + "</h2>\n");
+        out.write("<table><tr><th>" + _t("Peer") + "</th><th>" + _t("Our Tunnels") + "</th><th>" + _t("% of total") + "</th><th>" + _t("Participating Tunnels") + "</th><th>" + _t("% of total") + "</th></tr>\n");
         for (Hash h : peerList) {
              out.write("<tr> <td class=\"cells\" align=\"center\">");
              out.write(netDbLink(h));
@@ -260,7 +268,7 @@ public class TunnelRenderer {
                  out.write('0');
              out.write('\n');
         }
-        out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>" + _("Totals") + "</b> <td align=\"center\"><b>" + tunnelCount);
+        out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>" + _t("Totals") + "</b> <td align=\"center\"><b>" + tunnelCount);
         out.write("</b> <td>&nbsp;</td> <td align=\"center\"><b>" + partCount);
         out.write("</b> <td>&nbsp;</td></tr></table></div>\n");
     }
@@ -343,12 +351,12 @@ public class TunnelRenderer {
     }
 
     /** translate a string */
-    private String _(String s) {
+    private String _t(String s) {
         return Messages.getString(s, _context);
     }
 
     /** translate a string */
-    public String _(String s, Object o) {
+    public String _t(String s, Object o) {
         return Messages.getString(s, o, _context);
     }
 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
index d03795be00bb5608d695f6dfcdfbad1da73a502c..440c61c033b3ee13d3da1c13413cfba476448f8f 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java
@@ -1,6 +1,8 @@
 package net.i2p.router.web;
 
 import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Arrays;
@@ -108,7 +110,7 @@ public class WebAppConfiguration implements Configuration {
             return;
         StringTokenizer tok = new StringTokenizer(cp, " ,");
         StringBuilder buf = new StringBuilder();
-        Set<URL> systemCP = getSystemClassPath();
+        Set<URI> systemCP = getSystemClassPath();
         while (tok.hasMoreTokens()) {
             if (buf.length() > 0)
                 buf.append(',');
@@ -127,8 +129,8 @@ public class WebAppConfiguration implements Configuration {
             // TODO: Add a classpath to the command line in i2pstandalone.xml?
             File jfile = new File(path);
             File jdir = jfile.getParentFile();
-            if (systemCP.contains(jfile.toURI().toURL()) ||
-                (jdir != null && systemCP.contains(jdir.toURI().toURL()))) {
+            if (systemCP.contains(jfile.toURI()) ||
+                (jdir != null && systemCP.contains(jdir.toURI()))) {
                 //System.err.println("Not adding " + path + " to classpath for " + appName + ", already in system classpath");
                 // Ticket #957... don't know why...
                 if (!ctxPath.equals("/susimail"))
@@ -151,13 +153,20 @@ public class WebAppConfiguration implements Configuration {
         }
     }
 
-    /** @since 0.9 */
-    private static Set<URL> getSystemClassPath() {
+    /**
+     * Convert URL to URI so there's no blocking equals(),
+     * not that there's really any hostnames in here,
+     * but keep findbugs happy.
+     * @since 0.9
+     */
+    private static Set<URI> getSystemClassPath() {
         URLClassLoader urlClassLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
         URL urls[] = urlClassLoader.getURLs();
-        Set<URL> rv = new HashSet<URL>(32);
+        Set<URI> rv = new HashSet<URI>(32);
         for (int i = 0; i < urls.length; i++) {
-            rv.add(urls[i]);
+            try {
+                rv.add(urls[i].toURI());
+            } catch (URISyntaxException use) {}
         }
         return rv;
     }
diff --git a/apps/routerconsole/java/strings/Strings.java b/apps/routerconsole/java/strings/Strings.java
index 5a45fd770d59cfb50c1a7de9a1750be4041cfb0e..8254d657b52753eb8dadcabf1e5cefcada38820f 100644
--- a/apps/routerconsole/java/strings/Strings.java
+++ b/apps/routerconsole/java/strings/Strings.java
@@ -9,91 +9,76 @@ package dummy;
 class Dummy {
     void dummy {
         // wars for ConfigClientsHelper
-        _("addressbook");
-        _("i2psnark");
-        _("i2ptunnel");
-        _("susimail");
-        _("susidns");
-        _("routerconsole");
+        _t("addressbook");
+        _t("i2psnark");
+        _t("i2ptunnel");
+        _t("susimail");
+        _t("susidns");
+        _t("routerconsole");
 
         // clients, taken from clients.config, for ConfigClientsHelper
         // note that if the wording changes in clients.config, we have to
         // keep the old string here as well for existing installs
-        _("Web console");
-        _("SAM application bridge");
-        _("Application tunnels");
-        _("My eepsite web server");
-        _("I2P webserver (eepsite)");        
-        _("Browser launch at startup");
-        _("BOB application bridge");
-        _("I2P Router Console");
-        _("Open Router Console in web browser at startup");        
+        _t("Web console");
+        _t("SAM application bridge");
+        _t("Application tunnels");
+        _t("My eepsite web server");
+        _t("I2P webserver (eepsite)");        
+        _t("Browser launch at startup");
+        _t("BOB application bridge");
+        _t("I2P Router Console");
+        _t("Open Router Console in web browser at startup");        
         
         // tunnel nicknames, taken from i2ptunnel.config so they will display
         // nicely under 'local destinations' in the summary bar
         // note that if the wording changes in i2ptunnel.config, we have to
         // keep the old string here as well for existing installs
-        _("shared clients");
-        _("IRC proxy");
-        _("eepsite");
-        _("I2P webserver");
-        _("HTTP Proxy");        
+        _t("shared clients");
+        _t("shared clients (DSA)");
+        _t("IRC proxy");
+        _t("eepsite");
+        _t("I2P webserver");
+        _t("HTTP Proxy");        
         // older names for pre-0.7.4 installs
-        _("eepProxy");
-        _("ircProxy");
+        _t("eepProxy");
+        _t("ircProxy");
         // hardcoded in i2psnark
-        _("I2PSnark");
+        _t("I2PSnark");
         // hardcoded in iMule?
-        _("iMule");
+        _t("iMule");
 
 
         // standard themes for ConfigUIHelper
-        _("classic");
-        _("dark");
-        _("light");
-        _("midnight");        
+        _t("classic");
+        _t("dark");
+        _t("light");
+        _t("midnight");        
 
         // stat groups for stats.jsp
-        _("Bandwidth");
-        _("BandwidthLimiter");
-        _("ClientMessages");
-        _("Encryption");
-        _("i2cp");
-        _("I2PTunnel");
-        _("InNetPool");
-        _("JobQueue");
-        _("NetworkDatabase");
-        _("ntcp");
-        _("Peers");
-        _("Router");
-        _("Stream");
-        _("Throttle");
-        _("Transport");
-        _("Tunnels");
-        _("udp");
+        _t("Bandwidth");
+        _t("BandwidthLimiter");
+        _t("ClientMessages");
+        _t("Encryption");
+        _t("i2cp");
+        _t("I2PTunnel");
+        _t("InNetPool");
+        _t("JobQueue");
+        _t("NetworkDatabase");
+        _t("ntcp");
+        _t("Peers");
+        _t("Router");
+        _t("Stream");
+        _t("Throttle");
+        _t("Transport");
+        _t("Tunnels");
+        _t("udp");
 
         // parameters in transport addresses (netdb.jsp)
         // may or may not be worth translating
-        _("host");
-        _("key");
-        _("port");
+        _t("host");
+        _t("key");
+        _t("port");
         // capabilities
-        _("caps");
-        // introducer host
-        _("ihost0");
-        _("ihost1");
-        _("ihost2");
-        // introducer port
-        _("iport0");
-        _("iport1");
-        _("iport2");
-        // introducer key
-        _("ikey0");
-        _("ikey1");
-        _("ikey2");
-        // introducer tag
-        _("itag0");
-        _("itag1");
-        _("itag2");
+        _t("caps");
     }
 }
diff --git a/apps/routerconsole/jsp/certs.jsp b/apps/routerconsole/jsp/certs.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..3c4e59cf629822a3d1f9f33267473ae9fc317d36
--- /dev/null
+++ b/apps/routerconsole/jsp/certs.jsp
@@ -0,0 +1,17 @@
+<%@page contentType="text/html"%>
+<%@page trimDirectiveWhitespaces="true"%>
+<%@page pageEncoding="UTF-8"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head>
+<%@include file="css.jsi" %>
+<%=intl.title("Certificates")%>
+<script src="/js/ajax.js" type="text/javascript"></script>
+<%@include file="summaryajax.jsi" %>
+</head><body onload="initAjax()">
+<%@include file="summary.jsi" %><h1><%=intl._t("Certificates")%></h1>
+<div class="main" id="main">
+<jsp:useBean class="net.i2p.router.web.CertHelper" id="certhelper" scope="request" />
+<jsp:setProperty name="certhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
+<% certhelper.storeWriter(out); %>
+<jsp:getProperty name="certhelper" property="summary" />
+</div></body></html>
diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp
index 538fb8a5f25f0e96f892b1cc7e6a507cabd10274..5e9c0de92fc6a5cb71668f365618b3921ecfc14b 100644
--- a/apps/routerconsole/jsp/config.jsp
+++ b/apps/routerconsole/jsp/config.jsp
@@ -14,7 +14,7 @@
 
 <jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" />
 <jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<h1><%=intl._("I2P Bandwidth Configuration")%></h1>
+<h1><%=intl._t("I2P Bandwidth Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -25,12 +25,12 @@
  <input type="hidden" name="nonce" value="<%=pageNonce%>">
  <input type="hidden" name="action" value="blah" >
  <input type="hidden" name="ratesOnly" value="1" >
- <h3><%=intl._("Bandwidth limiter")%></h3><p>
+ <h3><%=intl._t("Bandwidth limiter")%></h3><p>
  <img src="/themes/console/images/itoopie_xsm.png" alt="">
- <b><%=intl._("I2P will work best if you configure your rates to match the speed of your internet connection.")%></b>
+ <b><%=intl._t("I2P will work best if you configure your rates to match the speed of your internet connection.")%></b>
  </p>
    <div class="wideload"><table><tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" >
-          <%=intl._("KBps In")%>
+          <%=intl._t("KBps In")%>
         </td><td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)</td>
 <% /********
 <!-- let's keep this simple...
@@ -41,7 +41,7 @@
 *********/ %>
     </tr><tr>
         <td><input style="text-align: right; width: 5em;" name="outboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="outboundRate" />" >
-         <%=intl._("KBps Out")%>
+         <%=intl._t("KBps Out")%>
         </td><td>(<jsp:getProperty name="nethelper" property="outboundRateBits" />)</td>
 <% /********
 <!-- let's keep this simple...
@@ -53,31 +53,31 @@
 -->
 *********/ %>
     </tr><tr>
-        <td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._("Share")%></td>
+        <td><jsp:getProperty name="nethelper" property="sharePercentageBox" /> <%=intl._t("Share")%></td>
         <td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)
 </td></tr></table></div>
 <p><% int share = nethelper.getShareBandwidth();
     if (share < 12) {
         out.print("<b>");
-        out.print(intl._("NOTE"));
+        out.print(intl._t("NOTE"));
         out.print("</b>: ");
-        out.print(intl._("You have configured I2P to share only {0} KBps.", share));
+        out.print(intl._t("You have configured I2P to share only {0} KBps.", share));
         out.print("\n");
 
-        out.print(intl._("I2P requires at least 12KBps to enable sharing. "));
-        out.print(intl._("Please enable sharing (participating in tunnels) by configuring more bandwidth. "));
-        out.print(intl._("It improves your anonymity by creating cover traffic, and helps the network."));
+        out.print(intl._t("I2P requires at least 12KBps to enable sharing. "));
+        out.print(intl._t("Please enable sharing (participating in tunnels) by configuring more bandwidth. "));
+        out.print(intl._t("It improves your anonymity by creating cover traffic, and helps the network."));
     } else {
-        out.print(intl._("You have configured I2P to share {0} KBps.", share));
+        out.print(intl._t("You have configured I2P to share {0} KBps.", share));
         out.print("\n");
 
-        out.print(intl._("The higher the share bandwidth the more you improve your anonymity and help the network."));
+        out.print(intl._t("The higher the share bandwidth the more you improve your anonymity and help the network."));
     }
  %></p>
-<p><a href="confignet"><%=intl._("Advanced network configuration page")%></a></p><hr>
+<p><a href="confignet"><%=intl._t("Advanced network configuration page")%></a></p><hr>
 <div class="formaction">
-<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-<input type="submit" class="accept" name="save" value="<%=intl._("Save changes")%>" >
+<input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+<input type="submit" class="accept" name="save" value="<%=intl._t("Save changes")%>" >
 </div>
 </form>
 </div></div></body></html>
diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp
index 637020405e371f82e350f2330b3e474fbf273d05..3ba2deed10e4688874f0fce81c1ab80f6026588c 100644
--- a/apps/routerconsole/jsp/configadvanced.jsp
+++ b/apps/routerconsole/jsp/configadvanced.jsp
@@ -15,7 +15,7 @@
 <jsp:useBean class="net.i2p.router.web.ConfigAdvancedHelper" id="advancedhelper" scope="request" />
 <jsp:setProperty name="advancedhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
-<h1><%=intl._("I2P Advanced Configuration")%></h1>
+<h1><%=intl._t("I2P Advanced Configuration")%></h1>
 <div class="main" id="main">
 
  <%@include file="confignav.jsi" %>
@@ -24,21 +24,30 @@
 <%@include file="formhandler.jsi" %>
  <div class="configure">
  <div class="wideload">
-<h3><%=intl._("Floodfill Configuration")%></h3>
-<p><%=intl._("Floodill participation helps the network, but may use more of your computer's resources.")%></p>
+<h3><%=intl._t("Floodfill Configuration")%></h3>
+<p><%=intl._t("Floodill participation helps the network, but may use more of your computer's resources.")%>
+</p><p>
+<%
+    if (advancedhelper.isFloodfill()) {
+%><%=intl._t("This router is currently a floodfill participant.")%><%
+    } else {
+%><%=intl._t("This router is not currently a floodfill participant.")%><%
+    }
+%>
+</p>
 <form action="" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
 <input type="hidden" name="action" value="ff" >
 <input type="radio" class="optbox" name="ff" value="auto" <%=advancedhelper.getFFChecked(2) %> >
-<%=intl._("Automatic")%><br>
+<%=intl._t("Automatic")%><br>
 <input type="radio" class="optbox" name="ff" value="true" <%=advancedhelper.getFFChecked(1) %> >
-<%=intl._("Force On")%><br>
+<%=intl._t("Force On")%><br>
 <input type="radio" class="optbox" name="ff" value="false" <%=advancedhelper.getFFChecked(0) %> >
-<%=intl._("Disable")%><br>
+<%=intl._t("Disable")%><br>
 <div class="formaction">
-<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
+<input type="submit" name="shouldsave" class="accept" value="<%=intl._t("Save changes")%>" >
 </div></form>
-<h3><%=intl._("Advanced I2P Configuration")%></h3>
+<h3><%=intl._t("Advanced I2P Configuration")%></h3>
 <% if (advancedhelper.isAdvanced()) { %>
  <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
@@ -47,11 +56,11 @@
  <textarea rows="32" cols="60" name="nofilter_config" wrap="off" spellcheck="false" <% if (!advancedhelper.isAdvanced()) { %>readonly="readonly"<% } %>><jsp:getProperty name="advancedhelper" property="settings" /></textarea><br><hr>
 <% if (advancedhelper.isAdvanced()) { %>
       <div class="formaction">
-        <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-        <input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
- <br><b><%=intl._("NOTE")%>:</b> <%=intl._("Some changes may require a restart to take effect.")%>
+        <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+        <input type="submit" name="shouldsave" class="accept" value="<%=intl._t("Save changes")%>" >
+ <br><b><%=intl._t("NOTE")%>:</b> <%=intl._t("Some changes may require a restart to take effect.")%>
  </div></form>
 <% } else { %>
-<%=intl._("To make changes, edit the file {0}.", "<tt>" + advancedhelper.getConfigFileName() + "</tt>")%>
+<%=intl._t("To make changes, edit the file {0}.", "<tt>" + advancedhelper.getConfigFileName() + "</tt>")%>
 <% }  // isAdvanced %>
 </div></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp
index 65f67daf506500b2516be7c204be130bfeefc8a6..cbb9710d4f4490d2235d86e01c71b31dcc455503 100644
--- a/apps/routerconsole/jsp/configclients.jsp
+++ b/apps/routerconsole/jsp/configclients.jsp
@@ -20,43 +20,43 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 <jsp:useBean class="net.i2p.router.web.ConfigClientsHelper" id="clientshelper" scope="request" />
 <jsp:setProperty name="clientshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 <jsp:setProperty name="clientshelper" property="edit" value="<%=request.getParameter(\"edit\")%>" />
-<h1><%=intl._("I2P Client Configuration")%></h1>
+<h1><%=intl._t("I2P Client Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigClientsHandler" id="formhandler" scope="request" />
 <%@include file="formhandler.jsi" %>
  <div class="configure">
- <h3><%=intl._("Client Configuration")%></h3><p>
- <%=intl._("The Java clients listed below are started by the router and run in the same JVM.")%><br>
- <img src="/themes/console/images/itoopie_xsm.png" alt=""><b><%=intl._("Be careful changing any settings here. The 'router console' and 'application tunnels' are required for most uses of I2P. Only advanced users should change these.")%></b>
+ <h3><%=intl._t("Client Configuration")%></h3><p>
+ <%=intl._t("The Java clients listed below are started by the router and run in the same JVM.")%><br>
+ <img src="/themes/console/images/itoopie_xsm.png" alt=""><b><%=intl._t("Be careful changing any settings here. The 'router console' and 'application tunnels' are required for most uses of I2P. Only advanced users should change these.")%></b>
  </p><div class="wideload">
 <form action="" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
 <jsp:getProperty name="clientshelper" property="form1" />
-<p><i><%=intl._("To change other client options, edit the file")%>
+<p><i><%=intl._t("To change other client options, edit the file")%>
  <%=net.i2p.router.startup.ClientAppConfig.configFile(net.i2p.I2PAppContext.getGlobalContext()).getAbsolutePath()%>.
- <%=intl._("All changes require restart to take effect.")%></i>
+ <%=intl._t("All changes require restart to take effect.")%></i>
  </p><hr><div class="formaction">
- <input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
+ <input type="submit" class="cancel" name="foo" value="<%=intl._t("Cancel")%>" />
 <% if (clientshelper.isClientChangeEnabled() && request.getParameter("edit") == null) { %>
- <input type="submit" name="edit" class="add" value="<%=intl._("Add Client")%>" />
+ <input type="submit" name="edit" class="add" value="<%=intl._t("Add Client")%>" />
 <% } %>
- <input type="submit" class="accept" name="action" value="<%=intl._("Save Client Configuration")%>" />
+ <input type="submit" class="accept" name="action" value="<%=intl._t("Save Client Configuration")%>" />
 </div></form></div>
 
-<h3><a name="i2cp"></a><%=intl._("Advanced Client Interface Configuration")%></h3>
+<h3><a name="i2cp"></a><%=intl._t("Advanced Client Interface Configuration")%></h3>
 <form action="" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
 <p>
-<b><%=intl._("External I2CP (I2P Client Protocol) Interface Configuration")%></b><br>
+<b><%=intl._t("External I2CP (I2P Client Protocol) Interface Configuration")%></b><br>
 <input type="radio" class="optbox" name="mode" value="1" <%=clientshelper.i2cpModeChecked(1) %> >
-<%=intl._("Enabled without SSL")%><br>
+<%=intl._t("Enabled without SSL")%><br>
 <input type="radio" class="optbox" name="mode" value="2" <%=clientshelper.i2cpModeChecked(2) %> >
-<%=intl._("Enabled with SSL required")%><br>
+<%=intl._t("Enabled with SSL required")%><br>
 <input type="radio" class="optbox" name="mode" value="0" <%=clientshelper.i2cpModeChecked(0) %> >
-<%=intl._("Disabled - Clients outside this Java process may not connect")%><br>
-<%=intl._("I2CP Interface")%>:
+<%=intl._t("Disabled - Clients outside this Java process may not connect")%><br>
+<%=intl._t("I2CP Interface")%>:
 <select name="interface">
 <%
        String[] ips = clientshelper.intfcAddresses();
@@ -72,60 +72,60 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
        }
 %>
 </select><br>
-<%=intl._("I2CP Port")%>:
+<%=intl._t("I2CP Port")%>:
 <input name="port" type="text" size="5" maxlength="5" value="<jsp:getProperty name="clientshelper" property="port" />" ><br>
-<b><%=intl._("Authorization")%></b><br>
+<b><%=intl._t("Authorization")%></b><br>
 <input type="checkbox" class="optbox" name="auth" value="true" <jsp:getProperty name="clientshelper" property="auth" /> >
-<%=intl._("Require username and password")%><br>
-<%=intl._("Username")%>:
+<%=intl._t("Require username and password")%><br>
+<%=intl._t("Username")%>:
 <input name="user" type="text" value="" /><br>
-<%=intl._("Password")%>:
+<%=intl._t("Password")%>:
 <input name="nofilter_pw" type="password" value="" /><br>
-</p><p><b><%=intl._("The default settings will work for most people.")%></b>
-<%=intl._("Any changes made here must also be configured in the external client.")%>
-<%=intl._("Many clients do not support SSL or authorization.")%>
-<i><%=intl._("All changes require restart to take effect.")%></i>
+</p><p><b><%=intl._t("The default settings will work for most people.")%></b>
+<%=intl._t("Any changes made here must also be configured in the external client.")%>
+<%=intl._t("Many clients do not support SSL or authorization.")%>
+<i><%=intl._t("All changes require restart to take effect.")%></i>
 </p><hr><div class="formaction">
-<input type="submit" class="default" name="action" value="<%=intl._("Save Interface Configuration")%>" />
-<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
-<input type="submit" class="accept" name="action" value="<%=intl._("Save Interface Configuration")%>" />
+<input type="submit" class="default" name="action" value="<%=intl._t("Save Interface Configuration")%>" />
+<input type="submit" class="cancel" name="foo" value="<%=intl._t("Cancel")%>" />
+<input type="submit" class="accept" name="action" value="<%=intl._t("Save Interface Configuration")%>" />
 </div></form>
 
-<h3><a name="webapp"></a><%=intl._("WebApp Configuration")%></h3><p>
- <%=intl._("The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook).")%>
+<h3><a name="webapp"></a><%=intl._t("WebApp Configuration")%></h3><p>
+ <%=intl._t("The Java web applications listed below are started by the webConsole client and run in the same JVM as the router. They are usually web applications accessible through the router console. They may be complete applications (e.g. i2psnark),front-ends to another client or application which must be separately enabled (e.g. susidns, i2ptunnel), or have no web interface at all (e.g. addressbook).")%>
  </p><p>
- <%=intl._("A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method.")%>
+ <%=intl._t("A web app may also be disabled by removing the .war file from the webapps directory; however the .war file and web app will reappear when you update your router to a newer version, so disabling the web app here is the preferred method.")%>
  </p><div class="wideload">
 <form action="configclients" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <jsp:getProperty name="clientshelper" property="form2" />
- <p><i><%=intl._("All changes require restart to take effect.")%></i>
+ <p><i><%=intl._t("All changes require restart to take effect.")%></i>
  </p><hr><div class="formaction">
- <input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
- <input type="submit" name="action" class="accept" value="<%=intl._("Save WebApp Configuration")%>" />
+ <input type="submit" class="cancel" name="foo" value="<%=intl._t("Cancel")%>" />
+ <input type="submit" name="action" class="accept" value="<%=intl._t("Save WebApp Configuration")%>" />
 </div></form></div>
 
 <%
    if (clientshelper.showPlugins()) {
        if (clientshelper.isPluginUpdateEnabled()) {
 %>
-<h3><a name="pconfig"></a><%=intl._("Plugin Configuration")%></h3><p>
- <%=intl._("The plugins listed below are started by the webConsole client.")%>
+<h3><a name="pconfig"></a><%=intl._t("Plugin Configuration")%></h3><p>
+ <%=intl._t("The plugins listed below are started by the webConsole client.")%>
  </p><div class="wideload">
 <form action="" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <jsp:getProperty name="clientshelper" property="form3" />
 <div class="formaction">
- <input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
- <input type="submit" name="action" class="accept" value="<%=intl._("Save Plugin Configuration")%>" />
+ <input type="submit" class="cancel" name="foo" value="<%=intl._t("Cancel")%>" />
+ <input type="submit" name="action" class="accept" value="<%=intl._t("Save Plugin Configuration")%>" />
 </div></form></div>
 <%
        } // pluginUpdateEnabled
        if (clientshelper.isPluginInstallEnabled()) {
 %>
-<h3><a name="plugin"></a><%=intl._("Plugin Installation from URL")%></h3><p>
- <%=intl._("Look for available plugins on {0}.", "<a href=\"http://plugins.i2p\">plugins.i2p</a>")%>
- <%=intl._("To install a plugin, enter the download URL:")%>
+<h3><a name="plugin"></a><%=intl._t("Plugin Installation from URL")%></h3><p>
+ <%=intl._t("Look for available plugins on {0}.", "<a href=\"http://plugins.i2p\">plugins.i2p</a>")%>
+ <%=intl._t("To install a plugin, enter the download URL:")%>
  </p>
 <div class="wideload">
 <form action="configclients" method="POST">
@@ -133,31 +133,31 @@ input.default { width: 1px; height: 1px; visibility: hidden; }
 <p>
  <input type="text" size="60" name="pluginURL" >
  </p><hr><div class="formaction">
- <input type="submit" name="action" class="default" value="<%=intl._("Install Plugin")%>" />
- <input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
- <input type="submit" name="action" class="download" value="<%=intl._("Install Plugin")%>" />
+ <input type="submit" name="action" class="default" value="<%=intl._t("Install Plugin")%>" />
+ <input type="submit" class="cancel" name="foo" value="<%=intl._t("Cancel")%>" />
+ <input type="submit" name="action" class="download" value="<%=intl._t("Install Plugin")%>" />
 </div></form></div>
 
 
 <div class="wideload">
-<h3><a name="plugin"></a><%=intl._("Plugin Installation from File")%></h3>
+<h3><a name="plugin"></a><%=intl._t("Plugin Installation from File")%></h3>
 <form action="configclients" method="POST" enctype="multipart/form-data" accept-charset="UTF-8">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
-<p><%=intl._("Install plugin from file.")%>
-<br><%=intl._("Select xpi2p or su3 file")%> :
+<p><%=intl._t("Install plugin from file.")%>
+<br><%=intl._t("Select xpi2p or su3 file")%> :
 <input type="file" name="pluginFile" >
 </p><hr><div class="formaction">
-<input type="submit" name="action" class="download" value="<%=intl._("Install Plugin from File")%>" />
+<input type="submit" name="action" class="download" value="<%=intl._t("Install Plugin from File")%>" />
 </div></form></div>
 <%
        } // pluginInstallEnabled
        if (clientshelper.isPluginUpdateEnabled()) {
 %>
-<h3><a name="plugin"></a><%=intl._("Update All Plugins")%></h3>
+<h3><a name="plugin"></a><%=intl._t("Update All Plugins")%></h3>
 <div class="formaction">
 <form action="configclients" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
- <input type="submit" name="action" class="reload" value="<%=intl._("Update All Installed Plugins")%>" />
+ <input type="submit" name="action" class="reload" value="<%=intl._t("Update All Installed Plugins")%>" />
 </form></div>
 <%
        } // pluginUpdateEnabled
diff --git a/apps/routerconsole/jsp/confighome.jsp b/apps/routerconsole/jsp/confighome.jsp
index bf1f59d4560a9577916ffdcb1d798c220964ccbb..56be7b8bd0848dc0daa47543cb2044592f2fe139 100644
--- a/apps/routerconsole/jsp/confighome.jsp
+++ b/apps/routerconsole/jsp/confighome.jsp
@@ -17,7 +17,7 @@ input.default {
 </head><body onload="initAjax()">
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Home Page Configuration")%></h1>
+<h1><%=intl._t("I2P Home Page Configuration")%></h1>
 <div class="main" id="main">
 <%@include file="confignav.jsi" %>
 
@@ -26,60 +26,60 @@ input.default {
 <jsp:useBean class="net.i2p.router.web.HomeHelper" id="homehelper" scope="request" />
 <jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
-<h3><%=intl._("Default Home Page")%></h3>
+<h3><%=intl._t("Default Home Page")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="group" value="0">
  <input type="checkbox" name="oldHome" <jsp:getProperty name="homehelper" property="configHome" /> >
- <%=intl._("Use old home page")%>
- <input type="submit" name="action" class="accept" value="<%=intl._("Save")%>" >
+ <%=intl._t("Use old home page")%>
+ <input type="submit" name="action" class="accept" value="<%=intl._t("Save")%>" >
 </form>
 
 <%
    if (homehelper.shouldShowSearch()) {
 %>
-<h3><%=intl._("Search Engines")%></h3>
+<h3><%=intl._t("Search Engines")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="group" value="3">
  <jsp:getProperty name="homehelper" property="configSearch" />
  <div class="formaction">
-  <input type="submit" name="action" class="default" value="<%=intl._("Add item")%>" >
-  <input type="submit" name="action" class="delete" value="<%=intl._("Delete selected")%>" >
-  <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-  <input type="submit" name="action" class="reload" value="<%=intl._("Restore defaults")%>" >
-  <input type="submit" name="action" class="add" value="<%=intl._("Add item")%>" >
+  <input type="submit" name="action" class="default" value="<%=intl._t("Add item")%>" >
+  <input type="submit" name="action" class="delete" value="<%=intl._t("Delete selected")%>" >
+  <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+  <input type="submit" name="action" class="reload" value="<%=intl._t("Restore defaults")%>" >
+  <input type="submit" name="action" class="add" value="<%=intl._t("Add item")%>" >
  </div>
 </form>
 <%
    }  // shouldShowSearch()
 %>
 
-<h3><%=intl._("Hidden Services of Interest")%></h3>
+<h3><%=intl._t("Hidden Services of Interest")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="group" value="1">
  <jsp:getProperty name="homehelper" property="configFavorites" />
  <div class="formaction">
-  <input type="submit" name="action" class="default" value="<%=intl._("Add item")%>" >
-  <input type="submit" name="action" class="delete" value="<%=intl._("Delete selected")%>" >
-  <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-  <input type="submit" name="action" class="reload" value="<%=intl._("Restore defaults")%>" >
-  <input type="submit" name="action" class="add" value="<%=intl._("Add item")%>" >
+  <input type="submit" name="action" class="default" value="<%=intl._t("Add item")%>" >
+  <input type="submit" name="action" class="delete" value="<%=intl._t("Delete selected")%>" >
+  <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+  <input type="submit" name="action" class="reload" value="<%=intl._t("Restore defaults")%>" >
+  <input type="submit" name="action" class="add" value="<%=intl._t("Add item")%>" >
  </div>
 </form>
 
-<h3><%=intl._("Applications and Configuration")%></h3>
+<h3><%=intl._t("Applications and Configuration")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="group" value="2">
  <jsp:getProperty name="homehelper" property="configServices" />
  <div class="formaction">
-  <input type="submit" name="action" class="default" value="<%=intl._("Add item")%>" >
-  <input type="submit" name="action" class="delete" value="<%=intl._("Delete selected")%>" >
-  <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-  <input type="submit" name="action" class="reload" value="<%=intl._("Restore defaults")%>" >
-  <input type="submit" name="action" class="add" value="<%=intl._("Add item")%>" >
+  <input type="submit" name="action" class="default" value="<%=intl._t("Add item")%>" >
+  <input type="submit" name="action" class="delete" value="<%=intl._t("Delete selected")%>" >
+  <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+  <input type="submit" name="action" class="reload" value="<%=intl._t("Restore defaults")%>" >
+  <input type="submit" name="action" class="add" value="<%=intl._t("Add item")%>" >
  </div>
 </form>
 </div></body></html>
diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp
index b2f5ef657cd8258e79880c4d97489f2ebe17b03c..3653a94790ab5721dd6382b4399ce467aca825c9 100644
--- a/apps/routerconsole/jsp/configkeyring.jsp
+++ b/apps/routerconsole/jsp/configkeyring.jsp
@@ -10,7 +10,7 @@
 </head><body onload="initAjax()">
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Keyring Configuration")%></h1>
+<h1><%=intl._t("I2P Keyring Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -18,29 +18,29 @@
 <%@include file="formhandler.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigKeyringHelper" id="keyringhelper" scope="request" />
  <jsp:setProperty name="keyringhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<div class="configure"><h2><%=intl._("Keyring")%></h2><p>
- <%=intl._("The router keyring is used to decrypt encrypted leaseSets.")%>
- <%=intl._("The keyring may contain keys for local or remote encrypted destinations.")%></p>
+<div class="configure"><h2><%=intl._t("Keyring")%></h2><p>
+ <%=intl._t("The router keyring is used to decrypt encrypted leaseSets.")%>
+ <%=intl._t("The keyring may contain keys for local or remote encrypted destinations.")%></p>
  <div class="wideload">
  <jsp:getProperty name="keyringhelper" property="summary" />
 </div>
 
  <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
- <h3><%=intl._("Manual Keyring Addition")%></h3><p>
- <%=intl._("Enter keys for encrypted remote destinations here.")%>
- <%=intl._("Keys for local destinations must be entered on the")%> <a href="i2ptunnel/"><%=intl._("I2PTunnel page")%></a>.
+ <h3><%=intl._t("Manual Keyring Addition")%></h3><p>
+ <%=intl._t("Enter keys for encrypted remote destinations here.")%>
+ <%=intl._t("Keys for local destinations must be entered on the")%> <a href="i2ptunnel/"><%=intl._t("I2PTunnel page")%></a>.
 </p>
   <div class="wideload">
       <table><tr>
-          <td class="mediumtags" align="right"><%=intl._("Dest. name, hash, or full key")%>:</td>
+          <td class="mediumtags" align="right"><%=intl._t("Dest. name, hash, or full key")%>:</td>
           <td><textarea name="peer" cols="44" rows="1" style="height: 3em;" wrap="off" spellcheck="false"></textarea></td>
         </tr><tr>
-          <td class="mediumtags" align="right"><%=intl._("Encryption Key")%>:</td>
+          <td class="mediumtags" align="right"><%=intl._t("Encryption Key")%>:</td>
           <td><input type="text" size="55" name="key" ></td>
         </tr><tr>
           <td align="right" colspan="2">
-<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-<input type="submit" name="action" class="delete" value="<%=intl._("Delete key")%>" >
-<input type="submit" name="action" class="add" value="<%=intl._("Add key")%>" >
+<input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+<input type="submit" name="action" class="delete" value="<%=intl._t("Delete key")%>" >
+<input type="submit" name="action" class="add" value="<%=intl._t("Add key")%>" >
 </td></tr></table></div></form></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp
index 9e3be5cc768fec23fb91425fe120f9a1e599158b..84f10ac806aa14f70a2cd20912c42eeb69759bfc 100644
--- a/apps/routerconsole/jsp/configlogging.jsp
+++ b/apps/routerconsole/jsp/configlogging.jsp
@@ -13,7 +13,7 @@
 <jsp:setProperty name="logginghelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Logging Configuration")%></h1>
+<h1><%=intl._t("I2P Logging Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -23,31 +23,31 @@
  <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
- <h3><%=intl._("Configure I2P Logging Options")%></h3>
+ <h3><%=intl._t("Configure I2P Logging Options")%></h3>
  <div class="wideload">
       <table border="0" cellspacing="5">
-        <tr><td class="mediumtags" align="right"><b><%=intl._("Log file")%>:</b></td>
-          <td><input type="text" name="logfilename" size="40" disabled="disabled" title="<%=intl._("Edit {0} to change", "logger.config")%>" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" >
-            <br> <i><%=intl._("(the symbol '@' will be replaced during log rotation)")%></i></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log record format")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("Log file")%>:</b></td>
+          <td><input type="text" name="logfilename" size="40" disabled="disabled" title="<%=intl._t("Edit {0} to change", "logger.config")%>" value="<jsp:getProperty name="logginghelper" property="logFilePattern" />" >
+            <br> <i><%=intl._t("(the symbol '@' will be replaced during log rotation)")%></i></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Log record format")%>:</b></td>
           <td><input type="text" name="logformat" size="20" value="<jsp:getProperty name="logginghelper" property="recordPattern" />" >
-            <br> <i><%=intl._("(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)")%>
+            <br> <i><%=intl._t("(use 'd' = date, 'c' = class, 't' = thread, 'p' = priority, 'm' = message)")%>
             </i></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log date format")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Log date format")%>:</b></td>
           <td><input type="text" name="logdateformat" size="20" value="<jsp:getProperty name="logginghelper" property="datePattern" />" >
-            <br> <i><%=intl._("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%>
+            <br> <i><%=intl._t("('MM' = month, 'dd' = day, 'HH' = hour, 'mm' = minute, 'ss' = second, 'SSS' = millisecond)")%>
             </i></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Max log file size")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Max log file size")%>:</b></td>
           <td><input type="text" name="logfilesize" size="10" value="<jsp:getProperty name="logginghelper" property="maxFileSize" />" ><br></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Default log level")%>:</b></td>
-          <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i><%=intl._("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Default log level")%>:</b></td>
+          <td><jsp:getProperty name="logginghelper" property="defaultLogLevelBox" /><br><i><%=intl._t("(DEBUG and INFO are not recommended defaults, as they will drastically slow down your router)")%>
           </i></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Log level overrides")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Log level overrides")%>:</b></td>
           <td><jsp:getProperty name="logginghelper" property="logLevelTable" /></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("New override")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("New override")%>:</b></td>
           <td><jsp:getProperty name="logginghelper" property="newClassBox" /></td>
         </tr><tr><td colspan="2"><hr></td>
         </tr><tr class="tablefooter"><td colspan="2"> <div class="formaction">
-          <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-          <input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
+          <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+          <input type="submit" name="shouldsave" class="accept" value="<%=intl._t("Save changes")%>" >
 </div></td></tr></table></div></form></div></div></body></html>
diff --git a/apps/routerconsole/jsp/confignet.jsp b/apps/routerconsole/jsp/confignet.jsp
index 27fdfef7ef34694ab1fc3e64c3eac8e2dc93848d..7b81518e34fc264f88b425b5d648b844fcbf9f9a 100644
--- a/apps/routerconsole/jsp/confignet.jsp
+++ b/apps/routerconsole/jsp/confignet.jsp
@@ -13,7 +13,7 @@
 
 <jsp:useBean class="net.i2p.router.web.ConfigNetHelper" id="nethelper" scope="request" />
 <jsp:setProperty name="nethelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<h1><%=intl._("I2P Network Configuration")%></h1>
+<h1><%=intl._t("I2P Network Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -23,55 +23,55 @@
  <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
- <h3><%=intl._("IP and Transport Configuration")%></h3><p>
+ <h3><%=intl._t("IP and Transport Configuration")%></h3><p>
  <img src="/themes/console/images/itoopie_xsm.png" alt="">
- <b><%=intl._("The default settings will work for most people.")%>
- <a href="#chelp"><%=intl._("There is help below.")%></a></b>
- </p><p><b><%=intl._("UPnP Configuration")%>:</b><br>
+ <b><%=intl._t("The default settings will work for most people.")%>
+ <a href="#chelp"><%=intl._t("There is help below.")%></a></b>
+ </p><p><b><%=intl._t("UPnP Configuration")%>:</b><br>
     <input type="checkbox" class="optbox" name="upnp" value="true" <jsp:getProperty name="nethelper" property="upnpChecked" /> >
-    <%=intl._("Enable UPnP to open firewall ports")%> - <a href="peers#upnp"><%=intl._("UPnP status")%></a>
- </p><p><b><%=intl._("IP Configuration")%>:</b><br>
- <%=intl._("Externally reachable hostname or IP address")%>:<br>
+    <%=intl._t("Enable UPnP to open firewall ports")%> - <a href="peers#upnp"><%=intl._t("UPnP status")%></a>
+ </p><p><b><%=intl._t("IP Configuration")%>:</b><br>
+ <%=intl._t("Externally reachable hostname or IP address")%>:<br>
     <input type="radio" class="optbox" name="udpAutoIP" value="local,upnp,ssu" <%=nethelper.getUdpAutoIPChecked(3) %> >
-    <%=intl._("Use all auto-detect methods")%><br>
+    <%=intl._t("Use all auto-detect methods")%><br>
     <input type="radio" class="optbox" name="udpAutoIP" value="local,ssu" <%=nethelper.getUdpAutoIPChecked(4) %> >
-    <%=intl._("Disable UPnP IP address detection")%><br>
+    <%=intl._t("Disable UPnP IP address detection")%><br>
     <input type="radio" class="optbox" name="udpAutoIP" value="upnp,ssu" <%=nethelper.getUdpAutoIPChecked(5) %> >
-    <%=intl._("Ignore local interface IP address")%><br>
+    <%=intl._t("Ignore local interface IP address")%><br>
     <input type="radio" class="optbox" name="udpAutoIP" value="ssu" <%=nethelper.getUdpAutoIPChecked(0) %> >
-    <%=intl._("Use SSU IP address detection only")%><br>
+    <%=intl._t("Use SSU IP address detection only")%><br>
     <input type="radio" class="optbox" name="udpAutoIP" value="hidden" <%=nethelper.getUdpAutoIPChecked(2) %> >
-    <%=intl._("Hidden mode - do not publish IP")%> <i><%=intl._("(prevents participating traffic)")%></i><br>
+    <%=intl._t("Hidden mode - do not publish IP")%> <i><%=intl._t("(prevents participating traffic)")%></i><br>
     <input type="radio" class="optbox" name="udpAutoIP" value="fixed" <%=nethelper.getUdpAutoIPChecked(1) %> >
-    <%=intl._("Specify hostname or IP")%>:<br>
+    <%=intl._t("Specify hostname or IP")%>:<br>
     <%=nethelper.getAddressSelector() %>
  </p><p>
- <%=intl._("Action when IP changes")%>:<br>
+ <%=intl._t("Action when IP changes")%>:<br>
     <input type="checkbox" class="optbox" name="laptop" value="true" <jsp:getProperty name="nethelper" property="laptopChecked" /> >
-    <%=intl._("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
-    (<i><%=intl._("Experimental")%></i>)
+    <%=intl._t("Laptop mode - Change router identity and UDP port when IP changes for enhanced anonymity")%>
+    (<i><%=intl._t("Experimental")%></i>)
  </p><p>
- <%=intl._("IPv4 Configuration")%>:<br>
+ <%=intl._t("IPv4 Configuration")%>:<br>
     <input type="checkbox" class="optbox" name="IPv4Firewalled" value="true" <jsp:getProperty name="nethelper" property="IPv4FirewalledChecked" /> >
-    <%=intl._("Disable inbound (Firewalled by Carrier-grade NAT or DS-Lite)")%>
+    <%=intl._t("Disable inbound (Firewalled by Carrier-grade NAT or DS-Lite)")%>
  </p><p>
- <%=intl._("IPv6 Configuration")%>:<br>
+ <%=intl._t("IPv6 Configuration")%>:<br>
     <input type="radio" class="optbox" name="ipv6" value="false" <%=nethelper.getIPv6Checked("false") %> >
-    <%=intl._("Disable IPv6")%><br>
+    <%=intl._t("Disable IPv6")%><br>
     <input type="radio" class="optbox" name="ipv6" value="enable" <%=nethelper.getIPv6Checked("enable") %> >
-    <%=intl._("Enable IPv6")%><br>
+    <%=intl._t("Enable IPv6")%><br>
     <input type="radio" class="optbox" name="ipv6" value="preferIPv4" <%=nethelper.getIPv6Checked("preferIPv4") %> >
-    <%=intl._("Prefer IPv4 over IPv6")%><br>
+    <%=intl._t("Prefer IPv4 over IPv6")%><br>
     <input type="radio" class="optbox" name="ipv6" value="preferIPv6" <%=nethelper.getIPv6Checked("preferIPv6") %> >
-    <%=intl._("Prefer IPv6 over IPv4")%><br>
+    <%=intl._t("Prefer IPv6 over IPv4")%><br>
     <input type="radio" class="optbox" name="ipv6" value="only" <%=nethelper.getIPv6Checked("only") %> >
-    <%=intl._("Use IPv6 only (disable IPv4)")%>
-    (<i><%=intl._("Experimental")%></i>)<br>
- </p><p><b><%=intl._("UDP Configuration:")%></b><br>
- <%=intl._("UDP port:")%>
+    <%=intl._t("Use IPv6 only (disable IPv4)")%>
+    (<i><%=intl._t("Experimental")%></i>)<br>
+ </p><p><b><%=intl._t("UDP Configuration:")%></b><br>
+ <%=intl._t("UDP port:")%>
  <input name ="udpPort" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="configuredUdpPort" />" ><br>
  <input type="checkbox" class="optbox" name="disableUDP" value="disabled" <%=nethelper.getUdpDisabledChecked() %> >
- <%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that blocks outbound UDP)")%></i><br>
+ <%=intl._t("Completely disable")%> <i><%=intl._t("(select only if behind a firewall that blocks outbound UDP)")%></i><br>
 <% /********
 <!-- let's keep this simple...
 <input type="checkbox" class="optbox" name="requireIntroductions" value="true" <jsp:getProperty name="nethelper" property="requireIntroductionsChecked" /> />
@@ -82,40 +82,40 @@
 -->
 *********/ %>
  </p><p>
- <b><%=intl._("TCP Configuration")%>:</b><br>
- <%=intl._("Externally reachable hostname or IP address")%>:<br>
+ <b><%=intl._t("TCP Configuration")%>:</b><br>
+ <%=intl._t("Externally reachable hostname or IP address")%>:<br>
     <input type="radio" class="optbox" name="ntcpAutoIP" value="true" <%=nethelper.getTcpAutoIPChecked(2) %> >
-    <%=intl._("Use auto-detected IP address")%>
-    <i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i>
-    <%=intl._("if we are not firewalled")%><br>
+    <%=intl._t("Use auto-detected IP address")%>
+    <i>(<%=intl._t("currently")%> <jsp:getProperty name="nethelper" property="udpIP" />)</i>
+    <%=intl._t("if we are not firewalled")%><br>
     <input type="radio" class="optbox" name="ntcpAutoIP" value="always" <%=nethelper.getTcpAutoIPChecked(3) %> >
-    <%=intl._("Always use auto-detected IP address (Not firewalled)")%><br>
+    <%=intl._t("Always use auto-detected IP address (Not firewalled)")%><br>
     <input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(1) %> >
-    <%=intl._("Specify hostname or IP")%>:
+    <%=intl._t("Specify hostname or IP")%>:
     <input name ="ntcphost" type="text" size="16" value="<jsp:getProperty name="nethelper" property="ntcphostname" />" ><br>
     <input type="radio" class="optbox" name="ntcpAutoIP" value="false" <%=nethelper.getTcpAutoIPChecked(0) %> >
-    <%=intl._("Disable inbound (Firewalled)")%><br>
+    <%=intl._t("Disable inbound (Firewalled)")%><br>
     <input type="radio" class="optbox" name="ntcpAutoIP" value="disabled" <%=nethelper.getTcpAutoIPChecked(4) %> >
-    <%=intl._("Completely disable")%> <i><%=intl._("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
+    <%=intl._t("Completely disable")%> <i><%=intl._t("(select only if behind a firewall that throttles or blocks outbound TCP)")%></i><br>
  </p><p>
- <%=intl._("Externally reachable TCP port")%>:<br>
+ <%=intl._t("Externally reachable TCP port")%>:<br>
     <input type="radio" class="optbox" name="ntcpAutoPort" value="2" <%=nethelper.getTcpAutoPortChecked(2) %> >
-    <%=intl._("Use the same port configured for UDP")%>
-    <i>(<%=intl._("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
+    <%=intl._t("Use the same port configured for UDP")%>
+    <i>(<%=intl._t("currently")%> <jsp:getProperty name="nethelper" property="udpPort" />)</i><br>
     <input type="radio" class="optbox" name="ntcpAutoPort" value="1" <%=nethelper.getTcpAutoPortChecked(1) %> >
-    <%=intl._("Specify Port")%>:
+    <%=intl._t("Specify Port")%>:
     <input name ="ntcpport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="ntcpport" />" ><br>
- </p><p><b><%=intl._("Notes")%>: <%=intl._("a) Do not reveal your port numbers to anyone!   b) Changing these settings will restart your router.")%></b></p>
+ </p><p><b><%=intl._t("Notes")%>: <%=intl._t("a) Do not reveal your port numbers to anyone!   b) Changing these settings will restart your router.")%></b></p>
 <hr><div class="formaction">
-<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-<input type="submit" class="accept" name="save" value="<%=intl._("Save changes")%>" >
-</div><h3><a name="chelp"><%=intl._("Configuration Help")%>:</a></h3><div align="justify"><p>
- <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
+<input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+<input type="submit" class="accept" name="save" value="<%=intl._t("Save changes")%>" >
+</div><h3><a name="chelp"><%=intl._t("Configuration Help")%>:</a></h3><div align="justify"><p>
+ <%=intl._t("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
  </p><p>
- <%=intl._("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%>
-   <%=intl._("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%>
-   <%=intl._("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%> 
-   <%=intl._("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
+ <%=intl._t("If you can, please poke a hole in your firewall to allow unsolicited UDP and TCP packets to reach you.")%>
+   <%=intl._t("If you can't, I2P supports UPnP (Universal Plug and Play) and UDP hole punching with \"SSU introductions\" to relay traffic.")%>
+   <%=intl._t("Most of the options above are for special situations, for example where UPnP does not work correctly, or a firewall not under your control is doing harm.")%> 
+   <%=intl._t("Certain firewalls such as symmetric NATs may not work well with I2P.")%>
  </p>
 <% /********
 <!-- let's keep this simple...
@@ -124,81 +124,81 @@
 -->
 *********/ %>
 <p>
- <%=intl._("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
-   <%=intl._("UPnP support is beta, and may not work for any number of reasons")%>:
+ <%=intl._t("UPnP is used to communicate with Internet Gateway Devices (IGDs) to detect the external IP address and forward ports.")%>
+   <%=intl._t("UPnP support is beta, and may not work for any number of reasons")%>:
 </p>
 <ul>
-<li class="tidylist"><%=intl._("No UPnP-compatible device present")%>
-<li class="tidylist"><%=intl._("UPnP disabled on the device")%>
-<li class="tidylist"><%=intl._("Software firewall interference with UPnP")%>
-<li class="tidylist"><%=intl._("Bugs in the device's UPnP implementation")%>
-<li class="tidylist"><%=intl._("Multiple firewall/routers in the internet connection path")%>
-<li class="tidylist"><%=intl._("UPnP device change, reset, or address change")%>
+<li class="tidylist"><%=intl._t("No UPnP-compatible device present")%>
+<li class="tidylist"><%=intl._t("UPnP disabled on the device")%>
+<li class="tidylist"><%=intl._t("Software firewall interference with UPnP")%>
+<li class="tidylist"><%=intl._t("Bugs in the device's UPnP implementation")%>
+<li class="tidylist"><%=intl._t("Multiple firewall/routers in the internet connection path")%>
+<li class="tidylist"><%=intl._t("UPnP device change, reset, or address change")%>
 </ul>
-<p><a href="peers#upnp"><%=intl._("Review the UPnP status here.")%></a>
-<%=intl._("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p>
-<p><%=intl._("Hostnames entered above will be published in the network database.")%>
-    <%=intl._("They are <b>not private</b>.")%>
-    <%=intl._("Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.")%>
-    <%=intl._("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%>
-    <%=intl._("When in doubt, leave the settings at the defaults.")%>
+<p><a href="peers#upnp"><%=intl._t("Review the UPnP status here.")%></a>
+<%=intl._t("UPnP may be enabled or disabled above, but a change requires a router restart to take effect.")%></p>
+<p><%=intl._t("Hostnames entered above will be published in the network database.")%>
+    <%=intl._t("They are <b>not private</b>.")%>
+    <%=intl._t("Also, <b>do not enter a private IP address</b> like 127.0.0.1 or 192.168.1.1.")%>
+    <%=intl._t("If you specify the wrong IP address or hostname, or do not properly configure your NAT or firewall, your network performance will degrade substantially.")%>
+    <%=intl._t("When in doubt, leave the settings at the defaults.")%>
 </p>
-<h3><a name="help"><%=intl._("Reachability Help")%>:</a></h3><p>
- <%=intl._("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
- <%=intl._("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%>
- <%=intl._("If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem.")%>
+<h3><a name="help"><%=intl._t("Reachability Help")%>:</a></h3><p>
+ <%=intl._t("While I2P will work fine behind most firewalls, your speeds and network integration will generally improve if the I2P port is forwarded for both UDP and TCP.")%>
+ <%=intl._t("If you think you have opened up your firewall and I2P still thinks you are firewalled, remember that you may have multiple firewalls, for example both software packages and external hardware routers.")%>
+ <%=intl._t("If there is an error, the <a href=\"logs.jsp\">logs</a> may also help diagnose the problem.")%>
 </p>
  <ul>
-<li class="tidylist"><b><%=intl._("OK")%></b> - 
-     <%=intl._("Your UDP port does not appear to be firewalled.")%>
-<li class="tidylist"><b><%=intl._("Firewalled")%></b> - 
-     <%=intl._("Your UDP port appears to be firewalled.")%>
-     <%=intl._("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%>
-     <%=intl._("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%> 
-     <%=intl._("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%>
-     <%=intl._("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%>
-     <%=intl._("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%>
-     <%=intl._("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%>
-<li class="tidylist"><b><%=intl._("Testing")%></b> - 
-     <%=intl._("The router is currently testing whether your UDP port is firewalled.")%>
-<li class="tidylist"><b><%=intl._("Hidden")%></b> - 
-     <%=intl._("The router is not configured to publish its address, therefore it does not expect incoming connections.")%>
-     <%=intl._("Hidden mode is automatically enabled for added protection in certain countries.")%>
-<li class="tidylist"><b><%=intl._("WARN - Firewalled and Fast")%></b> - 
-     <%=intl._("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%>
-     <%=intl._("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%>
-<li class="tidylist"><b><%=intl._("WARN - Firewalled and Floodfill")%></b> - 
-     <%=intl._("You have configured I2P to be a floodfill router, but you are firewalled.")%> 
-     <%=intl._("For best participation as a floodfill router, you should open your firewall.")%>
-<li class="tidylist"><b><%=intl._("WARN - Firewalled with Inbound TCP Enabled")%></b> - 
-     <%=intl._("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%>
-     <%=intl._("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%> 
-     <%=intl._("Please open your firewall or disable inbound TCP above.")%>
-<li class="tidylist"><b><%=intl._("WARN - Firewalled with UDP Disabled")%></b> -
-     <%=intl._("You have configured inbound TCP, however you have disabled UDP.")%> 
-     <%=intl._("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%>
-     <%=intl._("Please open your firewall or enable UDP.")%>
-<li class="tidylist"><b><%=intl._("ERR - Clock Skew")%></b> - 
-     <%=intl._("Your system's clock is skewed, which will make it difficult to participate in the network.")%> 
-     <%=intl._("Correct your clock setting if this error persists.")%>
-<li class="tidylist"><b><%=intl._("ERR - Private TCP Address")%></b> - 
-     <%=intl._("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%> 
-     <%=intl._("Correct the address or disable inbound TCP above.")%>
-<li class="tidylist"><b><%=intl._("ERR - SymmetricNAT")%></b> - 
-     <%=intl._("I2P detected that you are firewalled by a Symmetric NAT.")%>
-     <%=intl._("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%>
-<li class="tidylist"><b><%=intl._("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> -
-     <%=intl._("I2P was unable to bind to the configured port noted on the advanced network configuration page .")%>
-     <%=intl._("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%> 
-     <%=intl._("This may be a transient error, if the other program is no longer using the port.")%> 
-     <%=intl._("However, a restart is always required after this error.")%>
-<li class="tidylist"><b><%=intl._("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> -
-     <%=intl._("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%> 
-     <%=intl._("Therefore your router cannot accept inbound connections.")%>
-     <%=intl._("Please configure a TCP host and port above or enable UDP.")%>
-<li class="tidylist"><b><%=intl._("ERR - Client Manager I2CP Error - check logs")%></b> -
-     <%=intl._("This is usually due to a port 7654 conflict. Check the logs to verify.")%> 
-     <%=intl._("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%>
+<li class="tidylist"><b><%=intl._t("OK")%></b> - 
+     <%=intl._t("Your UDP port does not appear to be firewalled.")%>
+<li class="tidylist"><b><%=intl._t("Firewalled")%></b> - 
+     <%=intl._t("Your UDP port appears to be firewalled.")%>
+     <%=intl._t("As the firewall detection methods are not 100% reliable, this may occasionally be displayed in error.")%>
+     <%=intl._t("However, if it appears consistently, you should check whether both your external and internal firewalls are open for your port.")%> 
+     <%=intl._t("I2P will work fine when firewalled, there is no reason for concern. When firewalled, the router uses \"introducers\" to relay inbound connections.")%>
+     <%=intl._t("However, you will get more participating traffic and help the network more if you can open your firewall(s).")%>
+     <%=intl._t("If you think you have already done so, remember that you may have both a hardware and a software firewall, or be behind an additional, institutional firewall you cannot control.")%>
+     <%=intl._t("Also, some routers cannot correctly forward both TCP and UDP on a single port, or may have other limitations or bugs that prevent them from passing traffic through to I2P.")%>
+<li class="tidylist"><b><%=intl._t("Testing")%></b> - 
+     <%=intl._t("The router is currently testing whether your UDP port is firewalled.")%>
+<li class="tidylist"><b><%=intl._t("Hidden")%></b> - 
+     <%=intl._t("The router is not configured to publish its address, therefore it does not expect incoming connections.")%>
+     <%=intl._t("Hidden mode is automatically enabled for added protection in certain countries.")%>
+<li class="tidylist"><b><%=intl._t("WARN - Firewalled and Fast")%></b> - 
+     <%=intl._t("You have configured I2P to share more than 128KBps of bandwidth, but you are firewalled.")%>
+     <%=intl._t("While I2P will work fine in this configuration, if you really have over 128KBps of bandwidth to share, it will be much more helpful to the network if you open your firewall.")%>
+<li class="tidylist"><b><%=intl._t("WARN - Firewalled and Floodfill")%></b> - 
+     <%=intl._t("You have configured I2P to be a floodfill router, but you are firewalled.")%> 
+     <%=intl._t("For best participation as a floodfill router, you should open your firewall.")%>
+<li class="tidylist"><b><%=intl._t("WARN - Firewalled with Inbound TCP Enabled")%></b> - 
+     <%=intl._t("You have configured inbound TCP, however your UDP port is firewalled, and therefore it is likely that your TCP port is firewalled as well.")%>
+     <%=intl._t("If your TCP port is firewalled with inbound TCP enabled, routers will not be able to contact you via TCP, which will hurt the network.")%> 
+     <%=intl._t("Please open your firewall or disable inbound TCP above.")%>
+<li class="tidylist"><b><%=intl._t("WARN - Firewalled with UDP Disabled")%></b> -
+     <%=intl._t("You have configured inbound TCP, however you have disabled UDP.")%> 
+     <%=intl._t("You appear to be firewalled on TCP, therefore your router cannot accept inbound connections.")%>
+     <%=intl._t("Please open your firewall or enable UDP.")%>
+<li class="tidylist"><b><%=intl._t("ERR - Clock Skew")%></b> - 
+     <%=intl._t("Your system's clock is skewed, which will make it difficult to participate in the network.")%> 
+     <%=intl._t("Correct your clock setting if this error persists.")%>
+<li class="tidylist"><b><%=intl._t("ERR - Private TCP Address")%></b> - 
+     <%=intl._t("You must never advertise an unroutable IP address such as 127.0.0.1 or 192.168.1.1 as your external address.")%> 
+     <%=intl._t("Correct the address or disable inbound TCP above.")%>
+<li class="tidylist"><b><%=intl._t("ERR - SymmetricNAT")%></b> - 
+     <%=intl._t("I2P detected that you are firewalled by a Symmetric NAT.")%>
+     <%=intl._t("I2P does not work well behind this type of firewall. You will probably not be able to accept inbound connections, which will limit your participation in the network.")%>
+<li class="tidylist"><b><%=intl._t("ERR - UDP Port In Use - Set i2np.udp.internalPort=xxxx in advanced config and restart")%></b> -
+     <%=intl._t("I2P was unable to bind to the configured port noted on the advanced network configuration page .")%>
+     <%=intl._t("Check to see if another program is using the configured port. If so, stop that program or configure I2P to use a different port.")%> 
+     <%=intl._t("This may be a transient error, if the other program is no longer using the port.")%> 
+     <%=intl._t("However, a restart is always required after this error.")%>
+<li class="tidylist"><b><%=intl._t("ERR - UDP Disabled and Inbound TCP host/port not set")%></b> -
+     <%=intl._t("You have not configured inbound TCP with a hostname and port above, however you have disabled UDP.")%> 
+     <%=intl._t("Therefore your router cannot accept inbound connections.")%>
+     <%=intl._t("Please configure a TCP host and port above or enable UDP.")%>
+<li class="tidylist"><b><%=intl._t("ERR - Client Manager I2CP Error - check logs")%></b> -
+     <%=intl._t("This is usually due to a port 7654 conflict. Check the logs to verify.")%> 
+     <%=intl._t("Do you have another I2P instance running? Stop the conflicting program and restart I2P.")%>
  </ul><hr>
 <% /********
       <!--
diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp
index 4e4010ecac402ed3b9a9c15a975e3f0394be4db5..5a9cfcae75c15735825f5db7a999bbd518dee8fc 100644
--- a/apps/routerconsole/jsp/configpeer.jsp
+++ b/apps/routerconsole/jsp/configpeer.jsp
@@ -10,7 +10,7 @@
 </head><body onload="initAjax()">
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Peer Configuration")%></h1>
+<h1><%=intl._t("I2P Peer Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -29,38 +29,38 @@
  <a name="sh"> </a>
  <a name="unsh"> </a>
  <a name="bonus"> </a>
- <h2><%=intl._("Manual Peer Controls")%></h2>
- <div class="mediumtags"><p><%=intl._("Router Hash")%>:
+ <h2><%=intl._t("Manual Peer Controls")%></h2>
+ <div class="mediumtags"><p><%=intl._t("Router Hash")%>:
 <input type="text" size="55" name="peer" value="<%=peer%>" /></p></div>
- <h3><%=intl._("Manually Ban / Unban a Peer")%></h3>
- <p><%=intl._("Banning will prevent the participation of this peer in tunnels you create.")%></p>
+ <h3><%=intl._t("Manually Ban / Unban a Peer")%></h3>
+ <p><%=intl._t("Banning will prevent the participation of this peer in tunnels you create.")%></p>
       <div class="formaction">
-        <input type="submit" name="action" class="delete" value="<%=intl._("Ban peer until restart")%>" />
-        <input type="submit" name="action" class="accept" value="<%=intl._("Unban peer")%>" />
+        <input type="submit" name="action" class="delete" value="<%=intl._t("Ban peer until restart")%>" />
+        <input type="submit" name="action" class="accept" value="<%=intl._t("Unban peer")%>" />
         <% if (! "".equals(peer)) { %>
         <!-- <font color="blue">&lt;---- click to verify action</font> -->
         <% } %>
       </div>
 
- <h3><%=intl._("Adjust Profile Bonuses")%></h3>
- <p><%=intl._("Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the")%> <a href="profiles"><%=intl._("profiles page")%></a>.</p>
+ <h3><%=intl._t("Adjust Profile Bonuses")%></h3>
+ <p><%=intl._t("Bonuses may be positive or negative, and affect the peer's inclusion in Fast and High Capacity tiers. Fast peers are used for client tunnels, and High Capacity peers are used for some exploratory tunnels. Current bonuses are displayed on the")%> <a href="profiles"><%=intl._t("profiles page")%></a>.</p>
  <% long speed = 0; long capacity = 0;
     if (! "".equals(peer)) {
         // get existing bonus values?
     }
  %>
- <div class="mediumtags"><p><%=intl._("Speed")%>:
+ <div class="mediumtags"><p><%=intl._t("Speed")%>:
  <input type="text" size="8" name="speed" value="<%=speed%>" />
- <%=intl._("Capacity")%>:
+ <%=intl._t("Capacity")%>:
  <input type="text" size="8" name="capacity" value="<%=capacity%>" />
- <input type="submit" name="action" class="add" value="<%=intl._("Adjust peer bonuses")%>" /></p></div>
+ <input type="submit" name="action" class="add" value="<%=intl._t("Adjust peer bonuses")%>" /></p></div>
  </form>
- <a name="banlist"> </a><h2><%=intl._("Banned Peers")%></h2>
+ <a name="banlist"> </a><h2><%=intl._t("Banned Peers")%></h2>
  <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
  <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
  <% profilesHelper.storeWriter(out); %>
  <jsp:getProperty name="profilesHelper" property="banlistSummary" />
- <div class="wideload"><h2><%=intl._("Banned IPs")%></h2>
+ <div class="wideload"><h2><%=intl._t("Banned IPs")%></h2>
  <jsp:getProperty name="peerhelper" property="blocklistSummary" />
 
 </div><hr></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configreseed.jsp b/apps/routerconsole/jsp/configreseed.jsp
index b78b4cb14282049b14ab646459850d45af522f0c..ebc94b9c9fd13a6c21ae27179d156852da16ae96 100644
--- a/apps/routerconsole/jsp/configreseed.jsp
+++ b/apps/routerconsole/jsp/configreseed.jsp
@@ -13,105 +13,107 @@
 
 <jsp:useBean class="net.i2p.router.web.ConfigReseedHelper" id="reseedHelper" scope="request" />
 <jsp:setProperty name="reseedHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<h1><%=intl._("I2P Reseeding Configuration")%></h1>
+<h1><%=intl._t("I2P Reseeding Configuration")%></h1>
 <div class="main" id="main">
 <%@include file="confignav.jsi" %>
 
 <jsp:useBean class="net.i2p.router.web.ConfigReseedHandler" id="formhandler" scope="request" />
 <%@include file="formhandler.jsi" %>
 
-<p><%=intl._("Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining.")%>
-<%=intl._("If reseeding has failed, you should first check your network connection.")%>
-<%=intl._("See {0} for instructions on reseeding manually.", "<a href=\"https://geti2p.net/faq#manual_reseed\">" + intl._("the FAQ") + "</a>")%>
+<p><%=intl._t("Reseeding is the bootstrapping process used to find other routers when you first install I2P, or when your router has too few router references remaining.")%>
+<%=intl._t("If reseeding has failed, you should first check your network connection.")%>
+<%=intl._t("See {0} for instructions on reseeding manually.", "<a href=\"https://geti2p.net/faq#manual_reseed\">" + intl._t("the FAQ") + "</a>")%>
 </p>
 
 <div class="configure"><form action="" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
-<h3><%=intl._("Manual Reseed from URL")%></h3>
-<p><%=intl._("Enter zip or su3 URL")%> :
+<h3><%=intl._t("Manual Reseed from URL")%></h3>
+<p><%=intl._t("Enter zip or su3 URL")%> :
 <input name="url" type="text" size="60" value="" />
-<br><%=intl._("The su3 format is preferred, as it will be verified as signed by a trusted source.")%>
-<%=intl._("The zip format is unsigned; use a zip file only from a source that you trust.")%>
+<br><%=intl._t("The su3 format is preferred, as it will be verified as signed by a trusted source.")%>
+<%=intl._t("The zip format is unsigned; use a zip file only from a source that you trust.")%>
 </p>
 <div class="formaction">
-<input type="submit" name="action" class="download" value="<%=intl._("Reseed from URL")%>" />
+<input type="submit" name="action" class="download" value="<%=intl._t("Reseed from URL")%>" />
 </div></form></div>
 
 <div class="configure">
 <form action="" method="POST" enctype="multipart/form-data" accept-charset="UTF-8">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
-<h3><%=intl._("Manual Reseed from File")%></h3>
-<p><%=intl._("Select zip or su3 file")%> :
+<h3><%=intl._t("Manual Reseed from File")%></h3>
+<p><%=intl._t("Select zip or su3 file")%> :
 <input name="file" type="file" value="" />
-<br><%=intl._("The su3 format is preferred, as it will be verified as signed by a trusted source.")%>
-<%=intl._("The zip format is unsigned; use a zip file only from a source that you trust.")%>
+<br><%=intl._t("The su3 format is preferred, as it will be verified as signed by a trusted source.")%>
+<%=intl._t("The zip format is unsigned; use a zip file only from a source that you trust.")%>
 </p>
 <div class="formaction">
-<input type="submit" name="action" class="download" value="<%=intl._("Reseed from file")%>" />
+<input type="submit" name="action" class="download" value="<%=intl._t("Reseed from file")%>" />
 </div></form></div>
 
 <div class="configure">
 <form action="/createreseed" method="GET">
-<h3><%=intl._("Create Reseed File")%></h3>
-<p><%=intl._("Create a new reseed zip file you may share for others to reseed manually.")%>
-<%=intl._("This file will never contain your own router's identity or IP.")%>
+<h3><%=intl._t("Create Reseed File")%></h3>
+<p><%=intl._t("Create a new reseed zip file you may share for others to reseed manually.")%>
+<%=intl._t("This file will never contain your own router's identity or IP.")%>
 </p>
 <div class="formaction">
-<input type="submit" name="action" class="go" value="<%=intl._("Create reseed file")%>" />
+<input type="submit" name="action" class="go" value="<%=intl._t("Create reseed file")%>" />
 </div></form></div>
 
 <div class="configure">
 <form action="" method="POST">
 <input type="hidden" name="nonce" value="<%=pageNonce%>" >
-<h3><%=intl._("Reseeding Configuration")%></h3>
-<p><b><%=intl._("The default settings will work for most people.")%></b>
-<%=intl._("Change these only if HTTPS is blocked by a restrictive firewall and reseed has failed.")%>
+<h3><%=intl._t("Reseeding Configuration")%></h3>
+<p><b><%=intl._t("The default settings will work for most people.")%></b>
+<%=intl._t("Change these only if HTTPS is blocked by a restrictive firewall and reseed has failed.")%>
 </p>
 <div class="wideload">
 <table border="0" cellspacing="5">
-<tr><td class="mediumtags" align="right"><b><%=intl._("Reseed URL Selection")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("Reseed URL Selection")%>:</b></td>
 <td><input type="radio" class="optbox" name="mode" value="0" <%=reseedHelper.modeChecked(0) %> >
-<b><%=intl._("Try SSL first then non-SSL")%></b><br>
+<b><%=intl._t("Try SSL first then non-SSL")%></b><br>
 <input type="radio" class="optbox" name="mode" value="1" <%=reseedHelper.modeChecked(1) %> >
-<b><%=intl._("Use SSL only")%></b><br>
+<b><%=intl._t("Use SSL only")%></b><br>
 <input type="radio" class="optbox" name="mode" value="2" <%=reseedHelper.modeChecked(2) %> >
-<b><%=intl._("Use non-SSL only")%></b></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("Reseed URLs")%>:</b></td>
-<td><textarea wrap="off" name="reseedURL" cols="60" rows="7" spellcheck="false"><jsp:getProperty name="reseedHelper" property="reseedURL" /></textarea></td></tr>
+<b><%=intl._t("Use non-SSL only")%></b></td></tr>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("Reseed URLs")%>:</b></td>
+<td><textarea wrap="off" name="reseedURL" cols="60" rows="7" spellcheck="false"><jsp:getProperty name="reseedHelper" property="reseedURL" /></textarea>
+<div class="formaction"><input type="submit" name="action" value="<%=intl._t("Reset URL list")%>" /></div>
+</td></tr>
 
-<tr><td class="mediumtags" align="right"><b><%=intl._("Enable HTTP Proxy?")%></b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("Enable HTTP Proxy?")%></b></td>
 <td><input type="checkbox" class="optbox" name="enable" value="true" <jsp:getProperty name="reseedHelper" property="enable" /> ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Host")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTP Proxy Host")%>:</b></td>
 <td><input name="host" type="text" value="<jsp:getProperty name="reseedHelper" property="host" />" ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Port")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTP Proxy Port")%>:</b></td>
 <td><input name="port" type="text" size="5" maxlength="5" value="<jsp:getProperty name="reseedHelper" property="port" />" ></td></tr>
 
-<tr><td class="mediumtags" align="right"><b><%=intl._("Use HTTP Proxy Authorization?")%></b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("Use HTTP Proxy Authorization?")%></b></td>
 <td><input type="checkbox" class="optbox" name="auth" value="true" <jsp:getProperty name="reseedHelper" property="auth" /> ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Username")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTP Proxy Username")%>:</b></td>
 <td><input name="username" type="text" value="<jsp:getProperty name="reseedHelper" property="username" />" ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTP Proxy Password")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTP Proxy Password")%>:</b></td>
 <td><input name="nofilter_password" type="password" value="<jsp:getProperty name="reseedHelper" property="nofilter_password" />" ></td></tr>
 
 <!-- TODO Need SSLEepGet support
-<tr><td class="mediumtags" align="right"><b><%=intl._("Enable HTTPS Proxy?")%></b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("Enable HTTPS Proxy?")%></b></td>
 <td><input type="checkbox" class="optbox" name="senable" value="true" <jsp:getProperty name="reseedHelper" property="senable" /> ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Host")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTPS Proxy Host")%>:</b></td>
 <td><input name="shost" type="text" value="<jsp:getProperty name="reseedHelper" property="shost" />" ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Port")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTPS Proxy Port")%>:</b></td>
 <td><input name="sport" type="text" size="5" maxlength="5" value="<jsp:getProperty name="reseedHelper" property="sport" />" ></td></tr>
 
-<tr><td class="mediumtags" align="right"><b><%=intl._("Use HTTPS Proxy Authorization?")%></b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("Use HTTPS Proxy Authorization?")%></b></td>
 <td><input type="checkbox" class="optbox" name="sauth" value="true" <jsp:getProperty name="reseedHelper" property="sauth" /> ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Username")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTPS Proxy Username")%>:</b></td>
 <td><input name="susername" type="text" value="<jsp:getProperty name="reseedHelper" property="susername" />" ></td></tr>
-<tr><td class="mediumtags" align="right"><b><%=intl._("HTTPS Proxy Password")%>:</b></td>
+<tr><td class="mediumtags" align="right"><b><%=intl._t("HTTPS Proxy Password")%>:</b></td>
 <td><input name="nofilter_spassword" type="password" value="<jsp:getProperty name="reseedHelper" property="nofilter_spassword" />" ></td></tr>
 -->
 
 </table></div>
 <div class="formaction">
-<input type="submit" class="cancel" name="foo" value="<%=intl._("Cancel")%>" />
-<input type="submit" name="action" class="download" value="<%=intl._("Save changes and reseed now")%>" />
-<input type="submit" name="action" class="accept" value="<%=intl._("Save changes")%>" />
+<input type="submit" class="cancel" name="foo" value="<%=intl._t("Cancel")%>" />
+<input type="submit" name="action" class="download" value="<%=intl._t("Save changes and reseed now")%>" />
+<input type="submit" name="action" class="accept" value="<%=intl._t("Save changes")%>" />
 </div></form></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp
index f12c9b95cb055a6f5f2968eb800ac18c12eb1121..987aefdeba952b19f004ac2ff21a4db3a7d3bcee 100644
--- a/apps/routerconsole/jsp/configservice.jsp
+++ b/apps/routerconsole/jsp/configservice.jsp
@@ -10,7 +10,7 @@
 </head><body onload="initAjax()">
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Service Configuration")%></h1>
+<h1><%=intl._t("I2P Service Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -19,63 +19,63 @@
  <div class="configure">
  <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
- <h3><%=intl._("Shutdown the router")%></h3>
- <p><%=intl._("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%> 
-    <%=intl._("If you need to kill the router immediately, that option is available as well.")%></p>
+ <h3><%=intl._t("Shutdown the router")%></h3>
+ <p><%=intl._t("Graceful shutdown lets the router satisfy the agreements it has already made before shutting down, but may take a few minutes.")%> 
+    <%=intl._t("If you need to kill the router immediately, that option is available as well.")%></p>
   <hr><div class="formaction">
- <input type="submit" class="stop" name="action" value="<%=intl._("Shutdown gracefully")%>" >
- <input type="submit" class="stop" name="action" value="<%=intl._("Shutdown immediately")%>" >
+ <input type="submit" class="stop" name="action" value="<%=intl._t("Shutdown gracefully")%>" >
+ <input type="submit" class="stop" name="action" value="<%=intl._t("Shutdown immediately")%>" >
  <% if (formhandler.shouldShowCancelGraceful()) { %>
-     <input type="submit" class="cancel" name="action" value="<%=intl._("Cancel graceful shutdown")%>" >
+     <input type="submit" class="cancel" name="action" value="<%=intl._t("Cancel graceful shutdown")%>" >
  <% } %>
  </div>
  <% if (System.getProperty("wrapper.version") != null) { %>
- <p><%=intl._("If you want the router to restart itself after shutting down, you can choose one of the following.")%> 
-    <%=intl._("This is useful in some situations - for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on.")%> 
-    <%=intl._("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%> 
-    <%=intl._("After tearing down the router, it will wait 1 minute before starting back up again.")%></p>
+ <p><%=intl._t("If you want the router to restart itself after shutting down, you can choose one of the following.")%> 
+    <%=intl._t("This is useful in some situations - for example, if you changed some settings that client applications only read at startup, such as the routerconsole password or the interface it listens on.")%> 
+    <%=intl._t("A graceful restart will take a few minutes (but your peers will appreciate your patience), while a hard restart does so immediately.")%> 
+    <%=intl._t("After tearing down the router, it will wait 1 minute before starting back up again.")%></p>
  <hr><div class="formaction">
- <input type="submit" class="reload" name="action" value="<%=intl._("Graceful restart")%>" >
- <input type="submit" class="reload" name="action" value="<%=intl._("Hard restart")%>" >
+ <input type="submit" class="reload" name="action" value="<%=intl._t("Graceful restart")%>" >
+ <input type="submit" class="reload" name="action" value="<%=intl._t("Hard restart")%>" >
  <% } %></div>
 
  <% if ( (System.getProperty("os.name") != null) && (System.getProperty("os.name").startsWith("Win")) ) { %>
- <h3><%=intl._("Systray integration")%></h3>
- <p><%=intl._("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%> 
-    <%=intl._("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%> 
-    <%=intl._("If you are on windows, you can either enable or disable that icon here.")%></p>
+ <h3><%=intl._t("Systray integration")%></h3>
+ <p><%=intl._t("On the windows platform, there is a small application to sit in the system tray, allowing you to view the router's status")%> 
+    <%=intl._t("(later on, I2P client applications will be able to integrate their own functionality into the system tray as well).")%> 
+    <%=intl._t("If you are on windows, you can either enable or disable that icon here.")%></p>
  <hr><div class="formaction">
- <input type="submit" name="action" value="<%=intl._("Show systray icon")%>" >
- <input type="submit" name="action" value="<%=intl._("Hide systray icon")%>" >
+ <input type="submit" name="action" value="<%=intl._t("Show systray icon")%>" >
+ <input type="submit" name="action" value="<%=intl._t("Hide systray icon")%>" >
  </div>
- <h3><%=intl._("Run on startup")%></h3>
- <p><%=intl._("You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly.")%> 
-    <%=intl._("If you prefer the command line, you can also run the ")%> <code>install_i2p_service_winnt.bat</code> (<%=intl._("or")%>
+ <h3><%=intl._t("Run on startup")%></h3>
+ <p><%=intl._t("You can control whether I2P is run on startup or not by selecting one of the following options - I2P will install (or remove) a service accordingly.")%> 
+    <%=intl._t("If you prefer the command line, you can also run the ")%> <code>install_i2p_service_winnt.bat</code> (<%=intl._t("or")%>
  <code>uninstall_i2p_service_winnt.bat</code>).</p>
  <hr><div class="formaction">
- <input type="submit" name="action" value="<%=intl._("Run I2P on startup")%>" >
-<input type="submit" name="action" value="<%=intl._("Don't run I2P on startup")%>" ></div>
- <p><b><%=intl._("Note")%>:</b> <%=intl._("If you are running I2P as service right now, removing it will shut down your router immediately.")%> 
-    <%=intl._("You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat.")%></p>
+ <input type="submit" name="action" value="<%=intl._t("Run I2P on startup")%>" >
+<input type="submit" name="action" value="<%=intl._t("Don't run I2P on startup")%>" ></div>
+ <p><b><%=intl._t("Note")%>:</b> <%=intl._t("If you are running I2P as service right now, removing it will shut down your router immediately.")%> 
+    <%=intl._t("You may want to consider shutting down gracefully, as above, then running uninstall_i2p_service_winnt.bat.")%></p>
  <% } %>
 
- <h3><%=intl._("Debugging")%></h3>
- <p><a href="/jobs"><%=intl._("View the job queue")%></a>
+ <h3><%=intl._t("Debugging")%></h3>
+ <p><a href="/jobs"><%=intl._t("View the job queue")%></a>
 <% if (System.getProperty("wrapper.version") != null) { %>
- <p><%=intl._("At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to <a href=\"logs.jsp#servicelogs\">wrapper.log</a>.")%></p>
+ <p><%=intl._t("At times, it may be helpful to debug I2P by getting a thread dump. To do so, please select the following option and review the thread dumped to <a href=\"logs.jsp#servicelogs\">wrapper.log</a>.")%></p>
   <hr>
 <% } %>
  <div class="formaction">
- <input type="submit" class="reload" name="action" value="<%=intl._("Force GC")%>" >
+ <input type="submit" class="reload" name="action" value="<%=intl._t("Force GC")%>" >
 <% if (System.getProperty("wrapper.version") != null) { %>
- <input type="submit" class="download" name="action" value="<%=intl._("Dump threads")%>" >
+ <input type="submit" class="download" name="action" value="<%=intl._t("Dump threads")%>" >
 <% } %>
  </div>
 
- <h3><%=intl._("Launch browser on router startup?")%></h3>
- <p><%=intl._("I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at")%>
+ <h3><%=intl._t("Launch browser on router startup?")%></h3>
+ <p><%=intl._t("I2P's main configuration interface is this web console, so for your convenience I2P can launch a web browser on startup pointing at")%>
  <a href="http://127.0.0.1:7657/">http://127.0.0.1:7657/</a> .</p>
  <hr><div class="formaction">
- <input type="submit" class="check" name="action" value="<%=intl._("View console on startup")%>" >
- <input type="submit" class="delete" name="action" value="<%=intl._("Do not view console on startup")%>" >
+ <input type="submit" class="check" name="action" value="<%=intl._t("View console on startup")%>" >
+ <input type="submit" class="delete" name="action" value="<%=intl._t("Do not view console on startup")%>" >
 </div></form></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configsidebar.jsp b/apps/routerconsole/jsp/configsidebar.jsp
index 129feaa10701cf0dcf5b1f635ddf6b533a25008a..63c3ed18ceebd77e55a23028f1922d65bc825c68 100644
--- a/apps/routerconsole/jsp/configsidebar.jsp
+++ b/apps/routerconsole/jsp/configsidebar.jsp
@@ -17,7 +17,7 @@ input.default {
 </head><body onload="initAjax()">
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Summary Bar Configuration")%></h1>
+<h1><%=intl._t("I2P Summary Bar Configuration")%></h1>
 <div class="main" id="main">
 <%@include file="confignav.jsi" %>
 
@@ -29,23 +29,23 @@ input.default {
 <jsp:useBean class="net.i2p.router.web.SummaryHelper" id="summaryhelper" scope="request" />
 <jsp:setProperty name="summaryhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
-<h3><%=intl._("Refresh Interval")%></h3>
+<h3><%=intl._t("Refresh Interval")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="group" value="0">
  <input type="text" name="refreshInterval" value="<jsp:getProperty name="intl" property="refresh" />" >
- <%=intl._("seconds")%>
- <input type="submit" name="action" class="accept" value="<%=intl._("Save")%>" >
+ <%=intl._t("seconds")%>
+ <input type="submit" name="action" class="accept" value="<%=intl._t("Save")%>" >
 </form>
 
-<h3><%=intl._("Customize Summary Bar")%></h3>
+<h3><%=intl._t("Customize Summary Bar")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="group" value="2">
  <jsp:getProperty name="summaryhelper" property="configTable" />
  <div class="formaction">
-  <input type="submit" class="reload" name="action" value="<%=intl._("Restore full default")%>" >
-  <input type="submit" class="reload" name="action" value="<%=intl._("Restore minimal default")%>" >
+  <input type="submit" class="reload" name="action" value="<%=intl._t("Restore full default")%>" >
+  <input type="submit" class="reload" name="action" value="<%=intl._t("Restore minimal default")%>" >
  </div>
 </form>
 </div></body></html>
diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp
index 4100a4b1e2abf53300e439cd36213c9fb2e87594..802d615e5c0f07fa2a4c6861d6db57639788d0d0 100644
--- a/apps/routerconsole/jsp/configstats.jsp
+++ b/apps/routerconsole/jsp/configstats.jsp
@@ -61,7 +61,7 @@ function toggleAll(category)
 </script>
 </head><body onLoad="init();">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Stats Configuration")%></h1>
+<h1><%=intl._t("I2P Stats Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -73,44 +73,44 @@ function toggleAll(category)
  <form id="statsForm" name="statsForm" action="" method="POST">
  <input type="hidden" name="action" value="foo" >
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
- <h3><%=intl._("Configure I2P Stat Collection")%></h3>
- <p><%=intl._("Enable full stats?")%>
+ <h3><%=intl._t("Configure I2P Stat Collection")%></h3>
+ <p><%=intl._t("Enable full stats?")%>
  <input type="checkbox" class="optbox" name="isFull" value="true" <%
  if (statshelper.getIsFull()) { %>checked="checked" <% } %> >
- (<%=intl._("change requires restart to take effect")%>)<br>
+ (<%=intl._t("change requires restart to take effect")%>)<br>
 <%
 
   // stats.log for devs only and grows without bounds, not recommended
   boolean shouldShowLog = statshelper.shouldShowLog();
   if (shouldShowLog) {
 
-%><%=intl._("Stat file")%>: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" ><br>
+%><%=intl._t("Stat file")%>: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" ><br>
 Warning - Log with care, stat file grows without limit.<br>
 <%
 
   }  // shouldShowLog
 
-%><%=intl._("Filter")%>: (<a href="javascript:void(null);" onclick="toggleAll('*')"><%=intl._("toggle all")%></a>)<br></p>
+%><%=intl._t("Filter")%>: (<a href="javascript:void(null);" onclick="toggleAll('*')"><%=intl._t("toggle all")%></a>)<br></p>
  <div class="wideload">
  <table>
  <% while (statshelper.hasMoreStats()) {
       while (statshelper.groupRequired()) { %>
  <tr class="tablefooter">
      <td align="left" colspan="3" id=<%=statshelper.getCurrentGroupName()%>>
-     <b><%=intl._(statshelper.getCurrentGroupName())%></b>
-     (<a href="javascript:void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')"><%=intl._("toggle all")%></a>)
+     <b><%=intl._t(statshelper.getCurrentGroupName())%></b>
+     (<a href="javascript:void(null);" onclick="toggleAll('<%=statshelper.getCurrentGroupName()%>')"><%=intl._t("toggle all")%></a>)
      </td></tr>
  <tr class="tablefooter">
 <%
 
   if (shouldShowLog) {
 
-%>  <td align="center"><b><%=intl._("Log")%></b></td>
+%>  <td align="center"><b><%=intl._t("Log")%></b></td>
 <%
 
   }  // shouldShowLog
 
-%>    <td align="center"><b><%=intl._("Graph")%></b></td>
+%>    <td align="center"><b><%=intl._t("Graph")%></b></td>
     <td></td></tr>
         <%
      } // end iterating over required groups for the current stat %>
@@ -139,14 +139,14 @@ Warning - Log with care, stat file grows without limit.<br>
 
 %> <tr><td colspan="3"></td></tr>
  <tr><td align="center"><input type="checkbox" class="optbox" name="explicitFilter" ></td>
-     <td colspan="2"><%=intl._("Advanced filter")%>:
+     <td colspan="2"><%=intl._t("Advanced filter")%>:
      <input type="text" name="explicitFilterValue" value="<%=statshelper.getExplicitFilter()%>" size="40" ></td></tr>
 <%
 
   }  // shouldShowLog
 
 %>   <tr class="tablefooter"><td colspan="3" align="right">
-<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
+<input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+<input type="submit" name="shouldsave" class="accept" value="<%=intl._t("Save changes")%>" >
 </td></tr>
 </table></div></form></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp
index de82f0027d813fa7e9050396f240ea92f42a0a86..09a2ceee97c5b9868cc6a1e7db99bf4f2d2b9613 100644
--- a/apps/routerconsole/jsp/configtunnels.jsp
+++ b/apps/routerconsole/jsp/configtunnels.jsp
@@ -13,28 +13,28 @@
 
 <jsp:useBean class="net.i2p.router.web.ConfigTunnelsHelper" id="tunnelshelper" scope="request" />
 <jsp:setProperty name="tunnelshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
-<h1><%=intl._("I2P Tunnel Configuration")%></h1>
+<h1><%=intl._t("I2P Tunnel Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
  <jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" />
 <%@include file="formhandler.jsi" %>
  <div class="configure"><p>
- <%=intl._("NOTE")%>: 
- <%=intl._("The default settings work for most people.")%> 
- <%=intl._("There is a fundamental tradeoff between anonymity and performance.")%>
- <%=intl._("Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability.")%>
- <%=intl._("High CPU and/or high outbound bandwidth usage may result.")%>
- <%=intl._("Change these settings with care, and adjust them if you have problems.")%>
+ <%=intl._t("NOTE")%>: 
+ <%=intl._t("The default settings work for most people.")%> 
+ <%=intl._t("There is a fundamental tradeoff between anonymity and performance.")%>
+ <%=intl._t("Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely reduce performance or reliability.")%>
+ <%=intl._t("High CPU and/or high outbound bandwidth usage may result.")%>
+ <%=intl._t("Change these settings with care, and adjust them if you have problems.")%>
 <div class="wideload">
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
  <jsp:getProperty name="tunnelshelper" property="form" />
- <%=intl._("Note")%>: <%=intl._("Exploratory tunnel setting changes are stored in the router.config file.")%>
- <%=intl._("Client tunnel changes are temporary and are not saved.")%>
-<%=intl._("To make permanent client tunnel changes see the")%> <a href="i2ptunnel/index.jsp"><%=intl._("i2ptunnel page")%></a>.
+ <%=intl._t("Note")%>: <%=intl._t("Exploratory tunnel setting changes are stored in the router.config file.")%>
+ <%=intl._t("Client tunnel changes are temporary and are not saved.")%>
+<%=intl._t("To make permanent client tunnel changes see the")%> <a href="i2ptunnel/index.jsp"><%=intl._t("i2ptunnel page")%></a>.
  <hr><div class="formaction">
-<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Save changes")%>" >
+<input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+<input type="submit" name="shouldsave" class="accept" value="<%=intl._t("Save changes")%>" >
 </div>
  </form></div></div></div></body></html>
diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp
index 7635ab1e3e20a07e851b81621bd3d71dc31a539d..96f7bf84cd73be6099a71b4b77bc180966639bc9 100644
--- a/apps/routerconsole/jsp/configui.jsp
+++ b/apps/routerconsole/jsp/configui.jsp
@@ -22,16 +22,16 @@ input.default {
 <jsp:useBean class="net.i2p.router.web.ConfigUIHelper" id="uihelper" scope="request" />
 <jsp:setProperty name="uihelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 
-<h1><%=uihelper._("I2P UI Configuration")%></h1>
+<h1><%=uihelper._t("I2P UI Configuration")%></h1>
 <div class="main" id="main">
 
  <%@include file="confignav.jsi" %>
 
  <jsp:useBean class="net.i2p.router.web.ConfigUIHandler" id="formhandler" scope="request" />
 <%@include file="formhandler.jsi" %>
-<div class="configure"><div class="topshimten"><h3><%=uihelper._("Router Console Theme")%></h3></div>
+<div class="configure"><div class="topshimten"><h3><%=uihelper._t("Router Console Theme")%></h3></div>
  <form action="" method="POST">
- <input type="hidden" name="consoleNonce" value="<%=intl.getNonce()%>" >
+ <input type="hidden" name="consoleNonce" value="<%=net.i2p.router.web.CSSHelper.getNonce()%>" >
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <input type="hidden" name="action" value="blah" >
 <%
@@ -40,28 +40,28 @@ input.default {
 %>
  <jsp:getProperty name="uihelper" property="settings" />
 <% } else { %>
-<%=uihelper._("Theme selection disabled for Internet Explorer, sorry.")%>
+<%=uihelper._t("Theme selection disabled for Internet Explorer, sorry.")%>
 <hr>
-<%=uihelper._("If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes.")%>
+<%=uihelper._t("If you're not using IE, it's likely that your browser is pretending to be IE; please configure your browser (or proxy) to use a different User Agent string if you'd like to access the console themes.")%>
 <% } %>
  <jsp:getProperty name="uihelper" property="forceMobileConsole" />
-<h3><%=uihelper._("Router Console Language")%></h3>
+<h3><%=uihelper._t("Router Console Language")%></h3>
 <jsp:getProperty name="uihelper" property="langSettings" />
-<p><%=uihelper._("Please contribute to the router console translation project! Contact the developers in #i2p-dev on IRC to help.")%>
+<p><%=uihelper._t("Please contribute to the router console translation project! Contact the developers in #i2p-dev on IRC to help.")%>
 </p><hr><div class="formaction">
-<input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-<input type="submit" name="shouldsave" class="accept" value="<%=intl._("Apply")%>" >
+<input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+<input type="submit" name="shouldsave" class="accept" value="<%=intl._t("Apply")%>" >
 </div></form>
 
-<h3><%=uihelper._("Router Console Password")%></h3>
+<h3><%=uihelper._t("Router Console Password")%></h3>
 <form action="" method="POST">
  <input type="hidden" name="nonce" value="<%=pageNonce%>" >
  <jsp:getProperty name="uihelper" property="passwordForm" />
  <div class="formaction">
-  <input type="submit" name="action" class="default" value="<%=intl._("Add user")%>" >
-  <input type="submit" name="action" class="delete" value="<%=intl._("Delete selected")%>" >
-  <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-  <input type="submit" name="action" class="add" value="<%=intl._("Add user")%>" >
+  <input type="submit" name="action" class="default" value="<%=intl._t("Add user")%>" >
+  <input type="submit" name="action" class="delete" value="<%=intl._t("Delete selected")%>" >
+  <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+  <input type="submit" name="action" class="add" value="<%=intl._t("Add user")%>" >
  </div>
 </form></div>
 </div></body></html>
diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp
index 1171fbcab338a4f6f45254b0fb19039f6957c932..e1e0734043b007af92d5eab766a48eb7c87f3d21 100644
--- a/apps/routerconsole/jsp/configupdate.jsp
+++ b/apps/routerconsole/jsp/configupdate.jsp
@@ -11,7 +11,7 @@
 </head><body onload="initAjax()">
 
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Update Configuration")%></h1>
+<h1><%=intl._t("I2P Update Configuration")%></h1>
 <div class="main" id="main">
  <%@include file="confignav.jsi" %>
 
@@ -27,57 +27,57 @@
  <% /* set hidden default */ %>
  <input type="submit" name="action" value="" style="display:none" >
     <% if (updatehelper.canInstall()) { %>
-      <h3><%=intl._("Check for I2P and news updates")%></h3>
+      <h3><%=intl._t("Check for I2P and news updates")%></h3>
       <div class="wideload"><table border="0" cellspacing="5">
         <tr><td colspan="2"></tr>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("News &amp; I2P Updates")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("News &amp; I2P Updates")%>:</b></td>
      <% } else { %>
-      <h3><%=intl._("Check for news updates")%></h3>
+      <h3><%=intl._t("Check for news updates")%></h3>
       <div class="wideload"><table border="0" cellspacing="5">
         <tr><td colspan="2"></tr>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("News Updates")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("News Updates")%>:</b></td>
      <% }   // if canInstall %>
-          <td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" class="check" value="<%=intl._("Check for updates")%>" />
+          <td> <% if ("true".equals(System.getProperty("net.i2p.router.web.UpdateHandler.updateInProgress", "false"))) { %> <i><%=intl._t("Update In Progress")%></i><br> <% } else { %> <input type="submit" name="action" class="check" value="<%=intl._t("Check for updates")%>" />
             <% } %></td></tr>
         <tr><td colspan="2"><br></td></tr>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("News URL")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("News URL")%>:</b></td>
           <td><input type="text" size="60" name="newsURL" <% if (!updatehelper.isAdvanced()) { %>readonly="readonly"<% } %> value="<jsp:getProperty name="updatehelper" property="newsURL" />"></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Refresh frequency")%>:</b>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Refresh frequency")%>:</b>
           <td><jsp:getProperty name="updatehelper" property="refreshFrequencySelectBox" /></td></tr>
     <% if (updatehelper.canInstall()) { %>
-        <tr><td class="mediumtags" align="right"><b><%=formhandler._("Update policy")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=formhandler._t("Update policy")%>:</b></td>
           <td><jsp:getProperty name="updatehelper" property="updatePolicySelectBox" /></td></tr>
     <% }   // if canInstall %>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("Fetch news through the eepProxy?")%></b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("Fetch news through the eepProxy?")%></b></td>
           <td><jsp:getProperty name="updatehelper" property="newsThroughProxy" /></td></tr>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("Update through the eepProxy?")%></b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("Update through the eepProxy?")%></b></td>
           <td><jsp:getProperty name="updatehelper" property="updateThroughProxy" /></td></tr>
       <% if (updatehelper.isAdvanced()) { %>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("eepProxy host")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("eepProxy host")%>:</b></td>
           <td><input type="text" size="10" name="proxyHost" value="<jsp:getProperty name="updatehelper" property="proxyHost" />" /></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("eepProxy port")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("eepProxy port")%>:</b></td>
           <td><input type="text" size="10" name="proxyPort" value="<jsp:getProperty name="updatehelper" property="proxyPort" />" /></td></tr>
       <% }   // if isAdvanced %>
     <% if (updatehelper.canInstall()) { %>
       <% if (updatehelper.isAdvanced()) { %>
-        <tr><td class="mediumtags" align="right"><b><%=intl._("Update URLs")%>:</b></td>
+        <tr><td class="mediumtags" align="right"><b><%=intl._t("Update URLs")%>:</b></td>
           <td><textarea cols="60" rows="6" name="updateURL" wrap="off" spellcheck="false"><jsp:getProperty name="updatehelper" property="updateURL" /></textarea></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Trusted keys")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Trusted keys")%>:</b></td>
           <td><textarea cols="60" rows="6" name="trustedKeys" wrap="off" spellcheck="false"><jsp:getProperty name="updatehelper" property="trustedKeys" /></textarea></td></tr>
-        <tr><td id="devSU3build" class="mediumtags" align="right"><b><%=intl._("Update with signed development builds?")%></b></td>
+        <tr><td id="devSU3build" class="mediumtags" align="right"><b><%=intl._t("Update with signed development builds?")%></b></td>
           <td><jsp:getProperty name="updatehelper" property="updateDevSU3" /></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Signed Build URL")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Signed Build URL")%>:</b></td>
           <td><input type="text" size="60" name="devSU3URL" value="<jsp:getProperty name="updatehelper" property="devSU3URL" />"></td></tr>
-        <tr><td id="unsignedbuild" class="mediumtags" align="right"><b><%=intl._("Update with unsigned development builds?")%></b></td>
+        <tr><td id="unsignedbuild" class="mediumtags" align="right"><b><%=intl._t("Update with unsigned development builds?")%></b></td>
           <td><jsp:getProperty name="updatehelper" property="updateUnsigned" /></td>
-        </tr><tr><td class="mediumtags" align="right"><b><%=intl._("Unsigned Build URL")%>:</b></td>
+        </tr><tr><td class="mediumtags" align="right"><b><%=intl._t("Unsigned Build URL")%>:</b></td>
           <td><input type="text" size="60" name="zipURL" value="<jsp:getProperty name="updatehelper" property="zipURL" />"></td></tr>
       <% }   // if isAdvanced %>
     <% } else { %>
-        <tr><td class="mediumtags" align="center" colspan="2"><b><%=intl._("Updates will be dispatched via your package manager.")%></b></td></tr>
+        <tr><td class="mediumtags" align="center" colspan="2"><b><%=intl._t("Updates will be dispatched via your package manager.")%></b></td></tr>
     <% }   // if canInstall %>
         <tr class="tablefooter"><td colspan="2">
         <div class="formaction">
-            <input type="reset" class="cancel" value="<%=intl._("Cancel")%>" >
-            <input type="submit" name="action" class="accept" value="<%=intl._("Save")%>" >
+            <input type="reset" class="cancel" value="<%=intl._t("Cancel")%>" >
+            <input type="submit" name="action" class="accept" value="<%=intl._t("Save")%>" >
         </div></td></tr></table></div></form></div></div></body></html>
diff --git a/apps/routerconsole/jsp/console.jsp b/apps/routerconsole/jsp/console.jsp
index ffed509dd5fbf80aff8f1f2c848b85f8c0eb407b..c61025795e39d2682706aec63def0e384c202349 100644
--- a/apps/routerconsole/jsp/console.jsp
+++ b/apps/routerconsole/jsp/console.jsp
@@ -10,12 +10,12 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%
-    String consoleNonce = intl.getNonce();
+    String consoleNonce = net.i2p.router.web.CSSHelper.getNonce();
 %>
 
 <%@include file="summary.jsi" %>
 
-<h1><%=intl._("I2P Router Console")%></h1>
+<h1><%=intl._t("I2P Router Console")%></h1>
 <div class="news" id="news">
 <%
    if (newshelper.shouldShowNews()) {
@@ -61,7 +61,7 @@
     <a href="/console?lang=vi&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a>
   </div>
   <a name="top"></a>
-  <h2><%=intl._("Welcome to I2P")%></h2>
+  <h2><%=intl._t("Welcome to I2P")%></h2>
  </div>
  <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %>
  <jsp:setProperty name="contenthelper" property="page" value="<%=fpath.getAbsolutePath()%>" />
diff --git a/apps/routerconsole/jsp/css.jsi b/apps/routerconsole/jsp/css.jsi
index 50c70d875c1ccfeb115de598c46fc5a45e1f0bcf..edae862400f786e0f7c9dc343efc9edf9f900ed0 100644
--- a/apps/routerconsole/jsp/css.jsi
+++ b/apps/routerconsole/jsp/css.jsi
@@ -37,7 +37,7 @@
    }
 
    String conNonceParam = request.getParameter("consoleNonce");
-   if (intl.getNonce().equals(conNonceParam)) {
+   if (net.i2p.router.web.CSSHelper.getNonce().equals(conNonceParam)) {
        intl.setLang(request.getParameter("lang"));
        intl.setNews(request.getParameter("news"));
    }
diff --git a/apps/routerconsole/jsp/dns.jsp b/apps/routerconsole/jsp/dns.jsp
index 8080c115b1e806c08f3af2b894207b29e0e87950..23a353416e779c0ab9b45e5399d4dcd1a2912b0f 100644
--- a/apps/routerconsole/jsp/dns.jsp
+++ b/apps/routerconsole/jsp/dns.jsp
@@ -30,11 +30,11 @@
 
 <%@include file="summary.jsi" %>
 
-<h1><%=intl._("I2P Addressbook")%> <span class="newtab"><a href="/susidns/index" target="_blank" title="<%=intl._("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
+<h1><%=intl._t("I2P Addressbook")%> <span class="newtab"><a href="/susidns/index" target="_blank" title="<%=intl._t("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
 <div class="main" id="main">
 <iframe src="/susidns/index" width="100%" height="100%" frameborder="0" border="0" name="susidnsframe" id="susidnsframe" onload="setupFrame()" allowtransparency="true">
-<%=intl._("Your browser does not support iFrames.")%>
-&nbsp;<a href="/susidns/index"><%=intl._("Click here to continue.")%></a>
+<%=intl._t("Your browser does not support iFrames.")%>
+&nbsp;<a href="/susidns/index"><%=intl._t("Click here to continue.")%></a>
 </iframe>
 </div></body></html>
 <%
diff --git a/apps/routerconsole/jsp/error.jsp b/apps/routerconsole/jsp/error.jsp
index 5dfba993eb0a23a3523caf4c101963fd3ebb106c..663b614316e4a1e5306b95395bd5f1dbae6c0817 100644
--- a/apps/routerconsole/jsp/error.jsp
+++ b/apps/routerconsole/jsp/error.jsp
@@ -25,6 +25,6 @@
 <%@include file="summary.jsi" %>
 <h1><%=ERROR_CODE%>&nbsp;<%=ERROR_MESSAGE%></h1>
 <div class="sorry" id="warning">
-<%=intl._("Sorry! You appear to be requesting a non-existent Router Console page or resource.")%><hr>
-<%=intl._("Error 404")%>: <%=ERROR_URI%>&nbsp;<%=intl._("not found")%>.
+<%=intl._t("Sorry! You appear to be requesting a non-existent Router Console page or resource.")%><hr>
+<%=intl._t("Error 404")%>: <%=ERROR_URI%>&nbsp;<%=intl._t("not found")%>.
 </div></body></html>
diff --git a/apps/routerconsole/jsp/error500.jsp b/apps/routerconsole/jsp/error500.jsp
index 70e82e9d2d97649bed3fcfba5f9f28f1296c92a1..c56b1f7ea0a78f71d9898c44d66cc3dc9eaa09fa 100644
--- a/apps/routerconsole/jsp/error500.jsp
+++ b/apps/routerconsole/jsp/error500.jsp
@@ -22,41 +22,41 @@
 </head><body>
 <div class="routersummaryouter">
 <div class="routersummary">
-<a href="/" title="<%=intl._("Router Console")%>"><img src="/themes/console/images/i2plogo.png" alt="<%=intl._("I2P Router Console")%>" border="0"></a><hr>
-<a href="/config"><%=intl._("Configuration")%></a> <a href="/help"><%=intl._("Help")%></a>
+<a href="/" title="<%=intl._t("Router Console")%>"><img src="/themes/console/images/i2plogo.png" alt="<%=intl._t("I2P Router Console")%>" border="0"></a><hr>
+<a href="/config"><%=intl._t("Configuration")%></a> <a href="/help"><%=intl._t("Help")%></a>
 </div></div>
 <h1><%=ERROR_CODE%> <%=ERROR_MESSAGE%></h1>
 <div class="sorry" id="warning">
-<%=intl._("Sorry! There has been an internal error.")%>
+<%=intl._t("Sorry! There has been an internal error.")%>
 <hr>
 <p>
 <% /* note to translators - both parameters are URLs */
-%><%=intl._("Please report bugs on {0} or {1}.",
+%><%=intl._t("Please report bugs on {0} or {1}.",
           "<a href=\"http://trac.i2p2.i2p/newticket\">trac.i2p2.i2p</a>",
           "<a href=\"https://trac.i2p2.de/newticket\">trac.i2p2.de</a>")%>
 <!--
-<%=intl._("You may use the username \"guest\" and password \"guest\" if you do not wish to register.")%>
+<%=intl._t("You may use the username \"guest\" and password \"guest\" if you do not wish to register.")%>
 -->
-<p><%=intl._("Please include this information in bug reports")%>:
+<p><%=intl._t("Please include this information in bug reports")%>:
 </p></div><div class="sorry" id="warning2">
-<h3><%=intl._("Error Details")%></h3>
+<h3><%=intl._t("Error Details")%></h3>
 <p>
-<%=intl._("Error {0}", ERROR_CODE)%>: <%=ERROR_URI%> <%=ERROR_MESSAGE%>
+<%=intl._t("Error {0}", ERROR_CODE)%>: <%=ERROR_URI%> <%=ERROR_MESSAGE%>
 </p><p>
 <%
     if (ERROR_THROWABLE != null) {
-        java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream(2048);
-        java.io.PrintStream ps = new java.io.PrintStream(baos);
-        ERROR_THROWABLE.printStackTrace(ps);
-        ps.close();
-        String trace = baos.toString();
+        java.io.StringWriter sw = new java.io.StringWriter(2048);
+        java.io.PrintWriter pw = new java.io.PrintWriter(sw);
+        ERROR_THROWABLE.printStackTrace(pw);
+        pw.flush();
+        String trace = sw.toString();
         trace = trace.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;");
         trace = trace.replace("\n", "<br>&nbsp;&nbsp;&nbsp;&nbsp;\n");
         out.print(trace);
     }
 %>
 </p>
-<h3><%=intl._("I2P Version and Running Environment")%></h3>
+<h3><%=intl._t("I2P Version and Running Environment")%></h3>
 <p>
 <b>I2P version:</b> <%=net.i2p.router.RouterVersion.FULL_VERSION%><br>
 <b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)<br>
@@ -71,5 +71,5 @@
 <b>Jbigi:</b> <%=net.i2p.util.NativeBigInteger.loadStatus()%><br>
 <b>Encoding:</b> <%=System.getProperty("file.encoding")%><br>
 <b>Charset:</b> <%=java.nio.charset.Charset.defaultCharset().name()%></p>
-<p><%=intl._("Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report.")%></p>
+<p><%=intl._t("Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report.")%></p>
 </div></body></html>
diff --git a/apps/routerconsole/jsp/events.jsp b/apps/routerconsole/jsp/events.jsp
index b67aa5dd50780f33013d8e7c2ade877c43c69631..29838e7a7824fcf787cf890dc98f2b0afb23d078 100644
--- a/apps/routerconsole/jsp/events.jsp
+++ b/apps/routerconsole/jsp/events.jsp
@@ -18,7 +18,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Event Log")%></h1>
+<h1><%=intl._t("I2P Event Log")%></h1>
 <div class="main" id="main">
  <div class="eventspanel">
  <div class="widepanel">
diff --git a/apps/routerconsole/jsp/graph.jsp b/apps/routerconsole/jsp/graph.jsp
index 92c6f508f85620b7e5365cf72a0a2e18682a9136..1d5c5bf1f54988784750cd70ab4293a70521fc08 100644
--- a/apps/routerconsole/jsp/graph.jsp
+++ b/apps/routerconsole/jsp/graph.jsp
@@ -16,7 +16,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Performance Graphs")%></h1>
+<h1><%=intl._t("I2P Performance Graphs")%></h1>
 <div class="main" id="main">
  <div class="graphspanel">
  <div class="widepanel">
diff --git a/apps/routerconsole/jsp/graphs.jsp b/apps/routerconsole/jsp/graphs.jsp
index 8d4aff75261a5b7fc5c4364d845d60f0e6abbbba..6cde501311db0e87e3fbe2583561edb96d35cc84 100644
--- a/apps/routerconsole/jsp/graphs.jsp
+++ b/apps/routerconsole/jsp/graphs.jsp
@@ -23,7 +23,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Performance Graphs")%></h1>
+<h1><%=intl._t("I2P Performance Graphs")%></h1>
 <div class="main" id="main">
  <div class="graphspanel">
  <div class="widepanel">
diff --git a/apps/routerconsole/jsp/home.jsp b/apps/routerconsole/jsp/home.jsp
index 8553e56e6df1045be31d63e1aa359839a61f05d1..eb9887e97707403aa66ede34b4fdc00a459afc49 100644
--- a/apps/routerconsole/jsp/home.jsp
+++ b/apps/routerconsole/jsp/home.jsp
@@ -8,7 +8,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%
-    String consoleNonce = intl.getNonce();
+    String consoleNonce = net.i2p.router.web.CSSHelper.getNonce();
 %>
 <jsp:useBean class="net.i2p.router.web.NewsHelper" id="newshelper" scope="request" />
 <jsp:setProperty name="newshelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
@@ -23,12 +23,12 @@
 <div class="routersummaryouter">
  <div class="routersummary">
   <div style="height: 36px;">
-   <a href="/console"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/i2plogo.png" alt="<%=intl._("I2P Router Console")%>" title="<%=intl._("I2P Router Console")%>"></a>
+   <a href="/console"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/i2plogo.png" alt="<%=intl._t("I2P Router Console")%>" title="<%=intl._t("I2P Router Console")%>"></a>
   </div>
 <%
     if (!intl.allowIFrame(request.getHeader("User-Agent"))) {
 %>
-  <a href="/summaryframe"><%=intl._("Summary Bar")%></a>
+  <a href="/summaryframe"><%=intl._t("Summary Bar")%></a>
 <%
     }
 %>
@@ -39,7 +39,7 @@
  </div>
 </div>
 
-<h1><%=intl._("I2P Router Console")%></h1>
+<h1><%=intl._t("I2P Router Console")%></h1>
 
 <%
    if (newshelper.shouldShowNews()) {
@@ -57,7 +57,7 @@
 <jsp:useBean class="net.i2p.router.web.HomeHelper" id="homehelper" scope="request" />
 <jsp:setProperty name="homehelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 <% if (homehelper.shouldShowWelcome()) { %>
-<div class="welcome" title="<%=intl._("Click a flag to select a language. Click 'configure language' below to change it later.")%>">
+<div class="welcome" title="<%=intl._t("Click a flag to select a language. Click 'configure language' below to change it later.")%>">
   <div class="langbox" id="langbox">
     <a href="/home?lang=en&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=us" title="English" alt="English"></a>
     <a href="/home?lang=ar&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=lang_ar" title="عربية" alt="عربية"></a>
@@ -87,7 +87,7 @@
     <a href="/home?lang=uk&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=ua" title="Українська" alt="Українська"></a>
     <a href="/home?lang=vi&amp;consoleNonce=<%=consoleNonce%>"><img height="11" width="16" style="padding: 0 2px;" src="/flags.jsp?c=vn" title="Tiếng Việt" alt="Tiếng Việt"></a>
   </div>
-  <h2><%=intl._("Welcome to I2P")%></h2>
+  <h2><%=intl._t("Welcome to I2P")%></h2>
 </div>
 <% }  // shouldShowWelcome %>
 
@@ -100,7 +100,7 @@
       <table class="search"><tr><td align="right">
         <input size="40" type="text" class="search" name="query" />
       </td><td align="left">
-        <button type="submit" value="search" class="search"><%=intl._("Search I2P")%></button>
+        <button type="submit" value="search" class="search"><%=intl._t("Search I2P")%></button>
       </td><td align="left">
         <jsp:useBean class="net.i2p.router.web.SearchHelper" id="searchhelper" scope="request" />
         <jsp:setProperty name="searchhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
@@ -112,11 +112,11 @@
    }  // shouldShowSearch()
 %>
   <div class="ag2">
-    <h4 class="app"><%=intl._("Hidden Services of Interest")%></h4>
+    <h4 class="app"><%=intl._t("Hidden Services of Interest")%></h4>
     <jsp:getProperty name="homehelper" property="favorites" /><br>
   </div>
   <div class="ag2">
-    <h4 class="app2"><%=intl._("Applications and Configuration")%></h4>
+    <h4 class="app2"><%=intl._t("Applications and Configuration")%></h4>
     <jsp:getProperty name="homehelper" property="services" /><br>
     <div class="clearer">&nbsp;</div>
   </div>
diff --git a/apps/routerconsole/jsp/i2ptunnelmgr.jsp b/apps/routerconsole/jsp/i2ptunnelmgr.jsp
index 45ff895a6cfc87fe3e779e37b89a2dacf6b835c4..a4a5ff6b75b26dcbe8a911ac411175ab0e98447d 100644
--- a/apps/routerconsole/jsp/i2ptunnelmgr.jsp
+++ b/apps/routerconsole/jsp/i2ptunnelmgr.jsp
@@ -52,11 +52,11 @@
 
 <%@include file="summary.jsi" %>
 
-<h1><%=intl._("Hidden Services Manager")%> <span class="newtab"><a href="/i2ptunnel/" target="_blank" title="<%=intl._("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
+<h1><%=intl._t("Hidden Services Manager")%> <span class="newtab"><a href="/i2ptunnel/" target="_blank" title="<%=intl._t("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
 <div class="main" id="main">
 <iframe src="/i2ptunnel/" width="100%" height="100%" frameborder="0" border="0" name="i2ptunnelframe" id="i2ptunnelframe" onload="setupFrame()" allowtransparency="true">
-<%=intl._("Your browser does not support iFrames.")%>
-&nbsp;<a href="/i2ptunnel/"><%=intl._("Click here to continue.")%></a>
+<%=intl._t("Your browser does not support iFrames.")%>
+&nbsp;<a href="/i2ptunnel/"><%=intl._t("Click here to continue.")%></a>
 </iframe>
 </div></body></html>
 <%
diff --git a/apps/routerconsole/jsp/jobs.jsp b/apps/routerconsole/jsp/jobs.jsp
index b9b8d21bf4fd8f263285239c462f473c94d28f20..c77ba192ecaac9372d09d9c6c52c68680d0d9ab2 100644
--- a/apps/routerconsole/jsp/jobs.jsp
+++ b/apps/routerconsole/jsp/jobs.jsp
@@ -9,7 +9,7 @@
 <script src="/js/ajax.js" type="text/javascript"></script>
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
-<%@include file="summary.jsi" %><h1><%=intl._("I2P Router Job Queue")%></h1>
+<%@include file="summary.jsi" %><h1><%=intl._t("I2P Router Job Queue")%></h1>
 <div class="main" id="main">
  <jsp:useBean class="net.i2p.router.web.JobQueueHelper" id="jobQueueHelper" scope="request" />
  <jsp:setProperty name="jobQueueHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
diff --git a/apps/routerconsole/jsp/logs.jsp b/apps/routerconsole/jsp/logs.jsp
index 99d518cbbd203bc01d9d2db86a5734b92d932190..8840545f24eec9fef4fc50b9334272cd27ba7e59 100644
--- a/apps/routerconsole/jsp/logs.jsp
+++ b/apps/routerconsole/jsp/logs.jsp
@@ -9,18 +9,18 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Router Logs")%></h1>
+<h1><%=intl._t("I2P Router Logs")%></h1>
 <div class="main" id="main">
-<div class="joblog"><h3><%=intl._("I2P Version and Running Environment")%></h3><a name="version"> </a>
+<div class="joblog"><h3><%=intl._t("I2P Version and Running Environment")%></h3><a name="version"> </a>
 <p>
 <% /* note to translators - both parameters are URLs */
-%><%=intl._("Please report bugs on {0} or {1}.",
+%><%=intl._t("Please report bugs on {0} or {1}.",
           "<a href=\"http://trac.i2p2.i2p/newticket\">trac.i2p2.i2p</a>",
           "<a href=\"https://trac.i2p2.de/newticket\">trac.i2p2.de</a>")%>
 <!--
-<%=intl._("You may use the username \"guest\" and password \"guest\" if you do not wish to register.")%>
+<%=intl._t("You may use the username \"guest\" and password \"guest\" if you do not wish to register.")%>
 -->
-<p><i><%=intl._("Please include this information in bug reports")%>:</i>
+<p><i><%=intl._t("Please include this information in bug reports")%>:</i>
  <p>
 <b>I2P version:</b> <%=net.i2p.router.RouterVersion.FULL_VERSION%><br>
 <b>Java version:</b> <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)<br>
@@ -36,13 +36,13 @@
 <b>Encoding:</b> <%=System.getProperty("file.encoding")%><br>
 <b>Charset:</b> <%=java.nio.charset.Charset.defaultCharset().name()%><br>
 </p>
-<p><%=intl._("Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report.")%></p>
-<h3><%=intl._("Critical Logs")%></h3><a name="criticallogs"> </a>
+<p><%=intl._t("Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report.")%></p>
+<h3><%=intl._t("Critical Logs")%></h3><a name="criticallogs"> </a>
  <jsp:getProperty name="logsHelper" property="criticalLogs" />
-<h3><%=intl._("Router Logs")%> (<a href="configlogging"><%=intl._("configure")%></a>)</h3>
+<h3><%=intl._t("Router Logs")%> (<a href="configlogging"><%=intl._t("configure")%></a>)</h3>
  <jsp:getProperty name="logsHelper" property="logs" />
-<h3><%=intl._("Event Logs")%></h3>
- <a href="events"><%=intl._("View event logs")%></a>
-<h3><%=intl._("Service (Wrapper) Logs")%></h3><a name="servicelogs"> </a>
+<h3><%=intl._t("Event Logs")%></h3>
+ <a href="events"><%=intl._t("View event logs")%></a>
+<h3><%=intl._t("Service (Wrapper) Logs")%></h3><a name="servicelogs"> </a>
  <jsp:getProperty name="logsHelper" property="serviceLogs" />
 </div></div></body></html>
diff --git a/apps/routerconsole/jsp/netdb.jsp b/apps/routerconsole/jsp/netdb.jsp
index ccbbccfee78befa1abf42a719c5ebda8b5bc8753..1b9be5d03fef789276c176b2f1a6476fa421036c 100644
--- a/apps/routerconsole/jsp/netdb.jsp
+++ b/apps/routerconsole/jsp/netdb.jsp
@@ -10,7 +10,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Network Database")%></h1>
+<h1><%=intl._t("I2P Network Database")%></h1>
 <div class="main" id="main">
  <div class="wideload">
  <jsp:useBean class="net.i2p.router.web.NetDbHelper" id="netdbHelper" scope="request" />
@@ -23,5 +23,7 @@
  <jsp:setProperty name="netdbHelper" property="full" value="<%=request.getParameter(\"f\")%>" />
  <jsp:setProperty name="netdbHelper" property="router" value="<%=request.getParameter(\"r\")%>" />
  <jsp:setProperty name="netdbHelper" property="lease" value="<%=request.getParameter(\"l\")%>" />
+ <jsp:setProperty name="netdbHelper" property="version" value="<%=request.getParameter(\"v\")%>" />
+ <jsp:setProperty name="netdbHelper" property="country" value="<%=request.getParameter(\"c\")%>" />
  <jsp:getProperty name="netdbHelper" property="netDbSummary" />
 </div></div></body></html>
diff --git a/apps/routerconsole/jsp/news.jsp b/apps/routerconsole/jsp/news.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..f85836a40f0119c3cf2f2e083471f50f33af9873
--- /dev/null
+++ b/apps/routerconsole/jsp/news.jsp
@@ -0,0 +1,19 @@
+<%@page contentType="text/html"%>
+<%@page pageEncoding="UTF-8"%>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html><head>
+<%@include file="css.jsi" %>
+<%=intl.title("News")%>
+<script src="/js/ajax.js" type="text/javascript"></script>
+<%@include file="summaryajax.jsi" %>
+</head><body onload="initAjax()">
+<%@include file="summary.jsi" %>
+<h1><%=intl._t("Latest News")%></h1>
+<div class="main" id="main">
+<jsp:useBean class="net.i2p.router.web.NewsFeedHelper" id="feedHelper" scope="request" />
+<jsp:setProperty name="feedHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
+<% feedHelper.setLimit(0); %>
+<div class="fixme" id="fixme">
+<jsp:getProperty name="feedHelper" property="entries" />
+</div></div></body></html>
diff --git a/apps/routerconsole/jsp/nowebapp.jsp b/apps/routerconsole/jsp/nowebapp.jsp
index c94866ce3cfa977b93a4ac235c8b2744433165a2..8d3e227683c0b8e99492573db7a11ee0ab87504f 100644
--- a/apps/routerconsole/jsp/nowebapp.jsp
+++ b/apps/routerconsole/jsp/nowebapp.jsp
@@ -11,8 +11,8 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("Web Application Not Running")%></h1>
+<h1><%=intl._t("Web Application Not Running")%></h1>
 <div class="sorry" id="warning">
-<%=intl._("The requested web application is not running.")%>
-<%=intl._("Please visit the {0}config clients page{1} to start it.", "<a href=\"/configclients.jsp#webapp\" target=\"_top\">", "</a>")%>
+<%=intl._t("The requested web application is not running.")%>
+<%=intl._t("Please visit the {0}config clients page{1} to start it.", "<a href=\"/configclients.jsp#webapp\" target=\"_top\">", "</a>")%>
 </div></body></html>
diff --git a/apps/routerconsole/jsp/peers.jsp b/apps/routerconsole/jsp/peers.jsp
index 0fd2fa9cb32a1f68d3d6fee881517d62a990ded5..70cb9d93eaa9688ce963cea2f1cf6e46099ad141 100644
--- a/apps/routerconsole/jsp/peers.jsp
+++ b/apps/routerconsole/jsp/peers.jsp
@@ -10,7 +10,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Network Peers")%></h1>
+<h1><%=intl._t("I2P Network Peers")%></h1>
 <div class="main" id="main"><div class="wideload">
  <jsp:useBean class="net.i2p.router.web.PeerHelper" id="peerHelper" scope="request" />
  <jsp:setProperty name="peerHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
diff --git a/apps/routerconsole/jsp/profiles.jsp b/apps/routerconsole/jsp/profiles.jsp
index 725be7a43d5dc0cbff4c65a0da0b4fee6a5cee6d..c2ffaba3e88e406be8d8b2820d40366b975f403b 100644
--- a/apps/routerconsole/jsp/profiles.jsp
+++ b/apps/routerconsole/jsp/profiles.jsp
@@ -10,7 +10,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("I2P Network Peer Profiles")%></h1>
+<h1><%=intl._t("I2P Network Peer Profiles")%></h1>
 <div class="main" id="main"><div class="wideload">
  <jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
  <jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
diff --git a/apps/routerconsole/jsp/stats.jsp b/apps/routerconsole/jsp/stats.jsp
index cf87ed3838cfb25c04aa15e8cca269d90b86a503..ac53608e2b983ea0f003b34fd3efbf772f145df9 100644
--- a/apps/routerconsole/jsp/stats.jsp
+++ b/apps/routerconsole/jsp/stats.jsp
@@ -14,7 +14,7 @@
 <jsp:setProperty name="oldhelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 <% oldhelper.storeWriter(out); %>
 <jsp:setProperty name="oldhelper" property="full" value="<%=request.getParameter(\"f\")%>" />
- <h1><%=intl._("I2P Router Statistics")%></h1>
+ <h1><%=intl._t("I2P Router Statistics")%></h1>
 <div class="main" id="main">
  <jsp:getProperty name="oldhelper" property="stats" />
 <hr></div></body></html>
diff --git a/apps/routerconsole/jsp/summary.jsi b/apps/routerconsole/jsp/summary.jsi
index d9f62f247d1be21eed240185e17a1818246d7c8c..9768d95854af17276da754bfc36df832876eb215 100644
--- a/apps/routerconsole/jsp/summary.jsi
+++ b/apps/routerconsole/jsp/summary.jsi
@@ -42,7 +42,7 @@
     } else {
         // Text browsers don't render the two divs side-by-side, so just provide a link
         out.print("<a href=\"/summaryframe\">");
-        out.print(intl._("Summary Bar"));
+        out.print(intl._t("Summary Bar"));
         out.print("</a>");
     }
 
@@ -55,11 +55,11 @@
         out.print("<noscript><div class=\"refresh\"><form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n" +
                   "<b>");
         // We have intl defined when this is included, but not when compiled standalone.
-        out.print(intl._("Refresh (s)"));
+        out.print(intl._t("Refresh (s)"));
         out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n" +
                   "<button type=\"submit\" value=\"Enable\" >");
         // ditto
-        out.print(intl._("Enable"));
+        out.print(intl._t("Enable"));
         out.print("</button>\n" +
                   "</form></div></noscript></div>\n");
     } else {
diff --git a/apps/routerconsole/jsp/summaryajax.jsi b/apps/routerconsole/jsp/summaryajax.jsi
index ebd1020c788d373de3e0c5c9920a2545d910f97a..13abfce245478c0c7f8c64cdb4904bcfeb14fad1 100644
--- a/apps/routerconsole/jsp/summaryajax.jsi
+++ b/apps/routerconsole/jsp/summaryajax.jsi
@@ -1,5 +1,5 @@
 <script type="text/javascript">
-  var failMessage = "<hr><b><%=intl._("Router is down")%><\/b>";
+  var failMessage = "<hr><b><%=intl._t("Router is down")%><\/b>";
   function requestAjax1() { ajax("/xhr1.jsp?requestURI=<%=request.getRequestURI()%>", "xhr", <%=intl.getRefresh()%>000); }
   function initAjax() { setTimeout(requestAjax1, <%=intl.getRefresh()%>000);  }
 </script>
diff --git a/apps/routerconsole/jsp/summaryframe.jsp b/apps/routerconsole/jsp/summaryframe.jsp
index cb27feab22c2ded2cca777206453d911b1db6d1f..290e370432546418e7562ab43b7ee71c7d576a5c 100644
--- a/apps/routerconsole/jsp/summaryframe.jsp
+++ b/apps/routerconsole/jsp/summaryframe.jsp
@@ -23,7 +23,7 @@
     if (!shutdownSoon) {
         if (d == null || "".equals(d)) {
             // set below
-        } else if (intl.getNonce().equals(conNonceParam)) {
+        } else if (net.i2p.router.web.CSSHelper.getNonce().equals(conNonceParam)) {
             d = net.i2p.data.DataHelper.stripHTML(d);  // XSS
             intl.setRefresh(d);
             intl.setDisableRefresh(d);
@@ -68,10 +68,10 @@
         out.print("<hr>\n<div class=\"refresh\"><form action=\"summaryframe.jsp\" method=\"POST\">\n");
         if (intl.getDisableRefresh()) {
             out.print("<b>");
-            out.print(intl._("Refresh (s)"));
+            out.print(intl._t("Refresh (s)"));
             out.print(":</b> <input size=\"3\" type=\"text\" name=\"refresh\" value=\"60\" >\n");
             out.print("<button type=\"submit\" value=\"Enable\" >");
-            out.print(intl._("Enable"));
+            out.print(intl._t("Enable"));
         } else {
             // this will load in the iframe but subsequent pages will not have the iframe
             out.print("<input type=\"hidden\" name=\"refresh\" value=\"0\" >\n");
@@ -81,7 +81,7 @@
                 refreshMS = 1000 * Long.parseLong(d);
             } catch (NumberFormatException nfe) {}
             String refreshTime = net.i2p.data.DataHelper.formatDuration2(refreshMS);
-            out.print(intl._("Disable {0} Refresh", refreshTime));
+            out.print(intl._t("Disable {0} Refresh", refreshTime));
         }
         out.print("</button></form></div>\n");
     }
diff --git a/apps/routerconsole/jsp/summarynoframe.jsi b/apps/routerconsole/jsp/summarynoframe.jsi
index 6fae7c9016beb24e4050cdb37c6997296ee052fc..69ac9afd0db5664f2f00ac1420b2bffbf7606982 100644
--- a/apps/routerconsole/jsp/summarynoframe.jsi
+++ b/apps/routerconsole/jsp/summarynoframe.jsi
@@ -8,7 +8,7 @@
 %>
   <div style="height: 36px;">
    <a href="/" target="_top">
-    <img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/i2plogo.png" alt="<%=intl._("I2P Router Console")%>" title="<%=intl._("I2P Router Console")%>">
+    <img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/i2plogo.png" alt="<%=intl._t("I2P Router Console")%>" title="<%=intl._t("I2P Router Console")%>">
    </a>
   </div>
   <div id="xhr">
diff --git a/apps/routerconsole/jsp/torrents.jsp b/apps/routerconsole/jsp/torrents.jsp
index 7f4e8fd534d81da042d9dc7ae37d6758908ca364..7ac23775c51b11c1d858780e9255002a8d094ae8 100644
--- a/apps/routerconsole/jsp/torrents.jsp
+++ b/apps/routerconsole/jsp/torrents.jsp
@@ -30,11 +30,11 @@
 
 <%@include file="summary.jsi" %>
 
-<h1><%=intl._("I2P Torrent Downloader")%> <span class="newtab"><a href="/i2psnark/" target="_blank" title="<%=intl._("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
+<h1><%=intl._t("I2P Torrent Downloader")%> <span class="newtab"><a href="/i2psnark/" target="_blank" title="<%=intl._t("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
 <div class="main" id="main">
 <iframe src="/i2psnark/" width="100%" height="100%" frameborder="0" border="0" name="i2psnarkframe" id="i2psnarkframe" onload="setupFrame()" allowtransparency="true">
-<%=intl._("Your browser does not support iFrames.")%>
-&nbsp;<a href="/i2psnark/"><%=intl._("Click here to continue.")%></a>
+<%=intl._t("Your browser does not support iFrames.")%>
+&nbsp;<a href="/i2psnark/"><%=intl._t("Click here to continue.")%></a>
 </iframe>
 </div></body></html>
 <%
diff --git a/apps/routerconsole/jsp/tunnels.jsp b/apps/routerconsole/jsp/tunnels.jsp
index 02b6e471e26422855ae8b7f3c81d031051723061..41f25df0f8f7d8a4d82028ff45ea14ed84d1c108 100644
--- a/apps/routerconsole/jsp/tunnels.jsp
+++ b/apps/routerconsole/jsp/tunnels.jsp
@@ -9,7 +9,7 @@
 <script src="/js/ajax.js" type="text/javascript"></script>
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
-<%@include file="summary.jsi" %><h1><%=intl._("I2P Tunnel Summary")%></h1>
+<%@include file="summary.jsi" %><h1><%=intl._t("I2P Tunnel Summary")%></h1>
 <div class="main" id="main">
  <jsp:useBean class="net.i2p.router.web.TunnelHelper" id="tunnelHelper" scope="request" />
  <jsp:setProperty name="tunnelHelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
diff --git a/apps/routerconsole/jsp/viewprofile.jsp b/apps/routerconsole/jsp/viewprofile.jsp
index c353bbaf60eb73a3706eae7db2713c2e31c8f2bd..693d00350124f1ebc7de6276460466c74dd4c41f 100644
--- a/apps/routerconsole/jsp/viewprofile.jsp
+++ b/apps/routerconsole/jsp/viewprofile.jsp
@@ -10,7 +10,7 @@
 <%@include file="summaryajax.jsi" %>
 </head><body onload="initAjax()">
 <%@include file="summary.jsi" %>
-<h1><%=intl._("Peer Profile")%></h1>
+<h1><%=intl._t("Peer Profile")%></h1>
 <div class="main" id="main"><div class="wideload">
 <%
     String peerB64 = request.getParameter("peer");
@@ -24,7 +24,7 @@
 <jsp:setProperty name="stathelper" property="contextId" value="<%=(String)session.getAttribute(\"i2p.contextId\")%>" />
 <jsp:setProperty name="stathelper" property="peer" value="<%=peerB64%>" />
 <% stathelper.storeWriter(out); %>
-<h2><%=intl._("Profile for peer {0}", peerB64)%></h2>
+<h2><%=intl._t("Profile for peer {0}", peerB64)%></h2>
 <pre>
 <jsp:getProperty name="stathelper" property="profile" />
 </pre>
diff --git a/apps/routerconsole/jsp/webmail.jsp b/apps/routerconsole/jsp/webmail.jsp
index f287996c5d469cb2968a5fe8c1f4d38858ae2c18..ad7abe05e1cd31e3cd5767007830dcd146bba62f 100644
--- a/apps/routerconsole/jsp/webmail.jsp
+++ b/apps/routerconsole/jsp/webmail.jsp
@@ -30,11 +30,11 @@
 
 <%@include file="summary.jsi" %>
 
-<h1><%=intl._("I2P Webmail")%> <span class="newtab"><a href="/susimail/susimail" target="_blank" title="<%=intl._("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
+<h1><%=intl._t("I2P Webmail")%> <span class="newtab"><a href="/susimail/susimail" target="_blank" title="<%=intl._t("Open in new tab")%>"><img src="<%=intl.getTheme(request.getHeader("User-Agent"))%>images/newtab.png" /></a></span></h1>
 <div class="main" id="main">
 <iframe src="/susimail/susimail" width="100%" height="100%" frameborder="0" border="0" name="susimailframe" id="susimailframe" onload="setupFrame()" allowtransparency="true">
-<%=intl._("Your browser does not support iFrames.")%>
-&nbsp;<a href="/susimail/susimail"><%=intl._("Click here to continue.")%></a>
+<%=intl._t("Your browser does not support iFrames.")%>
+&nbsp;<a href="/susimail/susimail"><%=intl._t("Click here to continue.")%></a>
 </iframe>
 </div></body></html>
 <%
diff --git a/apps/routerconsole/locale-countries/messages_ca.po b/apps/routerconsole/locale-countries/messages_ca.po
index bd61f6b29c61b8d37f3bf11bba3c92d8a13616a6..d5bdb38cd7ff38a33381301a82299848a8034604 100644
--- a/apps/routerconsole/locale-countries/messages_ca.po
+++ b/apps/routerconsole/locale-countries/messages_ca.po
@@ -8,9 +8,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-02-21 00:08+0000\n"
-"Last-Translator: el_libre como el chaval <el.libre@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Catalan (http://www.transifex.com/projects/p/I2P/language/ca/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -51,6 +51,9 @@ msgstr "Antilles Holandeses "
 msgid "Angola"
 msgstr "Angola "
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antàrtida"
 
@@ -102,6 +105,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benín "
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda "
 
@@ -111,6 +117,9 @@ msgstr "Brunei "
 msgid "Bolivia"
 msgstr "Bolívia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brasil "
 
@@ -138,15 +147,12 @@ msgstr "Canadà "
 msgid "Cocos (Keeling) Islands"
 msgstr "Illes Cocos (Keeling) "
 
-msgid "The Democratic Republic of the Congo"
-msgstr "La República Democràtica del Congo "
+msgid "Congo"
+msgstr "Congo "
 
 msgid "Central African Republic"
 msgstr "República Centreafricana "
 
-msgid "Congo"
-msgstr "Congo "
-
 msgid "Switzerland"
 msgstr "Suïssa "
 
@@ -243,8 +249,8 @@ msgstr "Fiji "
 msgid "Falkland Islands (Malvinas)"
 msgstr "Illes Malvines (Falkland) "
 
-msgid "Federated States of Micronesia"
-msgstr "Els Estats Federats de Micronèsia "
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Illes Fèroe "
@@ -345,8 +351,8 @@ msgstr "Territori Britànic de l'Oceà Índic "
 msgid "Iraq"
 msgstr "Iraq "
 
-msgid "Islamic Republic of Iran"
-msgstr "República Islàmica de l'Iran "
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Islàndia "
@@ -384,8 +390,8 @@ msgstr "Comores "
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts i Nevis "
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "La República Popular Democràtica de Corea "
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "República de Corea "
@@ -429,8 +435,8 @@ msgstr "Luxemburg "
 msgid "Latvia"
 msgstr "Letònia "
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Jamahiriya Àrab Líbia "
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Marroc "
@@ -438,8 +444,8 @@ msgstr "Marroc "
 msgid "Monaco"
 msgstr "Mònaco "
 
-msgid "Republic of Moldova"
-msgstr "República de Moldàvia "
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro "
@@ -453,8 +459,8 @@ msgstr "Madagascar "
 msgid "Marshall Islands"
 msgstr "Illes Marshall "
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "L'Antiga República Iugoslava de Macedònia "
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali "
@@ -465,8 +471,8 @@ msgstr "Myanmar "
 msgid "Mongolia"
 msgstr "Mongòlia "
 
-msgid "Macao"
-msgstr "Macau "
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Illes Mariannes del Nord "
@@ -645,14 +651,20 @@ msgstr "Somàlia "
 msgid "Suriname"
 msgstr "Suriname "
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome i Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador "
 
-msgid "Syrian Arab Republic"
-msgstr "República Àrab Síria "
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swazilàndia "
@@ -702,8 +714,8 @@ msgstr "Tuvalu "
 msgid "Taiwan"
 msgstr "Taiwan "
 
-msgid "United Republic of Tanzania"
-msgstr "República Unida de Tanzània "
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ucraïna "
@@ -723,8 +735,8 @@ msgstr "Uruguai "
 msgid "Uzbekistan"
 msgstr "Uzbekistan "
 
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Seu (Ciutat del Vaticà) "
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent i les Grenadines "
@@ -735,8 +747,8 @@ msgstr "Veneçuela "
 msgid "Virgin Islands"
 msgstr "Illes Verges "
 
-msgid "Viet Nam"
-msgstr "Vietnam "
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu "
diff --git a/apps/routerconsole/locale-countries/messages_da.po b/apps/routerconsole/locale-countries/messages_da.po
index df3829c3f94eff59a026889c3ed9483416d77e60..735f533cbf53414b0b4cb5d797da03e04cde7175 100644
--- a/apps/routerconsole/locale-countries/messages_da.po
+++ b/apps/routerconsole/locale-countries/messages_da.po
@@ -10,9 +10,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2015-05-02 06:35+0000\n"
-"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Danish (http://www.transifex.com/projects/p/I2P/language/da/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -53,6 +53,9 @@ msgstr "Hollandske Antiller"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarktis"
 
@@ -104,6 +107,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -113,6 +119,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brasilien"
 
@@ -140,15 +149,12 @@ msgstr "Canada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Cocosøerne (Keelingøerne)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Den Demokratiske Republik Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Centralafrikanske Republik"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Schweiz"
 
@@ -245,8 +251,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandsøerne (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikronesiens Forenede Stater"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Færøerne"
@@ -347,8 +353,8 @@ msgstr "British Indian Ocean Territory (Chagosøerne)"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Den islamiske republik Iran"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Island"
@@ -386,8 +392,8 @@ msgstr "Comorerne"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts og Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Nordkorea"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Sydkorea"
@@ -431,8 +437,8 @@ msgstr "Luxembourg"
 msgid "Latvia"
 msgstr "Letland"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libyen"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Marokko"
@@ -440,8 +446,8 @@ msgstr "Marokko"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Republikken Moldova"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -455,8 +461,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshalløerne"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Den Tidligere Jugoslaviske Republik Makedonien"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -467,8 +473,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongoliet"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Nordmarianerne"
@@ -647,14 +653,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome og Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Syriske Arabiske Republik"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swaziland"
@@ -704,8 +716,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "den Forenede Republik Tanzania"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukraine"
@@ -725,8 +737,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Usbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Pavestolen (Vatikanstaten)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent og Grenadinerne"
@@ -737,8 +749,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Jomfruøerne"
 
-msgid "Viet Nam"
-msgstr "Vietnam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_de.po b/apps/routerconsole/locale-countries/messages_de.po
index c7a48a67a65a2fb8ccf4c4583aa07c95a04ed796..69141c8af2bdb971a7598a67c64b578b621c578a 100644
--- a/apps/routerconsole/locale-countries/messages_de.po
+++ b/apps/routerconsole/locale-countries/messages_de.po
@@ -9,7 +9,7 @@
 # blabla <blabla@trash-mail.com>, 2014
 # D.A. Loader <>, 2012
 # ducki2p <ducki2p@gmail.com>, 2011
-# Ettore Atalan <atalanttore@googlemail.com>, 2014
+# Ettore Atalan <atalanttore@googlemail.com>, 2014-2015
 # foo <foo@bar>, 2009
 # mixxy, 2011
 # nextloop <ga25day@mytum.de>, 2013
@@ -19,8 +19,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-09-19 15:50+0000\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-21 22:27+0000\n"
 "Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
 "Language-Team: German (http://www.transifex.com/projects/p/I2P/language/de/)\n"
 "MIME-Version: 1.0\n"
@@ -62,6 +62,9 @@ msgstr "Niederländische Antillen"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Asien/Pazifikraum"
+
 msgid "Antarctica"
 msgstr "Antarktis"
 
@@ -113,6 +116,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Saint Barthélemy"
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -122,6 +128,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Bolivien"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brasilien"
 
@@ -149,15 +158,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kokos- oder Keelinginseln"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Demokratische Republik Kongo"
+msgid "Congo"
+msgstr "Republik Kongo"
 
 msgid "Central African Republic"
 msgstr "Zentralafrikanische Republik"
 
-msgid "Congo"
-msgstr "Republik Kongo"
-
 msgid "Switzerland"
 msgstr "Schweiz"
 
@@ -254,8 +260,8 @@ msgstr "Fidschi"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandinseln (Malwinen)"
 
-msgid "Federated States of Micronesia"
-msgstr "Föderierte Staaten von Mikronesien"
+msgid "Micronesia"
+msgstr "Mikronesien"
 
 msgid "Faroe Islands"
 msgstr "Färöer"
@@ -356,7 +362,7 @@ msgstr "Britisches Territorium im Indischen Ozean"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
+msgid "Iran"
 msgstr "Iran"
 
 msgid "Iceland"
@@ -395,7 +401,7 @@ msgstr "Komoren"
 msgid "Saint Kitts and Nevis"
 msgstr "St. Kitts und Nevis"
 
-msgid "The Democratic People's Republic of Korea"
+msgid "North Korea"
 msgstr "Nordkorea"
 
 msgid "Republic of Korea"
@@ -440,7 +446,7 @@ msgstr "Luxenburg"
 msgid "Latvia"
 msgstr "Lettland"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Libyen"
 
 msgid "Morocco"
@@ -449,8 +455,8 @@ msgstr "Marokko"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Republik Moldau (Moldawien)"
+msgid "Moldova"
+msgstr "Moldawien"
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -464,8 +470,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshallinseln"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Die ehemalige jugoslawische Republik Mazedonien"
+msgid "Macedonia"
+msgstr "Mazedonien"
 
 msgid "Mali"
 msgstr "Mali"
@@ -476,8 +482,8 @@ msgstr "Myanmar (Burma)"
 msgid "Mongolia"
 msgstr "Mongolei"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr "Macau"
 
 msgid "Northern Mariana Islands"
 msgstr "Nördliche Marianen-Inseln"
@@ -656,14 +662,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr "Südsudan"
+
 msgid "Sao Tome and Principe"
 msgstr "São Tomé und Príncipe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Syrische Arabische Republik"
+msgid "Sint Maarten"
+msgstr "Sint Maarten"
+
+msgid "Syria"
+msgstr "Syrien"
 
 msgid "Swaziland"
 msgstr "Swasiland"
@@ -713,8 +725,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Vereinigte Republik Tansania"
+msgid "Tanzania"
+msgstr "Tansania"
 
 msgid "Ukraine"
 msgstr "Ukraine"
@@ -734,8 +746,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Usbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikanstadt"
+msgid "Vatican"
+msgstr "Vatikan"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "St. Vincent und die Grenadinen"
@@ -746,7 +758,7 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "US-Jungferninseln"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Vietnam"
 
 msgid "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_el.po b/apps/routerconsole/locale-countries/messages_el.po
index 9b0c2bc7aa6a5225a1adaa3cfb97b3aacf32b1ab..ba53ec6b87edd8cf649d0390d091b1e77ffec64a 100644
--- a/apps/routerconsole/locale-countries/messages_el.po
+++ b/apps/routerconsole/locale-countries/messages_el.po
@@ -2,24 +2,24 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
-# Alex  <hestia@riseup.net>, 2012.
-#   <hestia@riseup.net>, 2012.
-#   <lixtetrax@grhack.net>, 2012.
+# Alex <hestia@riseup.net>, 2012
+# Alex <hestia@riseup.net>, 2012
+# lixtetrax <lixtetrax@grhack.net>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2012-08-06 06:39+0000\n"
-"Last-Translator: Alex <hestia@riseup.net>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Greek (http://www.transifex.com/projects/p/I2P/language/el/)\n"
-"Language: el\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"Language: el\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Anonymous Proxy"
 msgstr "Ανώνυμος Proxy"
@@ -54,6 +54,9 @@ msgstr "Ολλανδικές Αντίλλες"
 msgid "Angola"
 msgstr "Ανγκόλα"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Ανταρκτική"
 
@@ -105,6 +108,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Βερμούδες"
 
@@ -114,6 +120,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Βολιβία"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Βραζιλία"
 
@@ -141,15 +150,12 @@ msgstr "Καναδάς"
 msgid "Cocos (Keeling) Islands"
 msgstr "Νησιά Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Δημοκρατία του Κονγκό"
+msgid "Congo"
+msgstr "Κογκό"
 
 msgid "Central African Republic"
 msgstr "Δημοκρατία της Κεντρικής Αφρικής"
 
-msgid "Congo"
-msgstr "Κογκό"
-
 msgid "Switzerland"
 msgstr "Ελβετία"
 
@@ -246,8 +252,8 @@ msgstr "Νήσοι Φίτζι"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Νησιά Μαλβίδων"
 
-msgid "Federated States of Micronesia"
-msgstr "Ομοσπονδία Μικρονησίας"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Faroe Islands"
@@ -348,8 +354,8 @@ msgstr "Βρεταννικές Περιοχές Ινδικού Ωκεανού"
 msgid "Iraq"
 msgstr "Ιράκ"
 
-msgid "Islamic Republic of Iran"
-msgstr "Ισλαμική Δημοκρατία του Ιράν"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Ισλανδία"
@@ -387,8 +393,8 @@ msgstr "Κομόρος"
 msgid "Saint Kitts and Nevis"
 msgstr "Αγιος Κιτς και Νεβί"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Λαϊκή Δημοκρατία της Κορέας"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Δημοκρατία της Κορέας"
@@ -432,8 +438,8 @@ msgstr "Λουξεμβούργο"
 msgid "Latvia"
 msgstr "Λιθουανία"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libyan Arab Jamahiriya"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Μαρόκο"
@@ -441,8 +447,8 @@ msgstr "Μαρόκο"
 msgid "Monaco"
 msgstr "Μονακό"
 
-msgid "Republic of Moldova"
-msgstr "Δημοκρατία της Μολδαβίας"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Μαυροβούνιο"
@@ -456,8 +462,8 @@ msgstr "Μαγαδασκάρη"
 msgid "Marshall Islands"
 msgstr "Νησιά Μάρσαλ"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Γιουγκοσλαβική Δημοκρατια της Μακεδονίας"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Μάλι"
@@ -468,8 +474,8 @@ msgstr "Μιανμάρ"
 msgid "Mongolia"
 msgstr "Μογγολία"
 
-msgid "Macao"
-msgstr "Μακάο"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Northern Mariana Islands"
@@ -648,14 +654,20 @@ msgstr "Σομαλία"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome και Principe"
 
 msgid "El Salvador"
 msgstr "Ελ Σαλβαδόρ"
 
-msgid "Syrian Arab Republic"
-msgstr "Συρία"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Σουαζιλάνδη"
@@ -705,8 +717,8 @@ msgstr "Τούβαλου"
 msgid "Taiwan"
 msgstr "Ταϊβάν"
 
-msgid "United Republic of Tanzania"
-msgstr "Τανζανία"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ουκρανία"
@@ -726,8 +738,8 @@ msgstr "Ουρουγουάη"
 msgid "Uzbekistan"
 msgstr "Ουζμπεκιστάν"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Vatican City State)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent and the Grenadines"
@@ -738,8 +750,8 @@ msgstr "Βενεζουέλα"
 msgid "Virgin Islands"
 msgstr "Παρθένοι Νήσοι"
 
-msgid "Viet Nam"
-msgstr "Βιετνάμ"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
@@ -764,4 +776,3 @@ msgstr "Ζάμπια"
 
 msgid "Zimbabwe"
 msgstr "Ζιμπάμπουε"
-
diff --git a/apps/routerconsole/locale-countries/messages_en.po b/apps/routerconsole/locale-countries/messages_en.po
index 0b3ecd27924bfdb0bff249a21e5a66324b16a4b6..5267c8ba4b4b2b48eae5db5669f39d976de4813e 100644
--- a/apps/routerconsole/locale-countries/messages_en.po
+++ b/apps/routerconsole/locale-countries/messages_en.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P routerconsole\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
+"POT-Creation-Date: 2015-07-17 01:33+0000\n"
 "PO-Revision-Date: 2010-06-15 14:09+0100\n"
 "Last-Translator: duck <duck@mail.i2p>\n"
 "Language-Team: duck <duck@mail.i2p>\n"
@@ -51,6 +51,9 @@ msgstr ""
 msgid "Angola"
 msgstr ""
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr ""
 
@@ -102,6 +105,9 @@ msgstr ""
 msgid "Benin"
 msgstr ""
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr ""
 
@@ -111,6 +117,9 @@ msgstr ""
 msgid "Bolivia"
 msgstr ""
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr ""
 
@@ -138,15 +147,12 @@ msgstr ""
 msgid "Cocos (Keeling) Islands"
 msgstr ""
 
-msgid "The Democratic Republic of the Congo"
+msgid "Congo"
 msgstr ""
 
 msgid "Central African Republic"
 msgstr ""
 
-msgid "Congo"
-msgstr ""
-
 msgid "Switzerland"
 msgstr ""
 
@@ -243,7 +249,7 @@ msgstr ""
 msgid "Falkland Islands (Malvinas)"
 msgstr ""
 
-msgid "Federated States of Micronesia"
+msgid "Micronesia"
 msgstr ""
 
 msgid "Faroe Islands"
@@ -345,7 +351,7 @@ msgstr ""
 msgid "Iraq"
 msgstr ""
 
-msgid "Islamic Republic of Iran"
+msgid "Iran"
 msgstr ""
 
 msgid "Iceland"
@@ -384,7 +390,7 @@ msgstr ""
 msgid "Saint Kitts and Nevis"
 msgstr ""
 
-msgid "The Democratic People's Republic of Korea"
+msgid "North Korea"
 msgstr ""
 
 msgid "Republic of Korea"
@@ -429,7 +435,7 @@ msgstr ""
 msgid "Latvia"
 msgstr ""
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr ""
 
 msgid "Morocco"
@@ -438,7 +444,7 @@ msgstr ""
 msgid "Monaco"
 msgstr ""
 
-msgid "Republic of Moldova"
+msgid "Moldova"
 msgstr ""
 
 msgid "Montenegro"
@@ -453,7 +459,7 @@ msgstr ""
 msgid "Marshall Islands"
 msgstr ""
 
-msgid "The Former Yugoslav Republic of Macedonia"
+msgid "Macedonia"
 msgstr ""
 
 msgid "Mali"
@@ -465,7 +471,7 @@ msgstr ""
 msgid "Mongolia"
 msgstr ""
 
-msgid "Macao"
+msgid "Macau"
 msgstr ""
 
 msgid "Northern Mariana Islands"
@@ -645,13 +651,19 @@ msgstr ""
 msgid "Suriname"
 msgstr ""
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr ""
 
 msgid "El Salvador"
 msgstr ""
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
 msgstr ""
 
 msgid "Swaziland"
@@ -702,7 +714,7 @@ msgstr ""
 msgid "Taiwan"
 msgstr ""
 
-msgid "United Republic of Tanzania"
+msgid "Tanzania"
 msgstr ""
 
 msgid "Ukraine"
@@ -723,7 +735,7 @@ msgstr ""
 msgid "Uzbekistan"
 msgstr ""
 
-msgid "Holy See (Vatican City State)"
+msgid "Vatican"
 msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
@@ -735,7 +747,7 @@ msgstr ""
 msgid "Virgin Islands"
 msgstr ""
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr ""
 
 msgid "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_es.po b/apps/routerconsole/locale-countries/messages_es.po
index d6a6d7bce33e11012e44a453ed5ba8aaeb7b348a..5f9e24342de224c6771f2d8fae1534f221a37669 100644
--- a/apps/routerconsole/locale-countries/messages_es.po
+++ b/apps/routerconsole/locale-countries/messages_es.po
@@ -2,31 +2,29 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
 # "blabla", 2011
-# blabla <blabla@trash-mail.com>, 2011, 2012
-# Daniel Mustieles <daniel.mustieles@gmail.com>, 2012-2013
+# blabla <blabla@trash-mail.com>, 2011-2012
 # ducki2p <ducki2p@gmail.com>, 2011
 # foo <foo@bar>, 2009
 # mixxy, 2011
-# punkibastardo <punkibastardo@gmail.com>, 2011, 2012
-# punkibastardo <punkibastardo@gmail.com>, 2011
+# punkibastardo <punkibastardo@gmail.com>, 2011-2012
 # strel, 2013
+# strel, 2015
 # trolly, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2013-09-21 14:16+0000\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 02:05+0000\n"
 "Last-Translator: strel\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/"
-"es/)\n"
-"Language: es\n"
+"Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Anonymous Proxy"
@@ -62,6 +60,9 @@ msgstr "Antillas Holandesas"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Región Asia/Pacífico"
+
 msgid "Antarctica"
 msgstr "La Antártida"
 
@@ -113,6 +114,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "San Bartolomé"
+
 msgid "Bermuda"
 msgstr "Bermudas"
 
@@ -122,6 +126,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brasil"
 
@@ -149,15 +156,12 @@ msgstr "Canadá"
 msgid "Cocos (Keeling) Islands"
 msgstr "Islas Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "República Democrática del Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "República Centroafricana"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Suiza"
 
@@ -254,8 +258,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Islas Malvinas"
 
-msgid "Federated States of Micronesia"
-msgstr "Estados Federados de Micronesia"
+msgid "Micronesia"
+msgstr "Micronesia"
 
 msgid "Faroe Islands"
 msgstr "Islas Feroe"
@@ -356,8 +360,8 @@ msgstr "Territorio británico del océano Índico"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "República Islámica de Irán"
+msgid "Iran"
+msgstr "Irán"
 
 msgid "Iceland"
 msgstr "Islandia"
@@ -395,8 +399,8 @@ msgstr "Comoras"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts y Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "La República Popular Democrática de Corea"
+msgid "North Korea"
+msgstr "Corea del Norte"
 
 msgid "Republic of Korea"
 msgstr "República de Corea"
@@ -440,7 +444,7 @@ msgstr "Luxemburgo"
 msgid "Latvia"
 msgstr "Letonia"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Libia"
 
 msgid "Morocco"
@@ -449,8 +453,8 @@ msgstr "Marruecos"
 msgid "Monaco"
 msgstr "Mónaco"
 
-msgid "Republic of Moldova"
-msgstr "República de Moldavia"
+msgid "Moldova"
+msgstr "Moldavia"
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -464,8 +468,8 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Las Islas Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "La Antigua República Yugoslava de Macedonia"
+msgid "Macedonia"
+msgstr "Macedonia"
 
 msgid "Mali"
 msgstr "Malí"
@@ -476,7 +480,7 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "Macao"
 
 msgid "Northern Mariana Islands"
@@ -656,13 +660,19 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr "Sudán del Sur"
+
 msgid "Sao Tome and Principe"
 msgstr "Santo Tomé y Príncipe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "Sint Maarten"
+
+msgid "Syria"
 msgstr "Siria"
 
 msgid "Swaziland"
@@ -713,8 +723,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwán"
 
-msgid "United Republic of Tanzania"
-msgstr "Tanzanía"
+msgid "Tanzania"
+msgstr "Tanzania"
 
 msgid "Ukraine"
 msgstr "Ucrania"
@@ -734,8 +744,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Uzbekistán"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sede (Ciudad del Vaticano)"
+msgid "Vatican"
+msgstr "Ciudad del Vaticano"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "San Vicente y las Granadinas"
@@ -746,7 +756,7 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Islas Vírgenes"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Vietnam"
 
 msgid "Vanuatu"
@@ -772,4 +782,3 @@ msgstr "Zambia"
 
 msgid "Zimbabwe"
 msgstr "Zimbabwe"
-
diff --git a/apps/routerconsole/locale-countries/messages_et.po b/apps/routerconsole/locale-countries/messages_et.po
index af69370722cbbcb4cfb1075695a1f1198ba487f1..fe84f4a27dadfa62e6f5df46342e28f1badd1272 100644
--- a/apps/routerconsole/locale-countries/messages_et.po
+++ b/apps/routerconsole/locale-countries/messages_et.po
@@ -10,9 +10,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-11-25 12:39+0000\n"
-"Last-Translator: Marie Nepeta <hellomynameiscatbug@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/I2P/language/et_EE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -53,6 +53,9 @@ msgstr "Hollandi Antillid"
 msgid "Angola"
 msgstr "Angoola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarktika"
 
@@ -104,6 +107,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuuda"
 
@@ -113,6 +119,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Boliivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brasiilia"
 
@@ -140,15 +149,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kookosesaared"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Kongo Demokraatlik Vabariik"
+msgid "Congo"
+msgstr "Kongo"
 
 msgid "Central African Republic"
 msgstr "Kesk-Aafrika Vabariik"
 
-msgid "Congo"
-msgstr "Kongo"
-
 msgid "Switzerland"
 msgstr "Å veits"
 
@@ -245,8 +251,8 @@ msgstr "Fidži"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandi saared (Malviinid)"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikroneesia"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Fääri saared"
@@ -347,8 +353,8 @@ msgstr "Briti India Ookeani Territoorium"
 msgid "Iraq"
 msgstr "Iraak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Iraani Islamivabariik"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Island"
@@ -386,8 +392,8 @@ msgstr "Comoros"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts ja Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Korea Demokraatlik Rahvavabariik"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Korea Vabariik"
@@ -431,8 +437,8 @@ msgstr "Luksemburg"
 msgid "Latvia"
 msgstr "Läti"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Liibüa"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Maroko"
@@ -440,8 +446,8 @@ msgstr "Maroko"
 msgid "Monaco"
 msgstr "Monako"
 
-msgid "Republic of Moldova"
-msgstr "Moldova Vabariik"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -455,8 +461,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshall'i saared"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Endine Jugoslaavia Vabariik Makedoonia"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -467,8 +473,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongoolia"
 
-msgid "Macao"
-msgstr "Makao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Põhja-Mariaani saared"
@@ -647,14 +653,20 @@ msgstr "Somaalia"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome ja Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Süüria Araabia Vabariik"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swaasimaa"
@@ -704,8 +716,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Tansaania Ãœhendatud Vabariik"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukraina"
@@ -725,8 +737,8 @@ msgstr "Uruguai"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Püha Linn (Vatikani linnriik)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent ja Grenadiinid"
@@ -737,8 +749,8 @@ msgstr "Venetsueela"
 msgid "Virgin Islands"
 msgstr "Neitsisaared"
 
-msgid "Viet Nam"
-msgstr "Vietnam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_fi.po b/apps/routerconsole/locale-countries/messages_fi.po
index d085b43fd53202f9e3acb749e6711d9086742fce..4886a01397dfd346d8beb076a6bbdb62d4c7aa80 100644
--- a/apps/routerconsole/locale-countries/messages_fi.po
+++ b/apps/routerconsole/locale-countries/messages_fi.po
@@ -11,9 +11,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-08-02 20:11+0000\n"
-"Last-Translator: oselotti\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Finnish (http://www.transifex.com/projects/p/I2P/language/fi/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -54,6 +54,9 @@ msgstr "Alankomaiden Antillit"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Etelämanner"
 
@@ -105,6 +108,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -114,6 +120,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brasilia"
 
@@ -141,15 +150,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kookossaaret"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Kongon demokraattinen tasavalta"
+msgid "Congo"
+msgstr "Kongon tasavalta"
 
 msgid "Central African Republic"
 msgstr "Keski-Afrikan tasavalta"
 
-msgid "Congo"
-msgstr "Kongon tasavalta"
-
 msgid "Switzerland"
 msgstr "Sveitsi"
 
@@ -246,8 +252,8 @@ msgstr "Fidži"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandinsaaret"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikronesian liittovaltio"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Färsaaret"
@@ -348,8 +354,8 @@ msgstr "Brittiläinen Intian valtameren alue"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Iranin islamilainen tasavalta"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Islanti"
@@ -387,8 +393,8 @@ msgstr "Komorit"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts ja Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Korean demokraattinen kansantasavalta"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Etelä-Korea"
@@ -432,8 +438,8 @@ msgstr "Luxemburg"
 msgid "Latvia"
 msgstr "Latvia"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libya"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Marokko"
@@ -441,8 +447,8 @@ msgstr "Marokko"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Moldova"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -456,8 +462,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshallinsaaret"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Makedonia"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -468,8 +474,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Pohjois-Mariaanit"
@@ -648,14 +654,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "São Tomé ja Príncipe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Syyria"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swazimaa"
@@ -705,8 +717,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Tansania"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukraina"
@@ -726,8 +738,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikaani"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent ja Grenadiinit"
@@ -738,8 +750,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Neitsytsaaret"
 
-msgid "Viet Nam"
-msgstr "Vietnam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_fr.po b/apps/routerconsole/locale-countries/messages_fr.po
index cb65ab6592a36fce5bb3d073810efb48755b0111..e46dcc18fdd2af65831bd679edf6fd28a5adc032 100644
--- a/apps/routerconsole/locale-countries/messages_fr.po
+++ b/apps/routerconsole/locale-countries/messages_fr.po
@@ -2,33 +2,28 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
 # aylham <aylham@gmail.com>, 2011
-# aylham <aylham@gmail.com>, 2011
 # Boxoa590, 2012-2013
 # ducki2p <ducki2p@gmail.com>, 2011
 # fo0 <foonikens@gmail.com>, 2011
 # foo <foo@bar>, 2009
-# fo0 <foonikens@gmail.com>, 2011
-# jackjack <root@waka.site40.net>, 2011
-# Boxoa590, 2013
-# Boxoa590, 2012
 # jackjack <root@waka.site40.net>, 2011
 # Towatowa441, 2013
+# Towinet, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:34+0000\n"
-"PO-Revision-Date: 2013-09-21 17:14+0000\n"
-"Last-Translator: Towatowa441\n"
-"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/"
-"fr/)\n"
-"Language: fr\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-22 09:13+0000\n"
+"Last-Translator: Towinet\n"
+"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 msgid "Anonymous Proxy"
@@ -64,6 +59,9 @@ msgstr "Antilles néerlandaises"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Région Asie/Pacifique"
+
 msgid "Antarctica"
 msgstr "Antarctique"
 
@@ -115,6 +113,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Saint Barthélemy"
+
 msgid "Bermuda"
 msgstr "Bermudes"
 
@@ -124,6 +125,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolivie"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brésil"
 
@@ -151,15 +155,12 @@ msgstr "Canada"
 msgid "Cocos (Keeling) Islands"
 msgstr "ÃŽles Cocos"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "République démocratique du Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "République centre africaine"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Suisse"
 
@@ -256,7 +257,7 @@ msgstr "Fidji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Malouines"
 
-msgid "Federated States of Micronesia"
+msgid "Micronesia"
 msgstr "Micronésie"
 
 msgid "Faroe Islands"
@@ -358,7 +359,7 @@ msgstr "Territoire britannique de l'océan Indien"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
+msgid "Iran"
 msgstr "Iran"
 
 msgid "Iceland"
@@ -397,8 +398,8 @@ msgstr "Comores"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint-Christophe-et-Niévès"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "République populaire démocratique de Corée"
+msgid "North Korea"
+msgstr "Corée du nord"
 
 msgid "Republic of Korea"
 msgstr "Corée"
@@ -442,8 +443,8 @@ msgstr "Luxembourg"
 msgid "Latvia"
 msgstr "Lettonie"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libye"
+msgid "Libya"
+msgstr "Lybie"
 
 msgid "Morocco"
 msgstr "Maroc"
@@ -451,7 +452,7 @@ msgstr "Maroc"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
+msgid "Moldova"
 msgstr "Moldavie"
 
 msgid "Montenegro"
@@ -466,8 +467,8 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Macédoine"
+msgid "Macedonia"
+msgstr "Macédonie"
 
 msgid "Mali"
 msgstr "Mali"
@@ -478,8 +479,8 @@ msgstr "Birmanie"
 msgid "Mongolia"
 msgstr "Mongolie"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr "Macau"
 
 msgid "Northern Mariana Islands"
 msgstr "Mariannes"
@@ -658,13 +659,19 @@ msgstr "Somalie"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr "Soudan du Sud"
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome e Principe"
 
 msgid "El Salvador"
 msgstr "Salvador"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "Saint-Martin"
+
+msgid "Syria"
 msgstr "Syrie"
 
 msgid "Swaziland"
@@ -715,7 +722,7 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
+msgid "Tanzania"
 msgstr "Tanzanie"
 
 msgid "Ukraine"
@@ -736,7 +743,7 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Ouzbékistan"
 
-msgid "Holy See (Vatican City State)"
+msgid "Vatican"
 msgstr "Vatican"
 
 msgid "Saint Vincent and the Grenadines"
@@ -748,8 +755,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Ïles Vierges"
 
-msgid "Viet Nam"
-msgstr "Viêt Nam"
+msgid "Vietnam"
+msgstr "Vietnam"
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
@@ -774,4 +781,3 @@ msgstr "Zambie"
 
 msgid "Zimbabwe"
 msgstr "Zimbabwe"
-
diff --git a/apps/routerconsole/locale-countries/messages_hu.po b/apps/routerconsole/locale-countries/messages_hu.po
index 61be520b9ff27f689f76fe17353b9702812dec15..79ca6297bdbb1f5b4bdf6e5be8802b4ae1e3816f 100644
--- a/apps/routerconsole/locale-countries/messages_hu.po
+++ b/apps/routerconsole/locale-countries/messages_hu.po
@@ -2,22 +2,22 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
-#   <mihalymokus76@gmail.com>, 2013.
+# omgitsadalek <mihalymokus76@gmail.com>, 2013
+# benewfy <benewfy@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:34+0000\n"
-"PO-Revision-Date: 2013-01-03 12:35+0000\n"
-"Last-Translator: omgitsadalek <mihalymokus76@gmail.com>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/I2P/language/"
-"hu/)\n"
-"Language: hu\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"Language-Team: Hungarian (http://www.transifex.com/projects/p/I2P/language/hu/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: hu\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Anonymous Proxy"
@@ -53,6 +53,9 @@ msgstr "Holland Antillák"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarktika"
 
@@ -104,6 +107,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -113,6 +119,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolívia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brazília"
 
@@ -140,15 +149,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kókusz (Keeling)-szigetek"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Kongói Demokratikus Köztársaság"
+msgid "Congo"
+msgstr "Kongó"
 
 msgid "Central African Republic"
 msgstr "Közép-afrikai Köztársaság"
 
-msgid "Congo"
-msgstr "Kongó"
-
 msgid "Switzerland"
 msgstr "Svájc"
 
@@ -183,7 +189,7 @@ msgid "Cape Verde"
 msgstr "Zöld-foki Köztársaság"
 
 msgid "Curaçao"
-msgstr ""
+msgstr "Curacao"
 
 msgid "Christmas Island"
 msgstr "Karácsony-sziget"
@@ -245,8 +251,8 @@ msgstr "Fidzsi-szigetek"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falkland-szigetek"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikronéziai Szövetségi Államok"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Faroe-szigetek"
@@ -347,8 +353,8 @@ msgstr "Brit Indiai-óceáni Terület"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Irán"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Izland"
@@ -386,8 +392,8 @@ msgstr "Comoros"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts és Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Észak-Korea"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Dél-Korea"
@@ -431,8 +437,8 @@ msgstr "Luxemburg"
 msgid "Latvia"
 msgstr "Lettország"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Líbia"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Marokkó"
@@ -440,8 +446,8 @@ msgstr "Marokkó"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Moldova"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegró"
@@ -455,8 +461,8 @@ msgstr "Madagaszkár"
 msgid "Marshall Islands"
 msgstr "Marshall-szigetek"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Macedónia"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -467,8 +473,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongólia"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Északi-Mariana-szigetek"
@@ -647,14 +653,20 @@ msgstr "Szomália"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome és Principe"
 
 msgid "El Salvador"
 msgstr "Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Szíria"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Szváziföld"
@@ -704,8 +716,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Tanzánia"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukrajna"
@@ -725,8 +737,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Üzbegisztán"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikán"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent és Grenadine-szigetek"
@@ -737,8 +749,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Virgin-szigetek"
 
-msgid "Viet Nam"
-msgstr "Vietnam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
@@ -763,4 +775,3 @@ msgstr "Zambia"
 
 msgid "Zimbabwe"
 msgstr "Zimbabwe"
-
diff --git a/apps/routerconsole/locale-countries/messages_it.po b/apps/routerconsole/locale-countries/messages_it.po
index c3a2f61bb3d681f0bdb04ffb5672a5df125af195..c4f58c3790fbdd6277b687b0670feafb3887de56 100644
--- a/apps/routerconsole/locale-countries/messages_it.po
+++ b/apps/routerconsole/locale-countries/messages_it.po
@@ -2,29 +2,28 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
-# BadCluster <badcluster@i2pmail.org>, 2012
+# Bad Cluster <badcluster@i2pmail.org>, 2012
 # Leelium <bovas85@gmail.com>, 2012
 #   <colomboi2p@ymail.com>, 2012
-# fletcherlynd <fletcherlynd@hotmail.com>, 2013
+# Fletcher Lynd <fletcherlynd@hotmail.com>, 2013
 # ironbishop <ironbishop@fsfe.org>, 2011
 # mkkid <jokjok@hotmail.it>, 2011
 # danimoth <kronat@tiscali.it>, 2011
-# Tony Goodyear <fswitch20@hotmail.com>, 2012
+# spawned76 <fswitch20@hotmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 22:58+0000\n"
-"PO-Revision-Date: 2013-11-02 23:22+0000\n"
-"Last-Translator: fletcherlynd <fletcherlynd@hotmail.com>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/"
-"it/)\n"
-"Language: it\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/it/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Anonymous Proxy"
@@ -60,6 +59,9 @@ msgstr "Antille Olandesi"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antartide"
 
@@ -111,6 +113,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Repubblica del Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -120,6 +125,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brasile"
 
@@ -147,15 +155,12 @@ msgstr "Canada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Isole Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Repubblica Democratica del Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Repubblica Centrafricana"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Svizzera"
 
@@ -252,8 +257,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Isole Falkland (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Stati federati di Micronesia"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Isole Faroe"
@@ -354,8 +359,8 @@ msgstr "Territori Britannici dell'oceano Indiano"
 msgid "Iraq"
 msgstr "Iraq"
 
-msgid "Islamic Republic of Iran"
-msgstr "Repubblica Islamica dell'Iran"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Islanda"
@@ -393,8 +398,8 @@ msgstr "Comore"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts e Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Repubblica Democratica di Korea"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Repubblica di Corea"
@@ -438,8 +443,8 @@ msgstr "Lussemburgo"
 msgid "Latvia"
 msgstr "Lettonia"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Jamahiriya araba libica"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Marocco"
@@ -447,8 +452,8 @@ msgstr "Marocco"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Repubblica di Moldova"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -462,8 +467,8 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Isole Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "L'ex Repubblica iugoslava di Macedonia"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -474,8 +479,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Isole Marianne Settentrionali"
@@ -654,14 +659,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome e Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Repubblica araba siriana"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swaziland"
@@ -711,8 +722,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Repubblica Unita della Tanzania"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ucraina"
@@ -732,8 +743,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sede (Stato della Città del Vaticano)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent e Grenadine"
@@ -744,8 +755,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Isole Vergini"
 
-msgid "Viet Nam"
-msgstr "Viet Nam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_ja.po b/apps/routerconsole/locale-countries/messages_ja.po
index 36f76e5461061e38024e0db739b9f29735aa91ee..3fc00733371ec05b88b2893c48d6a5e0b26894f6 100644
--- a/apps/routerconsole/locale-countries/messages_ja.po
+++ b/apps/routerconsole/locale-countries/messages_ja.po
@@ -4,14 +4,14 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# plazmism <gomidori@live.jp>, 2013-2014
+# タカハシ <gomidori@live.jp>, 2013-2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-02-05 11:54+0000\n"
-"Last-Translator: plazmism <gomidori@live.jp>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -52,6 +52,9 @@ msgstr "オランダ領アンティル諸島"
 msgid "Angola"
 msgstr "アンゴラ"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "南極"
 
@@ -103,6 +106,9 @@ msgstr "ブルンジ"
 msgid "Benin"
 msgstr "ベナン"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "バミューダ"
 
@@ -112,6 +118,9 @@ msgstr "ブルネイ・ダルサラーム"
 msgid "Bolivia"
 msgstr "ボリビア"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "ブラジル"
 
@@ -139,15 +148,12 @@ msgstr "カナダ"
 msgid "Cocos (Keeling) Islands"
 msgstr "ココス(キーリング)諸島"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "コンゴ民主共和国"
+msgid "Congo"
+msgstr "コンゴ"
 
 msgid "Central African Republic"
 msgstr "中央アフリカ共和国"
 
-msgid "Congo"
-msgstr "コンゴ"
-
 msgid "Switzerland"
 msgstr "スイス"
 
@@ -244,8 +250,8 @@ msgstr "フィジー"
 msgid "Falkland Islands (Malvinas)"
 msgstr "フォークランド諸島 (マルビナス)"
 
-msgid "Federated States of Micronesia"
-msgstr "ミクロネシア連邦"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "フェロー諸島"
@@ -346,8 +352,8 @@ msgstr "イギリス領インド洋地域"
 msgid "Iraq"
 msgstr "イラク"
 
-msgid "Islamic Republic of Iran"
-msgstr "イラン・イスラム共和国"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "アイスランド"
@@ -385,8 +391,8 @@ msgstr "コモロ"
 msgid "Saint Kitts and Nevis"
 msgstr "セントクリストファー・ネイビス"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "朝鮮民主主義人民共和国"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "大韓民国"
@@ -430,8 +436,8 @@ msgstr "ルクセンブルク"
 msgid "Latvia"
 msgstr "ラトビア"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "リビア"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "モロッコ"
@@ -439,8 +445,8 @@ msgstr "モロッコ"
 msgid "Monaco"
 msgstr "モナコ"
 
-msgid "Republic of Moldova"
-msgstr "モルダビア共和国"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "モンテネグロ"
@@ -454,8 +460,8 @@ msgstr "マダガスカル"
 msgid "Marshall Islands"
 msgstr "マーシャル諸島"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "マケドニア・旧ユーゴスラビア共和国"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "マリ"
@@ -466,8 +472,8 @@ msgstr "ミャンマー"
 msgid "Mongolia"
 msgstr "モンゴル"
 
-msgid "Macao"
-msgstr "マカオ"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "北マリアナ諸島連邦"
@@ -646,14 +652,20 @@ msgstr "ソマリア"
 msgid "Suriname"
 msgstr "スリナム"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "サントメ・プリンシペ"
 
 msgid "El Salvador"
 msgstr "エルサルバドル"
 
-msgid "Syrian Arab Republic"
-msgstr "シリア・アラブ共和国"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "スワジランド"
@@ -703,8 +715,8 @@ msgstr "ツバル"
 msgid "Taiwan"
 msgstr "台湾"
 
-msgid "United Republic of Tanzania"
-msgstr "タンザニア連合共和国"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "ウクライナ"
@@ -724,8 +736,8 @@ msgstr "ウルグアイ"
 msgid "Uzbekistan"
 msgstr "ウズベキスタン"
 
-msgid "Holy See (Vatican City State)"
-msgstr "教皇庁 (ヴァチカン市国)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "セントビンセントおよびグレナディーン諸島"
@@ -736,8 +748,8 @@ msgstr "ベネズエラ"
 msgid "Virgin Islands"
 msgstr "バージン諸島"
 
-msgid "Viet Nam"
-msgstr "ベトナム"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "バヌアツ"
diff --git a/apps/routerconsole/locale-countries/messages_mg.po b/apps/routerconsole/locale-countries/messages_mg.po
index ce383e3f717f2fa75435dddd727c0807695e5455..bf5800abdbdc6f6393ff5394174698df6e7421db 100644
--- a/apps/routerconsole/locale-countries/messages_mg.po
+++ b/apps/routerconsole/locale-countries/messages_mg.po
@@ -2,22 +2,21 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
 # topdog101 <topdog101@free.fr>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-03-30 19:59+0000\n"
-"PO-Revision-Date: 2014-02-20 15:52+0000\n"
-"Last-Translator: topdog101 <topdog101@free.fr>\n"
-"Language-Team: Malagasy (http://www.transifex.com/projects/p/I2P/language/"
-"mg/)\n"
-"Language: mg\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"Language-Team: Malagasy (http://www.transifex.com/projects/p/I2P/language/mg/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: mg\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 msgid "Anonymous Proxy"
@@ -53,6 +52,9 @@ msgstr "Antilles Holandiana"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Faitra Atsimo indrindra"
 
@@ -104,6 +106,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermudes"
 
@@ -113,6 +118,9 @@ msgstr "Brunei Daresalam"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Firenena Braziliana"
 
@@ -140,15 +148,12 @@ msgstr "Firenena kanadiana"
 msgid "Cocos (Keeling) Islands"
 msgstr "Nosy Cocos(Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Repoblika Demokratikan'i Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Repoblikan'i Afrika Afovoany"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Soisy"
 
@@ -245,8 +250,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Nosy Falkland (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Firenena Federaly an'i Mikronesia"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Nosy Faroe"
@@ -347,8 +352,8 @@ msgstr "Tany Anglisy ety amin'ny Ranomasina Indiana"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Repoblika Islamika an'i Iran"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Iceland"
@@ -386,8 +391,8 @@ msgstr "Kaomoro"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts sy Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Repoblika Demokratika entim'bahoakan'i Korea"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Repoblikan'i Korea"
@@ -431,8 +436,8 @@ msgstr "Luxembourg"
 msgid "Latvia"
 msgstr "Latvia"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Jamahiriya Libiana"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Firenena Marokana"
@@ -440,8 +445,8 @@ msgstr "Firenena Marokana"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Repoblikan'i Moldova "
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -455,8 +460,8 @@ msgstr "Madagasikara"
 msgid "Marshall Islands"
 msgstr "Nosy Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Repoblikan'i Masedonia"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -467,8 +472,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Nosy Mariana Avaratra"
@@ -647,14 +652,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome sy Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Repoblika Arabo Syriana"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swaziland"
@@ -704,8 +715,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Repoblika Mitambatr'i Tanzania"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Firenena Okrainiana"
@@ -725,8 +736,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Ozbekistana"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Tany masina (Vatikana)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent sy ny Grenadines"
@@ -737,8 +748,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Nosy Virgin"
 
-msgid "Viet Nam"
-msgstr "Firenena Vietnamiana"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_nb.po b/apps/routerconsole/locale-countries/messages_nb.po
index 2e5f3f377ac2d5213efe25cf16e8582ac7b1a6f1..a7de1cebc90e3a5fd35309085cd9d8a8aadd2373 100644
--- a/apps/routerconsole/locale-countries/messages_nb.po
+++ b/apps/routerconsole/locale-countries/messages_nb.po
@@ -4,15 +4,15 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# Allan Nordhøy <comradekingu@gmail.com>, 2014
+# Allan Nordhøy <epost@anotheragency.no>, 2014
 # Mikal <mikalv@mikalv.net>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-06-24 22:44+0000\n"
-"Last-Translator: Allan Nordhøy <comradekingu@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/I2P/language/nb/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -53,6 +53,9 @@ msgstr "Netherlands Antilles"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarctica"
 
@@ -104,6 +107,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -113,6 +119,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brazil"
 
@@ -140,15 +149,12 @@ msgstr "Canada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kokos (Keeling) -øyene"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Den demokratiske republikken Kongo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Den sentralafrikanske republikk"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Switzerland"
 
@@ -245,8 +251,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falkland Islands (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Federated States of Micronesia"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Faroe Islands"
@@ -347,8 +353,8 @@ msgstr "British Indian Ocean Territory"
 msgid "Iraq"
 msgstr "Iraq"
 
-msgid "Islamic Republic of Iran"
-msgstr "Iran"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Island"
@@ -386,8 +392,8 @@ msgstr "Comoros"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts og Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Nord-Korea"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Korea"
@@ -431,8 +437,8 @@ msgstr "Luxembourg"
 msgid "Latvia"
 msgstr "Latvia"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libyan Arab Jamahiriya"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Morocco"
@@ -440,8 +446,8 @@ msgstr "Morocco"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Republic of Moldova"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -455,8 +461,8 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Marshall Islands"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "The Former Yugoslav Republic of Macedonia"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -467,8 +473,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Nord-Marianene"
@@ -647,14 +653,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome og Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Swaziland"
@@ -704,8 +716,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "United Republic of Tanzania"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukraina"
@@ -725,8 +737,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Vatican City State)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent and the Grenadines"
@@ -737,8 +749,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Virgin Islands"
 
-msgid "Viet Nam"
-msgstr "Viet Nam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_nl.po b/apps/routerconsole/locale-countries/messages_nl.po
index 5a15f2b407dc050ace36c93964642248b36adb5f..123f5d63bc91ae4611e728b203857e37b7c605f9 100644
--- a/apps/routerconsole/locale-countries/messages_nl.po
+++ b/apps/routerconsole/locale-countries/messages_nl.po
@@ -9,14 +9,15 @@
 # foo <foo@bar>, 2009
 # Jrnr601 <jerobben@gmail.com>, 2012
 # Desirius <martinjefmeyers@gmail.com>, 2014
+# Nathan Follens, 2015
 # attesor <random901@zoho.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-07-02 12:22+0000\n"
-"Last-Translator: Desirius <martinjefmeyers@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-25 16:54+0000\n"
+"Last-Translator: Nathan Follens\n"
 "Language-Team: Dutch (http://www.transifex.com/projects/p/I2P/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -57,6 +58,9 @@ msgstr "Nederlandse Antillen"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarctica"
 
@@ -108,6 +112,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Sint-Bartholomeus"
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -117,6 +124,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brazilië"
 
@@ -144,15 +154,12 @@ msgstr "Canada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Cocoseilanden (Keelingeilanden)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Congo, Democratische Republiek"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Centraal-Afrikaanse Republiek"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Zwitserland"
 
@@ -249,8 +256,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandeilanden"
 
-msgid "Federated States of Micronesia"
-msgstr "Federale Staten van Micronesia"
+msgid "Micronesia"
+msgstr "Micronesië"
 
 msgid "Faroe Islands"
 msgstr "Faeröer"
@@ -351,8 +358,8 @@ msgstr "Brits Territorium in de Indische Oceaan"
 msgid "Iraq"
 msgstr "Iraq"
 
-msgid "Islamic Republic of Iran"
-msgstr "Islamitische Republiek Iran"
+msgid "Iran"
+msgstr "Iran"
 
 msgid "Iceland"
 msgstr "IJsland"
@@ -390,8 +397,8 @@ msgstr "Comoren"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts en Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "De Democratische Volksrepubliek Korea"
+msgid "North Korea"
+msgstr "Noord-Korea"
 
 msgid "Republic of Korea"
 msgstr "Republiek Korea"
@@ -435,7 +442,7 @@ msgstr "Luxemburg"
 msgid "Latvia"
 msgstr "Letland"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Libië"
 
 msgid "Morocco"
@@ -444,8 +451,8 @@ msgstr "Marokko"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Republiek Moldavië"
+msgid "Moldova"
+msgstr "Moldavië"
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -459,8 +466,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshalleilanden"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Voormalige Joegoslavische Republiek Macedonië"
+msgid "Macedonia"
+msgstr "Macedonië"
 
 msgid "Mali"
 msgstr "Mali"
@@ -471,7 +478,7 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolië"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "Macau"
 
 msgid "Northern Mariana Islands"
@@ -651,13 +658,19 @@ msgstr "Somalië"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr "Zuid-Soedan"
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tomé en Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "Sint Maarten"
+
+msgid "Syria"
 msgstr "Syrië"
 
 msgid "Swaziland"
@@ -708,8 +721,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Verenigde Republiek Tanzania"
+msgid "Tanzania"
+msgstr "Tanzanië"
 
 msgid "Ukraine"
 msgstr "Oekraïne"
@@ -729,7 +742,7 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Oezbekistan"
 
-msgid "Holy See (Vatican City State)"
+msgid "Vatican"
 msgstr "Vaticaanstad"
 
 msgid "Saint Vincent and the Grenadines"
@@ -741,8 +754,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Virgin-eilanden"
 
-msgid "Viet Nam"
-msgstr "Viet Nam"
+msgid "Vietnam"
+msgstr "Vietnam"
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_pl.po b/apps/routerconsole/locale-countries/messages_pl.po
index 0680cc86e807e1d2dd6fcee75976cafd246152ba..f8a1f59f8ace5f52beaf5d6e1700a6b8936ce8a9 100644
--- a/apps/routerconsole/locale-countries/messages_pl.po
+++ b/apps/routerconsole/locale-countries/messages_pl.po
@@ -9,15 +9,16 @@
 # polacco <polacco@i2pmail.org>, 2014
 # polacco <polacco@i2pmail.org>, 2012
 # PolishAnon <b790979@klzlk.com>, 2011
+# Taporpo Ne <taporpone@gmail.com>, 2015
 # Tracerneo <ziolkoneo@gmail.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-11-23 20:42+0000\n"
-"Last-Translator: polacco <polacco@i2pmail.org>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-08-30 16:58+0000\n"
+"Last-Translator: Taporpo Ne <taporpone@gmail.com>\n"
+"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -57,6 +58,9 @@ msgstr "Antyle Holenderskie"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Azja Pacyficzna"
+
 msgid "Antarctica"
 msgstr "Antarktyda"
 
@@ -108,6 +112,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Saint Barthélemy"
+
 msgid "Bermuda"
 msgstr "Bermudy"
 
@@ -117,6 +124,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Boliwia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brazylia"
 
@@ -144,15 +154,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Wyspy Kokosowe"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Demokratyczna Republika Konga"
+msgid "Congo"
+msgstr "Kongo"
 
 msgid "Central African Republic"
 msgstr "Republika Środkowoafrykańska"
 
-msgid "Congo"
-msgstr "Kongo"
-
 msgid "Switzerland"
 msgstr "Szwajcaria"
 
@@ -249,7 +256,7 @@ msgstr "Fidżi"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandy (Malwiny)"
 
-msgid "Federated States of Micronesia"
+msgid "Micronesia"
 msgstr "Mikronezja"
 
 msgid "Faroe Islands"
@@ -351,7 +358,7 @@ msgstr "Brytyjskie Terytorium Oceanu Indyjskiego"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
+msgid "Iran"
 msgstr "Iran"
 
 msgid "Iceland"
@@ -390,7 +397,7 @@ msgstr "Komory"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts i Nevis"
 
-msgid "The Democratic People's Republic of Korea"
+msgid "North Korea"
 msgstr "Korea Północna"
 
 msgid "Republic of Korea"
@@ -435,7 +442,7 @@ msgstr "Luksemburg"
 msgid "Latvia"
 msgstr "Łotwa"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Libia"
 
 msgid "Morocco"
@@ -444,7 +451,7 @@ msgstr "Maroko"
 msgid "Monaco"
 msgstr "Monako"
 
-msgid "Republic of Moldova"
+msgid "Moldova"
 msgstr "Mołdawia"
 
 msgid "Montenegro"
@@ -459,7 +466,7 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Wyspy Marshalla"
 
-msgid "The Former Yugoslav Republic of Macedonia"
+msgid "Macedonia"
 msgstr "Macedonia"
 
 msgid "Mali"
@@ -471,7 +478,7 @@ msgstr "Mjanma"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "Makao"
 
 msgid "Northern Mariana Islands"
@@ -651,13 +658,19 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr "Południowy Sudan"
+
 msgid "Sao Tome and Principe"
 msgstr "Wyspy Świętego Tomasza i Książęca"
 
 msgid "El Salvador"
 msgstr "Salwador"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "Sint Maarten"
+
+msgid "Syria"
 msgstr "Syria"
 
 msgid "Swaziland"
@@ -708,7 +721,7 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Republika Chińska"
 
-msgid "United Republic of Tanzania"
+msgid "Tanzania"
 msgstr "Tanzania"
 
 msgid "Ukraine"
@@ -729,7 +742,7 @@ msgstr "Urugwaj"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
+msgid "Vatican"
 msgstr "Watykan"
 
 msgid "Saint Vincent and the Grenadines"
@@ -741,7 +754,7 @@ msgstr "Wenezuela"
 msgid "Virgin Islands"
 msgstr "Wyspy Dziewicze"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Wietnam"
 
 msgid "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_pt.po b/apps/routerconsole/locale-countries/messages_pt.po
index 2a89b0f60836bc4e7dbe2cf402ba9a584253e08c..ab95eb0ec645315b99d8b43ed0356642bd0d475f 100644
--- a/apps/routerconsole/locale-countries/messages_pt.po
+++ b/apps/routerconsole/locale-countries/messages_pt.po
@@ -6,6 +6,7 @@
 # Translators:
 # alfalb.as, 2015
 # hxdcmls, 2013
+# wtfisthis <low_fps11@yahoo.com>, 2015
 # rafaelbf, 2013
 # Ruthein Alex <rutweiller@hotmail.com>, 2012
 # tuliouel, 2013
@@ -14,10 +15,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2015-03-02 15:19+0000\n"
-"Last-Translator: alfalb.as\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/pt/)\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-30 11:57+0000\n"
+"Last-Translator: wtfisthis <low_fps11@yahoo.com>\n"
+"Language-Team: Portuguese (http://www.transifex.com/otf/I2P/language/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -57,6 +58,9 @@ msgstr "Antilhas Holandesas"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Ásia/Região do Pacifico"
+
 msgid "Antarctica"
 msgstr "Antártica"
 
@@ -108,6 +112,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Coletividade de São Bartolomeu"
+
 msgid "Bermuda"
 msgstr "Bermudas"
 
@@ -117,6 +124,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Bolívia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brasil"
 
@@ -144,15 +154,12 @@ msgstr "Canadá"
 msgid "Cocos (Keeling) Islands"
 msgstr "Ilhas Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "A Republica Democrata do Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Republica Central Africana"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Suíça"
 
@@ -249,8 +256,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Ilhas Falkland (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Estados Federados da Micronésia"
+msgid "Micronesia"
+msgstr "Micronésia"
 
 msgid "Faroe Islands"
 msgstr "Ilhas Faroe"
@@ -351,8 +358,8 @@ msgstr "Território Oceânico Indiano Britânico"
 msgid "Iraq"
 msgstr "Iraque"
 
-msgid "Islamic Republic of Iran"
-msgstr "Republica Islâmica do Irão"
+msgid "Iran"
+msgstr "Irão"
 
 msgid "Iceland"
 msgstr "Islândia"
@@ -390,8 +397,8 @@ msgstr "Comores"
 msgid "Saint Kitts and Nevis"
 msgstr "São Cristóvão e Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Coreia do Norte"
+msgid "North Korea"
+msgstr "Correia do Norte"
 
 msgid "Republic of Korea"
 msgstr "República da Koreia"
@@ -435,7 +442,7 @@ msgstr "Luxemburgo"
 msgid "Latvia"
 msgstr "Látvia"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Líbia"
 
 msgid "Morocco"
@@ -444,8 +451,8 @@ msgstr "Marrocos"
 msgid "Monaco"
 msgstr "Mónaco"
 
-msgid "Republic of Moldova"
-msgstr "República da Moldávia"
+msgid "Moldova"
+msgstr "Moldávia"
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -459,8 +466,8 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Ilhas Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr " Antiga República Jugoslava da Macedónia"
+msgid "Macedonia"
+msgstr "Macedónia"
 
 msgid "Mali"
 msgstr "Mali"
@@ -471,7 +478,7 @@ msgstr "Mianmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "Macau"
 
 msgid "Northern Mariana Islands"
@@ -651,14 +658,20 @@ msgstr "Somália"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr "Sudão do Sul"
+
 msgid "Sao Tome and Principe"
 msgstr "São Tomé e Princípe"
 
 msgid "El Salvador"
 msgstr "São Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Siria"
+msgid "Sint Maarten"
+msgstr "São Martinho"
+
+msgid "Syria"
+msgstr "Síria"
 
 msgid "Swaziland"
 msgstr "Suazilândia"
@@ -708,8 +721,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "República Unida da Tanzânia"
+msgid "Tanzania"
+msgstr "Tanzânia"
 
 msgid "Ukraine"
 msgstr "Ucrânia"
@@ -729,8 +742,8 @@ msgstr "Uruguaí"
 msgid "Uzbekistan"
 msgstr "Uzbequistão"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sé (Vaticano)"
+msgid "Vatican"
+msgstr "Vaticano"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "São Vicente e Granadinas"
@@ -741,8 +754,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Ilhas Virgens"
 
-msgid "Viet Nam"
-msgstr "Vietnam"
+msgid "Vietnam"
+msgstr "Vietname"
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_pt_BR.po b/apps/routerconsole/locale-countries/messages_pt_BR.po
index 53eb1741f985094b30a16366da05e635e8e1ab4e..63253b149c9a5663868d766c8f6871b3dc55a1f4 100644
--- a/apps/routerconsole/locale-countries/messages_pt_BR.po
+++ b/apps/routerconsole/locale-countries/messages_pt_BR.po
@@ -5,13 +5,14 @@
 # 
 # Translators:
 # blueboy, 2013
+# blueboy, 2015
 # blueboy, 2013-2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-02-13 13:04+0000\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-26 13:36+0000\n"
 "Last-Translator: blueboy\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
@@ -39,7 +40,7 @@ msgid "Antigua and Barbuda"
 msgstr "Antígua e Barbuda"
 
 msgid "Anguilla"
-msgstr "Anguilla"
+msgstr "Anguila"
 
 msgid "Albania"
 msgstr "Albânia"
@@ -53,6 +54,9 @@ msgstr "Antilhas Holandesas"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Ásia/Região do Pacífico"
+
 msgid "Antarctica"
 msgstr "Antártica"
 
@@ -104,6 +108,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benim"
 
+msgid "Saint Barthélemy"
+msgstr "São Bartolomeu"
+
 msgid "Bermuda"
 msgstr "Bermudas"
 
@@ -113,6 +120,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolívia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brasil"
 
@@ -140,15 +150,12 @@ msgstr "Canadá"
 msgid "Cocos (Keeling) Islands"
 msgstr "Ilhas Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "República Democrática do Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "República Centro-Africana"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Suíça"
 
@@ -245,8 +252,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Malvinas (Ilhas Falkland)"
 
-msgid "Federated States of Micronesia"
-msgstr "Estados Federados da Micronésia"
+msgid "Micronesia"
+msgstr "Micronésia"
 
 msgid "Faroe Islands"
 msgstr "Ilhas Faroé"
@@ -347,7 +354,7 @@ msgstr "Território Britânico do Oceano Índico"
 msgid "Iraq"
 msgstr "Iraque"
 
-msgid "Islamic Republic of Iran"
+msgid "Iran"
 msgstr "Irã"
 
 msgid "Iceland"
@@ -386,7 +393,7 @@ msgstr "Comores"
 msgid "Saint Kitts and Nevis"
 msgstr "São Cristóvão e Nevis"
 
-msgid "The Democratic People's Republic of Korea"
+msgid "North Korea"
 msgstr "Coreia do Norte"
 
 msgid "Republic of Korea"
@@ -431,7 +438,7 @@ msgstr "Luxemburgo"
 msgid "Latvia"
 msgstr "Letônia"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Líbia"
 
 msgid "Morocco"
@@ -440,7 +447,7 @@ msgstr "Marrocos"
 msgid "Monaco"
 msgstr "Mônaco"
 
-msgid "Republic of Moldova"
+msgid "Moldova"
 msgstr "Moldávia"
 
 msgid "Montenegro"
@@ -455,7 +462,7 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Ilhas Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
+msgid "Macedonia"
 msgstr "Macedônia"
 
 msgid "Mali"
@@ -467,7 +474,7 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongólia"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "Macau"
 
 msgid "Northern Mariana Islands"
@@ -647,13 +654,19 @@ msgstr "Somália"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr "Sudão do Sul"
+
 msgid "Sao Tome and Principe"
 msgstr "São Tomé e Príncipe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "São Martinho"
+
+msgid "Syria"
 msgstr "Síria"
 
 msgid "Swaziland"
@@ -704,7 +717,7 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
+msgid "Tanzania"
 msgstr "Tanzânia"
 
 msgid "Ukraine"
@@ -725,8 +738,8 @@ msgstr "Uruguai"
 msgid "Uzbekistan"
 msgstr "Uzbequistão"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Santa Sé (Cidade do Vaticano)"
+msgid "Vatican"
+msgstr "Vaticano"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "São Vicente e Granadinas"
@@ -737,7 +750,7 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Ilhas Virgens"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Vietnã"
 
 msgid "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_ro.po b/apps/routerconsole/locale-countries/messages_ro.po
index 8856de04bee16ddd5fd7eebca6c509c9b38953c6..0bb1615682d145ead203bf15b452af6a385fc951 100644
--- a/apps/routerconsole/locale-countries/messages_ro.po
+++ b/apps/routerconsole/locale-countries/messages_ro.po
@@ -2,24 +2,23 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
-# CimpianAlin <Predator@windowslive.com>, 2013
+# CimpianAlin <inactive+CimpianAlin@transifex.com>, 2013
+# titus <titus0818@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:02+0000\n"
-"PO-Revision-Date: 2013-11-06 09:54+0000\n"
-"Last-Translator: polearnik <polearnik@mail.ru>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/I2P/language/"
-"ro/)\n"
-"Language: ro\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-19 20:01+0000\n"
+"Last-Translator: titus <titus0818@gmail.com>\n"
+"Language-Team: Romanian (http://www.transifex.com/projects/p/I2P/language/ro/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
 
 msgid "Anonymous Proxy"
 msgstr "Proxy anonim"
@@ -54,6 +53,9 @@ msgstr "Antilele Olandeze"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Regiunea Asia/Pacific"
+
 msgid "Antarctica"
 msgstr "Antarctica"
 
@@ -105,6 +107,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Saint Barthélemy"
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -114,6 +119,9 @@ msgstr "Brunei Darussalam"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brazilia"
 
@@ -141,15 +149,12 @@ msgstr "Canada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Insulele Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Republica Democrată Congo"
+msgid "Congo"
+msgstr "Congo"
 
 msgid "Central African Republic"
 msgstr "Republica Central Africană"
 
-msgid "Congo"
-msgstr "Congo"
-
 msgid "Switzerland"
 msgstr "Elveția"
 
@@ -246,8 +251,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Insulele Falkland (Malvine)"
 
-msgid "Federated States of Micronesia"
-msgstr "Statele Federate ale Microneziei"
+msgid "Micronesia"
+msgstr "Micronesia"
 
 msgid "Faroe Islands"
 msgstr "Insulele Feroe"
@@ -348,8 +353,8 @@ msgstr "British Indian Ocean Territory"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Republica Islamică Iran"
+msgid "Iran"
+msgstr "Iran"
 
 msgid "Iceland"
 msgstr "Islanda"
@@ -387,8 +392,8 @@ msgstr "Comore"
 msgid "Saint Kitts and Nevis"
 msgstr "Sfântul Kitts și Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Republica Populară Democrată Coreea"
+msgid "North Korea"
+msgstr "Korea de Nord"
 
 msgid "Republic of Korea"
 msgstr "Republica Coreea"
@@ -432,8 +437,8 @@ msgstr "Luxemburg"
 msgid "Latvia"
 msgstr "Letonia"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Jamahiriya Arabă Libiană"
+msgid "Libya"
+msgstr "Libia"
 
 msgid "Morocco"
 msgstr "Maroc"
@@ -441,8 +446,8 @@ msgstr "Maroc"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
-msgstr "Republica Moldova"
+msgid "Moldova"
+msgstr "Moldova"
 
 msgid "Montenegro"
 msgstr "Muntenegru"
@@ -456,8 +461,8 @@ msgstr "Madagascar"
 msgid "Marshall Islands"
 msgstr "Insulele Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Fosta Republică Iugoslavă a Macedoniei"
+msgid "Macedonia"
+msgstr "Macedonia"
 
 msgid "Mali"
 msgstr "Mali"
@@ -468,8 +473,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr "Macau"
 
 msgid "Northern Mariana Islands"
 msgstr "Insulele Mariane de Nord"
@@ -648,14 +653,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Suriname"
 
+msgid "South Sudan"
+msgstr "Sudanul de Sud"
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome și Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Republica Arabă Siriană"
+msgid "Sint Maarten"
+msgstr "Sint Maarten"
+
+msgid "Syria"
+msgstr "Siria"
 
 msgid "Swaziland"
 msgstr "Swaziland"
@@ -705,8 +716,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Republica Unită Tanzania"
+msgid "Tanzania"
+msgstr "Tanzania"
 
 msgid "Ukraine"
 msgstr "Ucraina"
@@ -726,8 +737,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Sfântul Scaun (Cetatea Vaticanului)"
+msgid "Vatican"
+msgstr "Vatican"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Sfântul Vincent și Grenadine"
@@ -738,7 +749,7 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Insulele Virgine"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Vietnam"
 
 msgid "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_ru.po b/apps/routerconsole/locale-countries/messages_ru.po
index af0e8a11faf5c54fb8946146d6276d2110769387..59861c683122b78ebfde33851af5edf147755762 100644
--- a/apps/routerconsole/locale-countries/messages_ru.po
+++ b/apps/routerconsole/locale-countries/messages_ru.po
@@ -2,33 +2,29 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
 # Alexey Solomin <a.rainman@gmail.com>, 2013
-# Андрей Лукьяненко <operru32@yandex.ru>, 2013
-# keedley <zhopa@mita.pp.ru>, 2013
 # ducki2p <ducki2p@gmail.com>, 2011
-# varnav, 2013
 # foo <foo@bar>, 2009
-# gmind, 2013
-# gmind, 2012
-# Roman Azarenko <x12ozmouse@ya.ru>, 2013
-# Roman Azarenko <x12ozmouse@ya.ru>, 2013
+# gmind, 2012-2013
+# dimi <zhopa@mita.pp.ru>, 2013
+# Foster Snowhill, 2013
+# varnav, 2013
+# Andrey Lukyanenko <operru32@yandex.ru>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:34+0000\n"
-"PO-Revision-Date: 2013-09-23 20:40+0000\n"
-"Last-Translator: keedley <zhopa@mita.pp.ru>\n"
-"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/"
-"language/ru_RU/)\n"
-"Language: ru_RU\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru_RU\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
 
 msgid "Anonymous Proxy"
 msgstr "Анонимный прокси"
@@ -63,6 +59,9 @@ msgstr "Нидерландские Антильские острова"
 msgid "Angola"
 msgstr "Ангола"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Антарктида"
 
@@ -114,6 +113,9 @@ msgstr "Бурунди"
 msgid "Benin"
 msgstr "Бенин"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Бермудские Острова"
 
@@ -123,6 +125,9 @@ msgstr "Бруней-Даруссалам"
 msgid "Bolivia"
 msgstr "Боливия"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Бразилия"
 
@@ -150,15 +155,12 @@ msgstr "Канада"
 msgid "Cocos (Keeling) Islands"
 msgstr "Кокосовые (Килинг) острова"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Демократическая Республика Конго"
+msgid "Congo"
+msgstr "Конго"
 
 msgid "Central African Republic"
 msgstr "Центральноафриканская Республика"
 
-msgid "Congo"
-msgstr "Конго"
-
 msgid "Switzerland"
 msgstr "Швейцария"
 
@@ -255,8 +257,8 @@ msgstr "Фиджи"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Фолклендские (Мальвинские) острова"
 
-msgid "Federated States of Micronesia"
-msgstr "Федеративные Штаты Микронезии"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Фарерские острова"
@@ -357,8 +359,8 @@ msgstr "Британская территория в Индийском океа
 msgid "Iraq"
 msgstr "Ирак"
 
-msgid "Islamic Republic of Iran"
-msgstr "Исламская Республика Иран"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Исландия"
@@ -396,8 +398,8 @@ msgstr "Коморские острова"
 msgid "Saint Kitts and Nevis"
 msgstr "Сент-Китс и Невис"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Корейская Народная Демократиеская Республика"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Республика Корея"
@@ -441,8 +443,8 @@ msgstr "Люксембург"
 msgid "Latvia"
 msgstr "Латвия"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Ливийская Арабская Джамахирия"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Марокко"
@@ -450,8 +452,8 @@ msgstr "Марокко"
 msgid "Monaco"
 msgstr "Монако"
 
-msgid "Republic of Moldova"
-msgstr "Республика Молдова"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Черногория"
@@ -465,8 +467,8 @@ msgstr "Мадагаскар"
 msgid "Marshall Islands"
 msgstr "Маршалловы Острова"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Бывшая югославская Республика Македония"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Мали"
@@ -477,8 +479,8 @@ msgstr "Мьянма"
 msgid "Mongolia"
 msgstr "Монголия"
 
-msgid "Macao"
-msgstr "Макао"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Северные Марианские острова"
@@ -657,14 +659,20 @@ msgstr "Сомали"
 msgid "Suriname"
 msgstr "Суринам"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Сан-Томе и Принсипи"
 
 msgid "El Salvador"
 msgstr "Сальвадор"
 
-msgid "Syrian Arab Republic"
-msgstr "Сирийская Арабская Республика"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Свазиленд"
@@ -714,8 +722,8 @@ msgstr "Тувалу"
 msgid "Taiwan"
 msgstr "Тайвань"
 
-msgid "United Republic of Tanzania"
-msgstr "Объединенная Республика Танзания"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Украина"
@@ -735,8 +743,8 @@ msgstr "Уругвай"
 msgid "Uzbekistan"
 msgstr "Узбекистан"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Святой Престол (Ватикан)"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Сент-Винсент и Гренадины"
@@ -747,8 +755,8 @@ msgstr "Венесуэла"
 msgid "Virgin Islands"
 msgstr "Виргинские острова"
 
-msgid "Viet Nam"
-msgstr "Вьетнам"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Вануату"
@@ -773,4 +781,3 @@ msgstr "Замбия"
 
 msgid "Zimbabwe"
 msgstr "Зимбабве"
-
diff --git a/apps/routerconsole/locale-countries/messages_sk.po b/apps/routerconsole/locale-countries/messages_sk.po
index 5d205dd20cd882214d07373e623fb7119c7abdde..131876c96711f0d065ee6cacb8fe63c6adb368b9 100644
--- a/apps/routerconsole/locale-countries/messages_sk.po
+++ b/apps/routerconsole/locale-countries/messages_sk.po
@@ -4,14 +4,14 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# Svistwarrior273 <romanbeno273@gmail.com>, 2014
+# Roman 'Kaktuxista' Benji <romanbeno273@gmail.com>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-04-12 08:54+0000\n"
-"Last-Translator: Svistwarrior273 <romanbeno273@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Slovak (http://www.transifex.com/projects/p/I2P/language/sk/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -52,6 +52,9 @@ msgstr "Holandské Antily"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarktída"
 
@@ -103,6 +106,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermudy"
 
@@ -112,6 +118,9 @@ msgstr "Brunej"
 msgid "Bolivia"
 msgstr "Bolívia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brazília"
 
@@ -139,15 +148,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kokosové ostrovy"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Konžská demokratická republika"
+msgid "Congo"
+msgstr "Kongo"
 
 msgid "Central African Republic"
 msgstr "Stredoafrická republika"
 
-msgid "Congo"
-msgstr "Kongo"
-
 msgid "Switzerland"
 msgstr "Švajčiarsko"
 
@@ -244,8 +250,8 @@ msgstr "Fidži"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandy (Malvíny)"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikronézske federatívne štáty"
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Faerské ostrovy"
@@ -346,8 +352,8 @@ msgstr "Britské indickooceánske územie"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Iránska islamská republika"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Island"
@@ -385,8 +391,8 @@ msgstr "Komory"
 msgid "Saint Kitts and Nevis"
 msgstr "Svätý Krištof a Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Kórejská ľudovodemokratická republika"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Kórejská republika"
@@ -430,8 +436,8 @@ msgstr "Luxembursko"
 msgid "Latvia"
 msgstr "Lotyšsko"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Líbya"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Maroko"
@@ -439,8 +445,8 @@ msgstr "Maroko"
 msgid "Monaco"
 msgstr "Monako"
 
-msgid "Republic of Moldova"
-msgstr "Moldavská republika"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Montenegro"
@@ -454,8 +460,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshallove ostrovy"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Bývalá juhoslovanská republika Macedónsko"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -466,8 +472,8 @@ msgstr "Mjanmarsko"
 msgid "Mongolia"
 msgstr "Mongolsko"
 
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Severné Mariány"
@@ -646,14 +652,20 @@ msgstr "Somálsko"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Svätý Tomáš a Princov ostrov"
 
 msgid "El Salvador"
 msgstr "Salvádor"
 
-msgid "Syrian Arab Republic"
-msgstr "Sýrska arabská republika"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Svazijsko"
@@ -703,8 +715,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Tanzánijská zjednotená republika"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukrajina"
@@ -724,8 +736,8 @@ msgstr "Uruguaj"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Vatikánsky mestský štát"
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Svätý Vincent a Grenadíny"
@@ -736,8 +748,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Panenské ostrovy"
 
-msgid "Viet Nam"
-msgstr "Vietnam"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_sq.po b/apps/routerconsole/locale-countries/messages_sq.po
index 76b13718627b3bde92899f12f6703f4a1a551cf9..9ebfab4ac29e24081331755de43a2121eb74d344 100644
--- a/apps/routerconsole/locale-countries/messages_sq.po
+++ b/apps/routerconsole/locale-countries/messages_sq.po
@@ -9,9 +9,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-08-11 06:06+0000\n"
-"Last-Translator: Shpetim <shpetim@privacysolutions.no>\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Albanian (http://www.transifex.com/projects/p/I2P/language/sq/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -52,6 +52,9 @@ msgstr "Antilet Holandeze"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Antarktida"
 
@@ -103,6 +106,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benini"
 
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -112,6 +118,9 @@ msgstr "Brunei Darusalam"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Brazili"
 
@@ -139,15 +148,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Ishujt Cocos (Keeling)"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Republika Demokratike e Kongos"
+msgid "Congo"
+msgstr "Kongo"
 
 msgid "Central African Republic"
 msgstr "Republika e Afrikës Qëndrore. "
 
-msgid "Congo"
-msgstr "Kongo"
-
 msgid "Switzerland"
 msgstr "Zvicrra"
 
@@ -244,8 +250,8 @@ msgstr "Fixhi"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Ishujt Falkand (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Shtetet Federate të Mikronezisë "
+msgid "Micronesia"
+msgstr ""
 
 msgid "Faroe Islands"
 msgstr "Ishujt Faroe"
@@ -346,8 +352,8 @@ msgstr "Territor oqeanik Indiano-Britanik"
 msgid "Iraq"
 msgstr "Iraku"
 
-msgid "Islamic Republic of Iran"
-msgstr "Republika Islamike e Iranit"
+msgid "Iran"
+msgstr ""
 
 msgid "Iceland"
 msgstr "Islanda"
@@ -385,8 +391,8 @@ msgstr "Komorosi"
 msgid "Saint Kitts and Nevis"
 msgstr "Shenjt Kitts dhe Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Republika Demokratike Popullore e Koresë"
+msgid "North Korea"
+msgstr ""
 
 msgid "Republic of Korea"
 msgstr "Republika e Koresë"
@@ -430,8 +436,8 @@ msgstr "Luksemburgu"
 msgid "Latvia"
 msgstr "Latvia"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Jamahiriya Libiane Arabe"
+msgid "Libya"
+msgstr ""
 
 msgid "Morocco"
 msgstr "Maroko"
@@ -439,8 +445,8 @@ msgstr "Maroko"
 msgid "Monaco"
 msgstr "Monako"
 
-msgid "Republic of Moldova"
-msgstr "Republika e Moldovës"
+msgid "Moldova"
+msgstr ""
 
 msgid "Montenegro"
 msgstr "Mali i Zi"
@@ -454,8 +460,8 @@ msgstr "Madagaskari"
 msgid "Marshall Islands"
 msgstr "Ishujt Marshall"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Ish-Republika Jugosllave e Maqedonisë"
+msgid "Macedonia"
+msgstr ""
 
 msgid "Mali"
 msgstr "Mali"
@@ -466,8 +472,8 @@ msgstr "Myanmari"
 msgid "Mongolia"
 msgstr "Mongolia"
 
-msgid "Macao"
-msgstr "Makao"
+msgid "Macau"
+msgstr ""
 
 msgid "Northern Mariana Islands"
 msgstr "Ishujt Veriorë të Marianëve"
@@ -646,14 +652,20 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Surinami"
 
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome dhe Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Republika Arabe e Sirisë"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
 msgid "Swaziland"
 msgstr "Svaziland"
@@ -703,8 +715,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taivani"
 
-msgid "United Republic of Tanzania"
-msgstr "Republika e Bashkuar e Tanzanisë"
+msgid "Tanzania"
+msgstr ""
 
 msgid "Ukraine"
 msgstr "Ukraina"
@@ -724,8 +736,8 @@ msgstr "Uruguaji"
 msgid "Uzbekistan"
 msgstr "Uzbekistani"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Holy See (Qytetshteti i Vatikanit) "
+msgid "Vatican"
+msgstr ""
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Sankt Vincenti dhe Grenadinet"
@@ -736,8 +748,8 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Ishujt Virgin"
 
-msgid "Viet Nam"
-msgstr "Vietnami"
+msgid "Vietnam"
+msgstr ""
 
 msgid "Vanuatu"
 msgstr "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_sv.po b/apps/routerconsole/locale-countries/messages_sv.po
index 14248b54eb50f17576a90ab1b4f603dfca28df73..faf22af55740dcc1df8fad67d677f0448f32d3d6 100644
--- a/apps/routerconsole/locale-countries/messages_sv.po
+++ b/apps/routerconsole/locale-countries/messages_sv.po
@@ -2,27 +2,24 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
 # 123hund123 <M8R-ra4r1r@mailinator.com>, 2011
-# hottuna <i2p@robertfoss.se>, 2011
-# hottuna <i2p@robertfoss.se>, 2013
-# hottuna <i2p@robertfoss.se>, 2011-2012
-# Martin Svensson <digitalmannen@gmail.com>, 2011-2012
+# cacapo <handelsehorisont@gmail.com>, 2015
+# hottuna <i2p@robertfoss.se>, 2011,2013
 # mon <mattias.ohlsson@inprose.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:34+0000\n"
-"PO-Revision-Date: 2013-09-22 02:56+0000\n"
-"Last-Translator: hottuna <i2p@robertfoss.se>\n"
-"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/"
-"language/sv_SE/)\n"
-"Language: sv_SE\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-19 09:52+0000\n"
+"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
+"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: sv_SE\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Anonymous Proxy"
@@ -58,6 +55,9 @@ msgstr "Nederländska Antillerna"
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Asien-Stillahavsregionen"
+
 msgid "Antarctica"
 msgstr "Antarktis"
 
@@ -109,6 +109,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Saint-Barthélemy"
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -118,6 +121,9 @@ msgstr "Brunei"
 msgid "Bolivia"
 msgstr "Bolivia"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brasilien"
 
@@ -145,15 +151,12 @@ msgstr "Kanada"
 msgid "Cocos (Keeling) Islands"
 msgstr "Kokosöarna"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Demokratiska republiken Kongo"
+msgid "Congo"
+msgstr "Kongo"
 
 msgid "Central African Republic"
 msgstr "Centralafrikanska republiken"
 
-msgid "Congo"
-msgstr "Kongo"
-
 msgid "Switzerland"
 msgstr "Schweiz"
 
@@ -250,8 +253,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falklandsöarna (Malvinas)"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikronesiska federationen"
+msgid "Micronesia"
+msgstr "Mikronesien"
 
 msgid "Faroe Islands"
 msgstr "Färöarna"
@@ -352,8 +355,8 @@ msgstr "Brittiska Indiska Oceanöarna"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Islamiska republiken Iran"
+msgid "Iran"
+msgstr "Iran"
 
 msgid "Iceland"
 msgstr "Island"
@@ -391,8 +394,8 @@ msgstr "Komorerna"
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts och Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Demokratiska folkrepubliken Korea (Nordkorea)"
+msgid "North Korea"
+msgstr "Nordkorea"
 
 msgid "Republic of Korea"
 msgstr "Sydkorea"
@@ -436,7 +439,7 @@ msgstr "Luxemburg"
 msgid "Latvia"
 msgstr "Lettland"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Libyen"
 
 msgid "Morocco"
@@ -445,7 +448,7 @@ msgstr "Marocko"
 msgid "Monaco"
 msgstr "Monaco"
 
-msgid "Republic of Moldova"
+msgid "Moldova"
 msgstr "Moldavien"
 
 msgid "Montenegro"
@@ -460,8 +463,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marshallöarna"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Föredetta jugoslaviska republiken Makedonien"
+msgid "Macedonia"
+msgstr "Makedonien"
 
 msgid "Mali"
 msgstr "Mali"
@@ -472,7 +475,7 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "Mongoliet"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "Macao"
 
 msgid "Northern Mariana Islands"
@@ -652,13 +655,19 @@ msgstr "Somalia"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr "Sydsudan"
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tomé och Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "Sint Maarten"
+
+msgid "Syria"
 msgstr "Syrien"
 
 msgid "Swaziland"
@@ -709,8 +718,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Taiwan"
 
-msgid "United Republic of Tanzania"
-msgstr "Förenade republiken Tanzania"
+msgid "Tanzania"
+msgstr "Tanzania"
 
 msgid "Ukraine"
 msgstr "Ukraina"
@@ -730,8 +739,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Heliga stolen (Vatikanstaten)"
+msgid "Vatican"
+msgstr "Vatikanen"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent och Grenadinerna"
@@ -742,7 +751,7 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Jungfruöarna"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Vietnam"
 
 msgid "Vanuatu"
@@ -768,4 +777,3 @@ msgstr "Zambia"
 
 msgid "Zimbabwe"
 msgstr "Zimbabwe"
-
diff --git a/apps/routerconsole/locale-countries/messages_tr.po b/apps/routerconsole/locale-countries/messages_tr.po
index c5f926f1b231886a83d6742354dc57560cf20056..248b2b5b870e6656ee4d788d2cc32b0901d01d70 100644
--- a/apps/routerconsole/locale-countries/messages_tr.po
+++ b/apps/routerconsole/locale-countries/messages_tr.po
@@ -2,31 +2,30 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
-# Erkin <erkinbatu@gmail.com>, 2013
-# Kaya Zeren <kayazeren@gmail.com>, 2013
-# TR_anslator <kqzwypgi@sharklasers.com>, 2013
+# Erkin Batu AltunbaÅŸ <erkinbatu@gmail.com>, 2013
+# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
+# Trans Lator <kqzwypgi@sharklasers.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:34+0000\n"
-"PO-Revision-Date: 2013-08-09 07:53+0000\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-08-05 13:48+0000\n"
 "Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
-"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/"
-"language/tr_TR/)\n"
-"Language: tr_TR\n"
+"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: tr_TR\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 msgid "Anonymous Proxy"
-msgstr ""
+msgstr "Anonim Vekil Sunucu"
 
 msgid "Satellite Provider"
-msgstr ""
+msgstr "Uydu Hizmeti Sağlayıcısı"
 
 msgid "Andorra"
 msgstr "Andorra"
@@ -50,11 +49,14 @@ msgid "Armenia"
 msgstr "Ermenistan"
 
 msgid "Netherlands Antilles"
-msgstr "Felemenk Antilleri"
+msgstr "Hollanda Antilleri"
 
 msgid "Angola"
 msgstr "Angola"
 
+msgid "Asia/Pacific Region"
+msgstr "Asya/Pasifik Bölgesi"
+
 msgid "Antarctica"
 msgstr "Antarktika"
 
@@ -74,7 +76,7 @@ msgid "Aruba"
 msgstr "Aruba"
 
 msgid "Ã…land Islands"
-msgstr ""
+msgstr "Åland Adaları"
 
 msgid "Azerbaijan"
 msgstr "Azerbaycan"
@@ -106,6 +108,9 @@ msgstr "Burundi"
 msgid "Benin"
 msgstr "Benin"
 
+msgid "Saint Barthélemy"
+msgstr "Aziz Bartelemi"
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
@@ -115,6 +120,9 @@ msgstr "Brunei Darüsselam"
 msgid "Bolivia"
 msgstr "Bolivya"
 
+msgid "Bonaire"
+msgstr "Bonaire"
+
 msgid "Brazil"
 msgstr "Brezilya"
 
@@ -140,17 +148,14 @@ msgid "Canada"
 msgstr "Kanada"
 
 msgid "Cocos (Keeling) Islands"
-msgstr ""
+msgstr "Cocos (Keeling) Adaları"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Kongo Demokratik Cumhuriyeti"
+msgid "Congo"
+msgstr "Kongo"
 
 msgid "Central African Republic"
 msgstr "Orta Afrika Cumhuriyeti"
 
-msgid "Congo"
-msgstr "Kongo"
-
 msgid "Switzerland"
 msgstr "İsviçre"
 
@@ -176,7 +181,7 @@ msgid "Costa Rica"
 msgstr "Kosta Rika"
 
 msgid "Serbia and Montenegro"
-msgstr ""
+msgstr "Sırbistan - Karadağ"
 
 msgid "Cuba"
 msgstr "Küba"
@@ -185,10 +190,10 @@ msgid "Cape Verde"
 msgstr "Yeşil Burun Adaları"
 
 msgid "Curaçao"
-msgstr ""
+msgstr "Curaçao"
 
 msgid "Christmas Island"
-msgstr ""
+msgstr "Christmas Adaları"
 
 msgid "Cyprus"
 msgstr "Kıbrıs"
@@ -224,7 +229,7 @@ msgid "Egypt"
 msgstr "Mısır"
 
 msgid "Western Sahara"
-msgstr ""
+msgstr "Batı Sahra"
 
 msgid "Eritrea"
 msgstr "Eritre"
@@ -236,7 +241,7 @@ msgid "Ethiopia"
 msgstr "Etiyopya"
 
 msgid "European Union"
-msgstr ""
+msgstr "Avrupa BirliÄŸi"
 
 msgid "Finland"
 msgstr "Finlandiya"
@@ -247,8 +252,8 @@ msgstr "Fiji"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Falkland Adaları (Malvinalar)"
 
-msgid "Federated States of Micronesia"
-msgstr "Mikronezya Federe Devletleri"
+msgid "Micronesia"
+msgstr "Mikronezya"
 
 msgid "Faroe Islands"
 msgstr "Faroe Adaları"
@@ -272,7 +277,7 @@ msgid "French Guiana"
 msgstr "Fransız Guyanası"
 
 msgid "Guernsey"
-msgstr ""
+msgstr "Guerney"
 
 msgid "Ghana"
 msgstr "Gana"
@@ -290,7 +295,7 @@ msgid "Guinea"
 msgstr "Gine"
 
 msgid "Guadeloupe"
-msgstr "Guadlup"
+msgstr "Guadalup"
 
 msgid "Equatorial Guinea"
 msgstr "Ekvator Ginesi"
@@ -338,7 +343,7 @@ msgid "Israel"
 msgstr "Ä°srail"
 
 msgid "Isle of Man"
-msgstr ""
+msgstr "Isle of Man Adası"
 
 msgid "India"
 msgstr "Hindistan"
@@ -349,8 +354,8 @@ msgstr "İngiliz Hint Okyanus Bölgesi"
 msgid "Iraq"
 msgstr "Irak"
 
-msgid "Islamic Republic of Iran"
-msgstr "Ä°slami Ä°ran Cumhuriyeti"
+msgid "Iran"
+msgstr "Ä°ran"
 
 msgid "Iceland"
 msgstr "Ä°zlanda"
@@ -359,7 +364,7 @@ msgid "Italy"
 msgstr "Ä°talya"
 
 msgid "Jersey"
-msgstr ""
+msgstr "Cersey"
 
 msgid "Jamaica"
 msgstr "Jamaika"
@@ -388,8 +393,8 @@ msgstr "Komorolar"
 msgid "Saint Kitts and Nevis"
 msgstr "Aziz Kitts ve Nevis"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr ""
+msgid "North Korea"
+msgstr "Kuzey Kore"
 
 msgid "Republic of Korea"
 msgstr "Kore Cumhuriyeti"
@@ -433,8 +438,8 @@ msgstr "Lüksemburg"
 msgid "Latvia"
 msgstr "Letonya"
 
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libya Arap Cumhuriyeti"
+msgid "Libya"
+msgstr "Libya"
 
 msgid "Morocco"
 msgstr "Fas"
@@ -442,14 +447,14 @@ msgstr "Fas"
 msgid "Monaco"
 msgstr "Monako"
 
-msgid "Republic of Moldova"
-msgstr "Moldova Cumhuriyeti"
+msgid "Moldova"
+msgstr "Moldova"
 
 msgid "Montenegro"
-msgstr ""
+msgstr "KaradaÄŸ"
 
 msgid "Saint Martin"
-msgstr ""
+msgstr "Aziz Martin"
 
 msgid "Madagascar"
 msgstr "Madagaskar"
@@ -457,8 +462,8 @@ msgstr "Madagaskar"
 msgid "Marshall Islands"
 msgstr "Marşal Adaları"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Makedonya Eski Yugoslav Cumhuriyeti"
+msgid "Macedonia"
+msgstr "Makedonya"
 
 msgid "Mali"
 msgstr "Mali"
@@ -469,8 +474,8 @@ msgstr "Myanmar"
 msgid "Mongolia"
 msgstr "MoÄŸolistan"
 
-msgid "Macao"
-msgstr "Makao"
+msgid "Macau"
+msgstr "Makau"
 
 msgid "Northern Mariana Islands"
 msgstr "Kuzey Mariyana Adaları"
@@ -482,7 +487,7 @@ msgid "Mauritania"
 msgstr "Moritanya"
 
 msgid "Montserrat"
-msgstr "Montserrat"
+msgstr "Monserat"
 
 msgid "Malta"
 msgstr "Malta"
@@ -524,7 +529,7 @@ msgid "Nicaragua"
 msgstr "Nikaragua"
 
 msgid "Netherlands"
-msgstr "Felemenk"
+msgstr "Hollanda"
 
 msgid "Norway"
 msgstr "Norveç"
@@ -569,7 +574,7 @@ msgid "Saint Pierre and Miquelon"
 msgstr "Aziz Piyer ve Mikelon"
 
 msgid "Pitcairn Islands"
-msgstr ""
+msgstr "Pitcairn Adaları"
 
 msgid "Puerto Rico"
 msgstr "Porto Riko"
@@ -590,7 +595,7 @@ msgid "Qatar"
 msgstr "Katar"
 
 msgid "Réunion"
-msgstr ""
+msgstr "Réunion"
 
 msgid "Romania"
 msgstr "Romanya"
@@ -623,13 +628,13 @@ msgid "Singapore"
 msgstr "Singapur"
 
 msgid "Saint Helena"
-msgstr ""
+msgstr "Aziz Helena"
 
 msgid "Slovenia"
 msgstr "Slovenya"
 
 msgid "Svalbard and Jan Mayen"
-msgstr ""
+msgstr "Svalbard ve Jan Mayen"
 
 msgid "Slovakia"
 msgstr "Slovakya"
@@ -649,14 +654,20 @@ msgstr "Somali"
 msgid "Suriname"
 msgstr "Surinam"
 
+msgid "South Sudan"
+msgstr "Güney Sudan"
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome ve Principe"
 
 msgid "El Salvador"
 msgstr "El Salvador"
 
-msgid "Syrian Arab Republic"
-msgstr "Suriye Arap Cumhuriyeti"
+msgid "Sint Maarten"
+msgstr "Aziz Marten"
+
+msgid "Syria"
+msgstr "Suriye"
 
 msgid "Swaziland"
 msgstr "Svaziland"
@@ -668,7 +679,7 @@ msgid "Chad"
 msgstr "Çad"
 
 msgid "French Southern Territories"
-msgstr "Fransız Güney Bölgeleri"
+msgstr "Güney Fransa Bölgeleri"
 
 msgid "Togo"
 msgstr "Togo"
@@ -706,8 +717,8 @@ msgstr "Tuvalu"
 msgid "Taiwan"
 msgstr "Tayva"
 
-msgid "United Republic of Tanzania"
-msgstr "Tanzanya BirleÅŸik Cumhuriyeti"
+msgid "Tanzania"
+msgstr "Tanzanya"
 
 msgid "Ukraine"
 msgstr "Ukrayna"
@@ -727,8 +738,8 @@ msgstr "Uruguay"
 msgid "Uzbekistan"
 msgstr "Özbekistan"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Kutsal Makam (Vatikan Åžehir Devleti)"
+msgid "Vatican"
+msgstr "Vatikan"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Aziz Vincent ve Granadinler"
@@ -739,7 +750,7 @@ msgstr "Venezuela"
 msgid "Virgin Islands"
 msgstr "Virgin Adaları"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "Vietnam"
 
 msgid "Vanuatu"
@@ -765,4 +776,3 @@ msgstr "Zambiya"
 
 msgid "Zimbabwe"
 msgstr "Zimbabve"
-
diff --git a/apps/routerconsole/locale-countries/messages_uk.po b/apps/routerconsole/locale-countries/messages_uk.po
index 656243e9ee4f63bc5ae36b355336b588deefecda..cc13aa985834433b18871ef7992742ec84484b96 100644
--- a/apps/routerconsole/locale-countries/messages_uk.po
+++ b/apps/routerconsole/locale-countries/messages_uk.po
@@ -4,15 +4,17 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# asteryx <asteryx82@gmail.com>, 2015
 # LinuxChata, 2014
+# Maus <ru-ko@ukr.net>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:33+0000\n"
-"PO-Revision-Date: 2014-07-18 21:09+0000\n"
-"Last-Translator: LinuxChata\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-08-07 16:31+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -52,6 +54,9 @@ msgstr "Нідерландські Антильські острови"
 msgid "Angola"
 msgstr "Ангола"
 
+msgid "Asia/Pacific Region"
+msgstr "Азія / Тихоокеанський регіон"
+
 msgid "Antarctica"
 msgstr "Антарктика"
 
@@ -103,6 +108,9 @@ msgstr "Бурунді"
 msgid "Benin"
 msgstr "Бенін"
 
+msgid "Saint Barthélemy"
+msgstr "сен- Бартельмі"
+
 msgid "Bermuda"
 msgstr "Бермуда"
 
@@ -112,6 +120,9 @@ msgstr "Бруней Даруссалам"
 msgid "Bolivia"
 msgstr "Болівія"
 
+msgid "Bonaire"
+msgstr "Бонайре"
+
 msgid "Brazil"
 msgstr "Бразилія"
 
@@ -139,15 +150,12 @@ msgstr "Канада"
 msgid "Cocos (Keeling) Islands"
 msgstr "Кокосові (Кілінгові) острови"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "Демократична Республіка Конго"
+msgid "Congo"
+msgstr "Конго"
 
 msgid "Central African Republic"
 msgstr "Центральна Африканська Республіка"
 
-msgid "Congo"
-msgstr "Конго"
-
 msgid "Switzerland"
 msgstr "Швейцарія"
 
@@ -244,8 +252,8 @@ msgstr "Фіджі"
 msgid "Falkland Islands (Malvinas)"
 msgstr "Фолклендські острови (Мальвінські)"
 
-msgid "Federated States of Micronesia"
-msgstr "Федеративні Штати Мікронезії"
+msgid "Micronesia"
+msgstr "Мікронезія"
 
 msgid "Faroe Islands"
 msgstr "Фарерські острови"
@@ -346,8 +354,8 @@ msgstr "Британська територія в Індійському оке
 msgid "Iraq"
 msgstr "Ірак"
 
-msgid "Islamic Republic of Iran"
-msgstr "Ісламська Республіка Іран"
+msgid "Iran"
+msgstr "Іран"
 
 msgid "Iceland"
 msgstr "Ісландія"
@@ -385,8 +393,8 @@ msgstr "Комори"
 msgid "Saint Kitts and Nevis"
 msgstr "Федерація Сент-Кіттс і Невіс"
 
-msgid "The Democratic People's Republic of Korea"
-msgstr "Корейська Народно-Демократична Республіка"
+msgid "North Korea"
+msgstr "КНДР"
 
 msgid "Republic of Korea"
 msgstr "Республіка Корея"
@@ -430,7 +438,7 @@ msgstr "Люксембург"
 msgid "Latvia"
 msgstr "Латвія"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "Лівія"
 
 msgid "Morocco"
@@ -439,8 +447,8 @@ msgstr "Марокко"
 msgid "Monaco"
 msgstr "Монако"
 
-msgid "Republic of Moldova"
-msgstr "Республіка Молдова"
+msgid "Moldova"
+msgstr "Молдова"
 
 msgid "Montenegro"
 msgstr "Чорногорія "
@@ -454,7 +462,7 @@ msgstr "Мадагаскар"
 msgid "Marshall Islands"
 msgstr "Маршаллові острови"
 
-msgid "The Former Yugoslav Republic of Macedonia"
+msgid "Macedonia"
 msgstr "Македонія"
 
 msgid "Mali"
@@ -466,8 +474,8 @@ msgstr "М'янма"
 msgid "Mongolia"
 msgstr "Монголія"
 
-msgid "Macao"
-msgstr "Аоминь"
+msgid "Macau"
+msgstr "Аоминь або Макао"
 
 msgid "Northern Mariana Islands"
 msgstr "Північні Маріанські острови"
@@ -646,14 +654,20 @@ msgstr "Сомалі"
 msgid "Suriname"
 msgstr "Сурінам"
 
+msgid "South Sudan"
+msgstr "Південний Судан"
+
 msgid "Sao Tome and Principe"
 msgstr "Сан-Томе і Принсіпі"
 
 msgid "El Salvador"
 msgstr "Ель Сальвадор"
 
-msgid "Syrian Arab Republic"
-msgstr "Сирійська Арабська республіка"
+msgid "Sint Maarten"
+msgstr "Сінт-Мартен"
+
+msgid "Syria"
+msgstr "Сірія"
 
 msgid "Swaziland"
 msgstr "Свазиленд"
@@ -703,8 +717,8 @@ msgstr "Тувалу"
 msgid "Taiwan"
 msgstr "Тайвань"
 
-msgid "United Republic of Tanzania"
-msgstr "Об'єднана Республіка Танзанія"
+msgid "Tanzania"
+msgstr "Танзанія"
 
 msgid "Ukraine"
 msgstr "Україна"
@@ -724,8 +738,8 @@ msgstr "Уругвай"
 msgid "Uzbekistan"
 msgstr "Узбекістан"
 
-msgid "Holy See (Vatican City State)"
-msgstr "Святий Престол (Ватикан)"
+msgid "Vatican"
+msgstr "Ватикан"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "Сент Вінсент і Ґренадіни"
@@ -736,7 +750,7 @@ msgstr "Венесуела"
 msgid "Virgin Islands"
 msgstr "Віргінські острови"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "В'єтнам"
 
 msgid "Vanuatu"
diff --git a/apps/routerconsole/locale-countries/messages_vi.po b/apps/routerconsole/locale-countries/messages_vi.po
index ae321c0758ca301a236d48a465dff4e669b9fefa..cdfae30a0748f1a6e4d339f4d588bde6f9038ed9 100644
--- a/apps/routerconsole/locale-countries/messages_vi.po
+++ b/apps/routerconsole/locale-countries/messages_vi.po
@@ -3,973 +3,774 @@
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
-# dich_tran <tran.nathan@gmail.com>, 2011.
+# Translators:
+# dich_tran <thnhan@gmail.com>, 2011
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
-"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
-"POT-Creation-Date: 2011-06-11 08:22+0000\n"
-"PO-Revision-Date: 2011-06-11 08:42+0000\n"
-"Last-Translator: ducki2p <ducki2p@gmail.com>\n"
-"Language-Team: Vietnamese (http://www.transifex.net/projects/p/I2P/team/vi/)\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"Language-Team: Vietnamese (http://www.transifex.com/projects/p/I2P/language/vi/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
-#. Automatically generated pseudo-java for xgettext - do not edit
-#. Translators may wish to translate a few of these, do not bother to
-#. translate all of them!!
-#: ../java/build/Countries.java:3
 msgid "Anonymous Proxy"
 msgstr ""
 
-#: ../java/build/Countries.java:4
 msgid "Satellite Provider"
 msgstr ""
 
-#: ../java/build/Countries.java:5
 msgid "Andorra"
 msgstr "Andorra"
 
-#: ../java/build/Countries.java:6
 msgid "United Arab Emirates"
 msgstr "United Arab Emirates"
 
-#: ../java/build/Countries.java:7
 msgid "Afghanistan"
 msgstr "Afghanistan"
 
-#: ../java/build/Countries.java:8
 msgid "Antigua and Barbuda"
 msgstr "Antigua và Barbuda"
 
-#: ../java/build/Countries.java:9
 msgid "Anguilla"
 msgstr "Anguilla"
 
-#: ../java/build/Countries.java:10
 msgid "Albania"
 msgstr "Albania"
 
-#: ../java/build/Countries.java:11
 msgid "Armenia"
 msgstr "Armenia"
 
-#: ../java/build/Countries.java:12
 msgid "Netherlands Antilles"
 msgstr "Netherlands Antilles"
 
-#: ../java/build/Countries.java:13
 msgid "Angola"
 msgstr "Angola"
 
-#: ../java/build/Countries.java:14
+msgid "Asia/Pacific Region"
+msgstr ""
+
 msgid "Antarctica"
 msgstr "Nam Cá»±c"
 
-#: ../java/build/Countries.java:15
 msgid "Argentina"
 msgstr "Argentina"
 
-#: ../java/build/Countries.java:16
 msgid "American Samoa"
 msgstr "Samoa thuộc Mỹ"
 
-#: ../java/build/Countries.java:17
 msgid "Austria"
 msgstr "Áo"
 
-#: ../java/build/Countries.java:18
 msgid "Australia"
 msgstr "Úc"
 
-#: ../java/build/Countries.java:19
 msgid "Aruba"
 msgstr "Aruba"
 
-#: ../java/build/Countries.java:20
 msgid "Ã…land Islands"
 msgstr ""
 
-#: ../java/build/Countries.java:21
 msgid "Azerbaijan"
 msgstr "Azerbaijan"
 
-#: ../java/build/Countries.java:22
 msgid "Bosnia and Herzegovina"
 msgstr "Bosnia và Herzegovina"
 
-#: ../java/build/Countries.java:23
 msgid "Barbados"
 msgstr "Barbados"
 
-#: ../java/build/Countries.java:24
 msgid "Bangladesh"
 msgstr "Bangladesh"
 
-#: ../java/build/Countries.java:25
 msgid "Belgium"
 msgstr "Bỉ"
 
-#: ../java/build/Countries.java:26
 msgid "Burkina Faso"
 msgstr "Burkina Faso"
 
-#: ../java/build/Countries.java:27
 msgid "Bulgaria"
 msgstr "Bulgaria"
 
-#: ../java/build/Countries.java:28
 msgid "Bahrain"
 msgstr "Bahrain"
 
-#: ../java/build/Countries.java:29
 msgid "Burundi"
 msgstr "Burundi"
 
-#: ../java/build/Countries.java:30
 msgid "Benin"
 msgstr "Benin"
 
-#: ../java/build/Countries.java:31
+msgid "Saint Barthélemy"
+msgstr ""
+
 msgid "Bermuda"
 msgstr "Bermuda"
 
-#: ../java/build/Countries.java:32
 msgid "Brunei Darussalam"
 msgstr "Brunei Darussalam"
 
-#: ../java/build/Countries.java:33
 msgid "Bolivia"
 msgstr ""
 
-#: ../java/build/Countries.java:34
+msgid "Bonaire"
+msgstr ""
+
 msgid "Brazil"
 msgstr "Ba Tây"
 
-#: ../java/build/Countries.java:35
 msgid "Bahamas"
 msgstr "Bahamas"
 
-#: ../java/build/Countries.java:36
 msgid "Bhutan"
 msgstr "Bhutan"
 
-#: ../java/build/Countries.java:37
 msgid "Bouvet Island"
 msgstr "Bouvet Island"
 
-#: ../java/build/Countries.java:38
 msgid "Botswana"
 msgstr "Botswana"
 
-#: ../java/build/Countries.java:39
 msgid "Belarus"
 msgstr "Belarus"
 
-#: ../java/build/Countries.java:40
 msgid "Belize"
 msgstr "Belize"
 
-#: ../java/build/Countries.java:41
 msgid "Canada"
 msgstr "Canada"
 
-#: ../java/build/Countries.java:42
-msgid "The Democratic Republic of the Congo"
-msgstr "Cộng hòa Dân chủ Congo"
-
-#: ../java/build/Countries.java:43
-msgid "Central African Republic"
-msgstr "Cộng hòa Trung Phi"
+msgid "Cocos (Keeling) Islands"
+msgstr ""
 
-#: ../java/build/Countries.java:44
 msgid "Congo"
 msgstr "Congo"
 
-#: ../java/build/Countries.java:45
+msgid "Central African Republic"
+msgstr "Cộng hòa Trung Phi"
+
 msgid "Switzerland"
 msgstr "Thụy Sĩ"
 
-#: ../java/build/Countries.java:46
 msgid "Cote D'Ivoire"
 msgstr "Cote D'Ivoire"
 
-#: ../java/build/Countries.java:47
 msgid "Cook Islands"
 msgstr "Quần đảo Cook"
 
-#: ../java/build/Countries.java:48
 msgid "Chile"
 msgstr "Chile"
 
-#: ../java/build/Countries.java:49
 msgid "Cameroon"
 msgstr "Cameroon"
 
-#: ../java/build/Countries.java:50
 msgid "China"
 msgstr "Trung Quốc"
 
-#: ../java/build/Countries.java:51
 msgid "Colombia"
 msgstr "Colombia"
 
-#: ../java/build/Countries.java:52
 msgid "Costa Rica"
 msgstr "Costa Rica"
 
-#: ../java/build/Countries.java:53
 msgid "Serbia and Montenegro"
 msgstr "Serbia và Montenegro"
 
-#: ../java/build/Countries.java:54
 msgid "Cuba"
 msgstr "Cuba"
 
-#: ../java/build/Countries.java:55
 msgid "Cape Verde"
 msgstr "Cape Verde"
 
-#: ../java/build/Countries.java:56
+msgid "Curaçao"
+msgstr ""
+
+msgid "Christmas Island"
+msgstr ""
+
 msgid "Cyprus"
 msgstr "Cyprus"
 
-#: ../java/build/Countries.java:57
 msgid "Czech Republic"
 msgstr "Tiệp"
 
-#: ../java/build/Countries.java:58
 msgid "Germany"
 msgstr "Đức"
 
-#: ../java/build/Countries.java:59
 msgid "Djibouti"
 msgstr "Djibouti"
 
-#: ../java/build/Countries.java:60
 msgid "Denmark"
 msgstr "Đan Mạch"
 
-#: ../java/build/Countries.java:61
 msgid "Dominica"
 msgstr "Dominica"
 
-#: ../java/build/Countries.java:62
 msgid "Dominican Republic"
 msgstr "Cộng Hòa Dominican"
 
-#: ../java/build/Countries.java:63
 msgid "Algeria"
 msgstr "Algeria"
 
-#: ../java/build/Countries.java:64
 msgid "Ecuador"
 msgstr "Ecuador"
 
-#: ../java/build/Countries.java:65
 msgid "Estonia"
 msgstr "Estonia"
 
-#: ../java/build/Countries.java:66
 msgid "Egypt"
 msgstr "Ai Cập"
 
-#: ../java/build/Countries.java:67
+msgid "Western Sahara"
+msgstr ""
+
 msgid "Eritrea"
 msgstr "Eritrea"
 
-#: ../java/build/Countries.java:68
 msgid "Spain"
 msgstr "Tây Ban Nha"
 
-#: ../java/build/Countries.java:69
 msgid "Ethiopia"
 msgstr "Ethiopia"
 
-#: ../java/build/Countries.java:70
+msgid "European Union"
+msgstr ""
+
 msgid "Finland"
 msgstr "Phần Lan"
 
-#: ../java/build/Countries.java:71
 msgid "Fiji"
 msgstr "Fiji"
 
-#: ../java/build/Countries.java:72
 msgid "Falkland Islands (Malvinas)"
 msgstr "Quần đảo Falkland (Malvinas)"
 
-#: ../java/build/Countries.java:73
-msgid "Federated States of Micronesia"
-msgstr "Liên bang Micronesia"
+msgid "Micronesia"
+msgstr ""
 
-#: ../java/build/Countries.java:74
 msgid "Faroe Islands"
 msgstr "Quần đảo Faroe"
 
-#: ../java/build/Countries.java:75
 msgid "France"
 msgstr "Pháp"
 
-#: ../java/build/Countries.java:76
 msgid "Gabon"
 msgstr "Gabon"
 
-#: ../java/build/Countries.java:77
 msgid "United Kingdom"
 msgstr "Anh"
 
-#: ../java/build/Countries.java:78
 msgid "Grenada"
 msgstr "Grenada"
 
-#: ../java/build/Countries.java:79
 msgid "Georgia"
 msgstr "Georgia"
 
-#: ../java/build/Countries.java:80
 msgid "French Guiana"
 msgstr "Guiana thuộc Pháp"
 
-#: ../java/build/Countries.java:81
+msgid "Guernsey"
+msgstr ""
+
 msgid "Ghana"
 msgstr "Ghana"
 
-#: ../java/build/Countries.java:82
 msgid "Gibraltar"
 msgstr "Gibraltar"
 
-#: ../java/build/Countries.java:83
 msgid "Greenland"
 msgstr "Greenland"
 
-#: ../java/build/Countries.java:84
 msgid "Gambia"
 msgstr "Gambia"
 
-#: ../java/build/Countries.java:85
 msgid "Guinea"
 msgstr "Guinea"
 
-#: ../java/build/Countries.java:86
 msgid "Guadeloupe"
 msgstr "Guadeloupe"
 
-#: ../java/build/Countries.java:87
 msgid "Equatorial Guinea"
 msgstr "Equatorial Guinea"
 
-#: ../java/build/Countries.java:88
 msgid "Greece"
 msgstr "Hy Lạp"
 
-#: ../java/build/Countries.java:89
 msgid "South Georgia and the South Sandwich Islands"
 msgstr "Quần đảo Nam Georgia và Nam Sandwich"
 
-#: ../java/build/Countries.java:90
 msgid "Guatemala"
 msgstr "Guatemala"
 
-#: ../java/build/Countries.java:91
 msgid "Guam"
 msgstr "Guam"
 
-#: ../java/build/Countries.java:92
 msgid "Guinea-Bissau"
 msgstr "Guinea-Bissau"
 
-#: ../java/build/Countries.java:93
 msgid "Guyana"
 msgstr "Guyana"
 
-#: ../java/build/Countries.java:94
 msgid "Hong Kong"
 msgstr "Hong Kong"
 
-#: ../java/build/Countries.java:95
 msgid "Honduras"
 msgstr "Honduras"
 
-#: ../java/build/Countries.java:96
 msgid "Croatia"
 msgstr "Croatia"
 
-#: ../java/build/Countries.java:97
 msgid "Haiti"
 msgstr "Haiti"
 
-#: ../java/build/Countries.java:98
 msgid "Hungary"
 msgstr "Hungary"
 
-#: ../java/build/Countries.java:99
 msgid "Indonesia"
 msgstr "Indonesia"
 
-#: ../java/build/Countries.java:100
 msgid "Ireland"
 msgstr "Ireland"
 
-#: ../java/build/Countries.java:101
 msgid "Israel"
 msgstr "Do Thái"
 
-#: ../java/build/Countries.java:102
 msgid "Isle of Man"
 msgstr ""
 
-#: ../java/build/Countries.java:103
 msgid "India"
 msgstr "Ấn Độ"
 
-#: ../java/build/Countries.java:104
 msgid "British Indian Ocean Territory"
 msgstr "Lãnh thổ Ấn Độ Dương thuộc Anh"
 
-#: ../java/build/Countries.java:105
 msgid "Iraq"
 msgstr "Iraq"
 
-#: ../java/build/Countries.java:106
-msgid "Islamic Republic of Iran"
-msgstr "Iran"
+msgid "Iran"
+msgstr ""
 
-#: ../java/build/Countries.java:107
 msgid "Iceland"
 msgstr "Iceland"
 
-#: ../java/build/Countries.java:108
 msgid "Italy"
 msgstr "Ý"
 
-#: ../java/build/Countries.java:109
 msgid "Jersey"
 msgstr ""
 
-#: ../java/build/Countries.java:110
 msgid "Jamaica"
 msgstr "Jamaica"
 
-#: ../java/build/Countries.java:111
 msgid "Jordan"
 msgstr "Jordan"
 
-#: ../java/build/Countries.java:112
 msgid "Japan"
 msgstr "Nhật Bản"
 
-#: ../java/build/Countries.java:113
 msgid "Kenya"
 msgstr "Kenya"
 
-#: ../java/build/Countries.java:114
 msgid "Kyrgyzstan"
 msgstr "Kyrgyzstan"
 
-#: ../java/build/Countries.java:115
 msgid "Cambodia"
 msgstr "Campuchia"
 
-#: ../java/build/Countries.java:116
 msgid "Kiribati"
 msgstr "Kiribati"
 
-#: ../java/build/Countries.java:117
 msgid "Comoros"
 msgstr "Comoros"
 
-#: ../java/build/Countries.java:118
 msgid "Saint Kitts and Nevis"
 msgstr "Saint Kitts và Nevis"
 
-#: ../java/build/Countries.java:119
+msgid "North Korea"
+msgstr ""
+
 msgid "Republic of Korea"
 msgstr "Hàn Quốc"
 
-#: ../java/build/Countries.java:120
 msgid "Kuwait"
 msgstr "Kuwait"
 
-#: ../java/build/Countries.java:121
 msgid "Cayman Islands"
 msgstr "Quần đảo Cayman"
 
-#: ../java/build/Countries.java:122
 msgid "Kazakhstan"
 msgstr "Kazakhstan"
 
-#: ../java/build/Countries.java:123
 msgid "Lao People's Democratic Republic"
 msgstr "Lào"
 
-#: ../java/build/Countries.java:124
 msgid "Lebanon"
 msgstr "Lebanon"
 
-#: ../java/build/Countries.java:125
 msgid "Saint Lucia"
 msgstr "Saint Lucia"
 
-#: ../java/build/Countries.java:126
 msgid "Liechtenstein"
 msgstr "Liechtenstein"
 
-#: ../java/build/Countries.java:127
 msgid "Sri Lanka"
 msgstr "Sri Lanka"
 
-#: ../java/build/Countries.java:128
 msgid "Liberia"
 msgstr "Liberia"
 
-#: ../java/build/Countries.java:129
 msgid "Lesotho"
 msgstr "Lesotho"
 
-#: ../java/build/Countries.java:130
 msgid "Lithuania"
 msgstr "Lithuania"
 
-#: ../java/build/Countries.java:131
 msgid "Luxembourg"
 msgstr "Luxembourg"
 
-#: ../java/build/Countries.java:132
 msgid "Latvia"
 msgstr "Latvia"
 
-#: ../java/build/Countries.java:133
-msgid "Libyan Arab Jamahiriya"
-msgstr "Libyan Arab Jamahiriya"
+msgid "Libya"
+msgstr ""
 
-#: ../java/build/Countries.java:134
 msgid "Morocco"
 msgstr "Ma-rốc"
 
-#: ../java/build/Countries.java:135
 msgid "Monaco"
 msgstr "Monaco"
 
-#: ../java/build/Countries.java:136
-msgid "Republic of Moldova"
-msgstr "Cộng hòa Moldova"
+msgid "Moldova"
+msgstr ""
 
-#: ../java/build/Countries.java:137
 msgid "Montenegro"
 msgstr ""
 
-#: ../java/build/Countries.java:138
 msgid "Saint Martin"
 msgstr ""
 
-#: ../java/build/Countries.java:139
 msgid "Madagascar"
 msgstr "Madagascar"
 
-#: ../java/build/Countries.java:140
 msgid "Marshall Islands"
 msgstr "Quần đảo Marshall"
 
-#: ../java/build/Countries.java:141
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "Cộng hoà Nam Tư cũ Macedonia"
+msgid "Macedonia"
+msgstr ""
 
-#: ../java/build/Countries.java:142
 msgid "Mali"
 msgstr "Mali"
 
-#: ../java/build/Countries.java:143
 msgid "Myanmar"
 msgstr "Miến Điện"
 
-#: ../java/build/Countries.java:144
 msgid "Mongolia"
 msgstr "Mông Cổ"
 
-#: ../java/build/Countries.java:145
-msgid "Macao"
-msgstr "Macao"
+msgid "Macau"
+msgstr ""
 
-#: ../java/build/Countries.java:146
 msgid "Northern Mariana Islands"
 msgstr "Quần đảo Bắc Mariana"
 
-#: ../java/build/Countries.java:147
 msgid "Martinique"
 msgstr "Martinique"
 
-#: ../java/build/Countries.java:148
 msgid "Mauritania"
 msgstr "Mauritania"
 
-#: ../java/build/Countries.java:149
 msgid "Montserrat"
 msgstr "Montserrat"
 
-#: ../java/build/Countries.java:150
 msgid "Malta"
 msgstr "Malta"
 
-#: ../java/build/Countries.java:151
 msgid "Mauritius"
 msgstr "Mauritius"
 
-#: ../java/build/Countries.java:152
 msgid "Maldives"
 msgstr "Maldives"
 
-#: ../java/build/Countries.java:153
 msgid "Malawi"
 msgstr "Malawi"
 
-#: ../java/build/Countries.java:154
 msgid "Mexico"
 msgstr "Mexico"
 
-#: ../java/build/Countries.java:155
 msgid "Malaysia"
 msgstr "Malaysia"
 
-#: ../java/build/Countries.java:156
 msgid "Mozambique"
 msgstr "Mozambique"
 
-#: ../java/build/Countries.java:157
 msgid "Namibia"
 msgstr "Namibia"
 
-#: ../java/build/Countries.java:158
 msgid "New Caledonia"
 msgstr "New Caledonia"
 
-#: ../java/build/Countries.java:159
 msgid "Niger"
 msgstr "Niger"
 
-#: ../java/build/Countries.java:160
 msgid "Norfolk Island"
 msgstr "Norfolk Island"
 
-#: ../java/build/Countries.java:161
 msgid "Nigeria"
 msgstr "Nigeria"
 
-#: ../java/build/Countries.java:162
 msgid "Nicaragua"
 msgstr "Nicaragua"
 
-#: ../java/build/Countries.java:163
 msgid "Netherlands"
 msgstr "Hà Lan"
 
-#: ../java/build/Countries.java:164
 msgid "Norway"
 msgstr "Na Uy"
 
-#: ../java/build/Countries.java:165
 msgid "Nepal"
 msgstr "Nepal"
 
-#: ../java/build/Countries.java:166
 msgid "Nauru"
 msgstr "Nauru"
 
-#: ../java/build/Countries.java:167
 msgid "Niue"
 msgstr "Niue"
 
-#: ../java/build/Countries.java:168
 msgid "New Zealand"
 msgstr "New Zealand"
 
-#: ../java/build/Countries.java:169
 msgid "Oman"
 msgstr "Oman"
 
-#: ../java/build/Countries.java:170
 msgid "Panama"
 msgstr "Panama"
 
-#: ../java/build/Countries.java:171
 msgid "Peru"
 msgstr "Peru"
 
-#: ../java/build/Countries.java:172
 msgid "French Polynesia"
 msgstr "Polynésie thuộc Pháp"
 
-#: ../java/build/Countries.java:173
 msgid "Papua New Guinea"
 msgstr "Papua New Guinea"
 
-#: ../java/build/Countries.java:174
 msgid "Philippines"
 msgstr "Phi-líp-pin"
 
-#: ../java/build/Countries.java:175
 msgid "Pakistan"
 msgstr "Pakistan"
 
-#: ../java/build/Countries.java:176
 msgid "Poland"
 msgstr "Ba Lan"
 
-#: ../java/build/Countries.java:177
 msgid "Saint Pierre and Miquelon"
 msgstr "Saint Pierre và Miquelon"
 
-#: ../java/build/Countries.java:178
+msgid "Pitcairn Islands"
+msgstr ""
+
 msgid "Puerto Rico"
 msgstr "Puerto Rico"
 
-#: ../java/build/Countries.java:179
 msgid "Palestinian Territory"
 msgstr "Lãnh thổ Palestine"
 
-#: ../java/build/Countries.java:180
 msgid "Portugal"
 msgstr "Bồ Đào Nha"
 
-#: ../java/build/Countries.java:181
 msgid "Palau"
 msgstr "Palau"
 
-#: ../java/build/Countries.java:182
 msgid "Paraguay"
 msgstr "Paraguay"
 
-#: ../java/build/Countries.java:183
 msgid "Qatar"
 msgstr "Qatar"
 
-#: ../java/build/Countries.java:184
 msgid "Réunion"
 msgstr "Réunion"
 
-#: ../java/build/Countries.java:185
 msgid "Romania"
 msgstr "Romania"
 
-#: ../java/build/Countries.java:186
 msgid "Serbia"
 msgstr "Serbia"
 
-#: ../java/build/Countries.java:187
 msgid "Russian Federation"
 msgstr "Liên bang Nga"
 
-#: ../java/build/Countries.java:188
 msgid "Rwanda"
 msgstr "Rwanda"
 
-#: ../java/build/Countries.java:189
 msgid "Saudi Arabia"
 msgstr "Ả Rập Saudi"
 
-#: ../java/build/Countries.java:190
 msgid "Solomon Islands"
 msgstr "Quần đảo Solomon"
 
-#: ../java/build/Countries.java:191
 msgid "Seychelles"
 msgstr "Seychelles"
 
-#: ../java/build/Countries.java:192
 msgid "Sudan"
 msgstr "Sudan"
 
-#: ../java/build/Countries.java:193
 msgid "Sweden"
 msgstr "Thụy Điển"
 
-#: ../java/build/Countries.java:194
 msgid "Singapore"
 msgstr "Singapore"
 
-#: ../java/build/Countries.java:195
+msgid "Saint Helena"
+msgstr ""
+
 msgid "Slovenia"
 msgstr "Slovenia"
 
-#: ../java/build/Countries.java:196
+msgid "Svalbard and Jan Mayen"
+msgstr ""
+
 msgid "Slovakia"
 msgstr "Slovakia"
 
-#: ../java/build/Countries.java:197
 msgid "Sierra Leone"
 msgstr "Sierra Leone"
 
-#: ../java/build/Countries.java:198
 msgid "San Marino"
 msgstr "San Marino"
 
-#: ../java/build/Countries.java:199
 msgid "Senegal"
 msgstr "Senegal"
 
-#: ../java/build/Countries.java:200
 msgid "Somalia"
 msgstr "Somalia"
 
-#: ../java/build/Countries.java:201
 msgid "Suriname"
 msgstr "Suriname"
 
-#: ../java/build/Countries.java:202
+msgid "South Sudan"
+msgstr ""
+
 msgid "Sao Tome and Principe"
 msgstr "Sao Tome và Principe"
 
-#: ../java/build/Countries.java:203
 msgid "El Salvador"
 msgstr "El Salvador"
 
-#: ../java/build/Countries.java:204
-msgid "Syrian Arab Republic"
-msgstr "Syria"
+msgid "Sint Maarten"
+msgstr ""
+
+msgid "Syria"
+msgstr ""
 
-#: ../java/build/Countries.java:205
 msgid "Swaziland"
 msgstr "Swaziland"
 
-#: ../java/build/Countries.java:206
 msgid "Turks and Caicos Islands"
 msgstr "Quần đảo Turks và Caicos"
 
-#: ../java/build/Countries.java:207
 msgid "Chad"
 msgstr "Cá hồng"
 
-#: ../java/build/Countries.java:208
 msgid "French Southern Territories"
 msgstr "Nam lãnh thổ thuộc Pháp"
 
-#: ../java/build/Countries.java:209
 msgid "Togo"
 msgstr "Togo"
 
-#: ../java/build/Countries.java:210
 msgid "Thailand"
 msgstr "Thái Lan"
 
-#: ../java/build/Countries.java:211
 msgid "Tajikistan"
 msgstr "Tajikistan"
 
-#: ../java/build/Countries.java:212
 msgid "Tokelau"
 msgstr "Tokelau"
 
-#: ../java/build/Countries.java:213
 msgid "Timor-Leste"
 msgstr "Timor-Leste"
 
-#: ../java/build/Countries.java:214
 msgid "Turkmenistan"
 msgstr "Turkmenistan"
 
-#: ../java/build/Countries.java:215
 msgid "Tunisia"
 msgstr "Tunisia"
 
-#: ../java/build/Countries.java:216
 msgid "Tonga"
 msgstr "Tonga"
 
-#: ../java/build/Countries.java:217
 msgid "Turkey"
 msgstr "Thổ Nhỉ Kỳ"
 
-#: ../java/build/Countries.java:218
 msgid "Trinidad and Tobago"
 msgstr "Trinidad và Tobago"
 
-#: ../java/build/Countries.java:219
 msgid "Tuvalu"
 msgstr "Tuvalu"
 
-#: ../java/build/Countries.java:220
 msgid "Taiwan"
 msgstr "Đài Loan"
 
-#: ../java/build/Countries.java:221
-msgid "United Republic of Tanzania"
-msgstr "Tanzania"
+msgid "Tanzania"
+msgstr ""
 
-#: ../java/build/Countries.java:222
 msgid "Ukraine"
 msgstr "Ukraine"
 
-#: ../java/build/Countries.java:223
 msgid "Uganda"
 msgstr "Uganda"
 
-#: ../java/build/Countries.java:224
 msgid "United States Minor Outlying Islands"
 msgstr "Hoa Kỳ đảo nhỏ bên ngoài"
 
-#: ../java/build/Countries.java:225
 msgid "United States"
 msgstr "Hoa Kỳ"
 
-#: ../java/build/Countries.java:226
 msgid "Uruguay"
 msgstr "Uruguay"
 
-#: ../java/build/Countries.java:227
 msgid "Uzbekistan"
 msgstr "Uzbekistan"
 
-#: ../java/build/Countries.java:228
-msgid "Holy See (Vatican City State)"
-msgstr "Tòa Thánh (Vatican City State)"
+msgid "Vatican"
+msgstr ""
 
-#: ../java/build/Countries.java:229
 msgid "Saint Vincent and the Grenadines"
 msgstr "Saint Vincent và Grenadines"
 
-#: ../java/build/Countries.java:230
 msgid "Venezuela"
 msgstr "Venezuela"
 
-#: ../java/build/Countries.java:231 ../java/build/Countries.java:232
 msgid "Virgin Islands"
 msgstr "Quần đảo Virgin"
 
-#: ../java/build/Countries.java:233
-msgid "Viet Nam"
-msgstr "Việt Nam"
+msgid "Vietnam"
+msgstr ""
 
-#: ../java/build/Countries.java:234
 msgid "Vanuatu"
 msgstr "Vanuatu"
 
-#: ../java/build/Countries.java:235
 msgid "Wallis and Futuna"
 msgstr "Wallis và Futuna"
 
-#: ../java/build/Countries.java:236
 msgid "Samoa"
 msgstr "Samoa"
 
-#: ../java/build/Countries.java:237
 msgid "Yemen"
 msgstr "Yemen"
 
-#: ../java/build/Countries.java:238
 msgid "Mayotte"
 msgstr "Mayotte"
 
-#: ../java/build/Countries.java:239
 msgid "South Africa"
 msgstr "Nam Phi"
 
-#: ../java/build/Countries.java:240
 msgid "Zambia"
 msgstr "Zambia"
 
-#: ../java/build/Countries.java:241
 msgid "Zimbabwe"
 msgstr "Zimbabwe"
-
diff --git a/apps/routerconsole/locale-countries/messages_zh.po b/apps/routerconsole/locale-countries/messages_zh.po
index 6bf396add81d3772a583350583be09a49db9edaa..0a31a5811390642da0f949e9eff92d9761f6974c 100644
--- a/apps/routerconsole/locale-countries/messages_zh.po
+++ b/apps/routerconsole/locale-countries/messages_zh.po
@@ -2,30 +2,25 @@
 # Copyright (C) 2009 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-#
+# 
 # Translators:
 # ducki2p <ducki2p@gmail.com>, 2011
-# xtoaster <zhazhenzhong@gmail.com>, 2012
-# walking <walking@i2pmail.org>, 2011
-# walking <walking@i2pmail.org>, 2011
 # walking <waling@mail.i2p>, 2013
 # walking <walking@i2pmail.org>, 2011
 # xtoaster <zhazhenzhong@gmail.com>, 2012
-# xtoaster <zhazhenzhong@gmail.com>, 2012
-# xtoaster <zhazhenzhong@gmail.com>, 2012
+# YF <yfdyh000@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-14 13:34+0000\n"
-"PO-Revision-Date: 2013-07-11 06:43+0000\n"
-"Last-Translator: xtoaster <zhazhenzhong@gmail.com>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/"
-"language/zh_CN/)\n"
-"Language: zh_CN\n"
+"POT-Creation-Date: 2015-07-17 01:08+0000\n"
+"PO-Revision-Date: 2015-07-17 02:58+0000\n"
+"Last-Translator: YF <yfdyh000@gmail.com>\n"
+"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: zh_CN\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 msgid "Anonymous Proxy"
@@ -61,6 +56,9 @@ msgstr "荷兰属地"
 msgid "Angola"
 msgstr "安哥拉"
 
+msgid "Asia/Pacific Region"
+msgstr "亚洲/太平洋地区"
+
 msgid "Antarctica"
 msgstr "南极洲"
 
@@ -80,7 +78,7 @@ msgid "Aruba"
 msgstr "阿鲁巴"
 
 msgid "Ã…land Islands"
-msgstr "Ã…land Islands"
+msgstr "奥兰群岛"
 
 msgid "Azerbaijan"
 msgstr "阿塞拜疆"
@@ -112,6 +110,9 @@ msgstr "不丹"
 msgid "Benin"
 msgstr "贝宁"
 
+msgid "Saint Barthélemy"
+msgstr "圣巴泰勒米"
+
 msgid "Bermuda"
 msgstr "百慕大"
 
@@ -121,6 +122,9 @@ msgstr "文莱达鲁萨兰"
 msgid "Bolivia"
 msgstr "玻利维亚"
 
+msgid "Bonaire"
+msgstr "博内尔"
+
 msgid "Brazil"
 msgstr "巴西"
 
@@ -148,15 +152,12 @@ msgstr "加拿大"
 msgid "Cocos (Keeling) Islands"
 msgstr "科科斯(基林)群岛"
 
-msgid "The Democratic Republic of the Congo"
-msgstr "民主刚果"
+msgid "Congo"
+msgstr "刚果"
 
 msgid "Central African Republic"
 msgstr "中非"
 
-msgid "Congo"
-msgstr "刚果"
-
 msgid "Switzerland"
 msgstr "瑞士"
 
@@ -200,7 +201,7 @@ msgid "Cyprus"
 msgstr "塞浦路斯"
 
 msgid "Czech Republic"
-msgstr "捷克"
+msgstr "捷克共和国"
 
 msgid "Germany"
 msgstr "德国"
@@ -215,7 +216,7 @@ msgid "Dominica"
 msgstr "多米尼"
 
 msgid "Dominican Republic"
-msgstr "多米尼加联邦"
+msgstr "多米尼加共和国"
 
 msgid "Algeria"
 msgstr "阿尔及利亚"
@@ -253,7 +254,7 @@ msgstr "斐济"
 msgid "Falkland Islands (Malvinas)"
 msgstr "福克兰群岛"
 
-msgid "Federated States of Micronesia"
+msgid "Micronesia"
 msgstr "密克罗尼西亚"
 
 msgid "Faroe Islands"
@@ -355,7 +356,7 @@ msgstr "英属印度洋地区"
 msgid "Iraq"
 msgstr "伊拉克"
 
-msgid "Islamic Republic of Iran"
+msgid "Iran"
 msgstr "伊朗"
 
 msgid "Iceland"
@@ -394,7 +395,7 @@ msgstr "科摩罗"
 msgid "Saint Kitts and Nevis"
 msgstr "圣克里斯多福与尼维斯"
 
-msgid "The Democratic People's Republic of Korea"
+msgid "North Korea"
 msgstr "朝鲜"
 
 msgid "Republic of Korea"
@@ -439,7 +440,7 @@ msgstr "卢森堡"
 msgid "Latvia"
 msgstr "拉脱维亚"
 
-msgid "Libyan Arab Jamahiriya"
+msgid "Libya"
 msgstr "利比亚"
 
 msgid "Morocco"
@@ -448,7 +449,7 @@ msgstr "摩洛哥"
 msgid "Monaco"
 msgstr "摩纳哥"
 
-msgid "Republic of Moldova"
+msgid "Moldova"
 msgstr "摩尔多瓦"
 
 msgid "Montenegro"
@@ -463,8 +464,8 @@ msgstr "马达加斯加"
 msgid "Marshall Islands"
 msgstr "马绍尔群岛"
 
-msgid "The Former Yugoslav Republic of Macedonia"
-msgstr "前南斯拉夫之马其顿共和国"
+msgid "Macedonia"
+msgstr "马其顿"
 
 msgid "Mali"
 msgstr "马里"
@@ -475,7 +476,7 @@ msgstr "缅甸"
 msgid "Mongolia"
 msgstr "蒙古"
 
-msgid "Macao"
+msgid "Macau"
 msgstr "澳门"
 
 msgid "Northern Mariana Islands"
@@ -655,13 +656,19 @@ msgstr "索马里"
 msgid "Suriname"
 msgstr "苏里南"
 
+msgid "South Sudan"
+msgstr "南苏丹"
+
 msgid "Sao Tome and Principe"
 msgstr "圣多美与普林西比共和国"
 
 msgid "El Salvador"
 msgstr "萨尔瓦多"
 
-msgid "Syrian Arab Republic"
+msgid "Sint Maarten"
+msgstr "圣马丁岛"
+
+msgid "Syria"
 msgstr "叙利亚"
 
 msgid "Swaziland"
@@ -712,7 +719,7 @@ msgstr "图瓦鲁"
 msgid "Taiwan"
 msgstr "台湾"
 
-msgid "United Republic of Tanzania"
+msgid "Tanzania"
 msgstr "坦桑尼亚"
 
 msgid "Ukraine"
@@ -733,8 +740,8 @@ msgstr "乌拉圭"
 msgid "Uzbekistan"
 msgstr "乌兹别克斯坦"
 
-msgid "Holy See (Vatican City State)"
-msgstr "梵地冈"
+msgid "Vatican"
+msgstr "梵蒂冈"
 
 msgid "Saint Vincent and the Grenadines"
 msgstr "圣文森特和格林纳丁斯"
@@ -745,7 +752,7 @@ msgstr "委内瑞拉"
 msgid "Virgin Islands"
 msgstr "维京群岛"
 
-msgid "Viet Nam"
+msgid "Vietnam"
 msgstr "越南"
 
 msgid "Vanuatu"
@@ -771,4 +778,3 @@ msgstr "赞比亚"
 
 msgid "Zimbabwe"
 msgstr "津巴布韦"
-
diff --git a/apps/routerconsole/locale-news/messages_sv.po b/apps/routerconsole/locale-news/messages_sv.po
index 766d3987ef1ef90b578738b4641a6efe0347d04a..dc80a0e5d7625c80f2a6f09700873594706af4e5 100644
--- a/apps/routerconsole/locale-news/messages_sv.po
+++ b/apps/routerconsole/locale-news/messages_sv.po
@@ -4,6 +4,7 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# Anders Nilsson <locally@devode.se>, 2015
 # cacapo <handelsehorisont@gmail.com>, 2015
 # hottuna <i2p@robertfoss.se>, 2013
 # hottuna <i2p@robertfoss.se>, 2013
@@ -14,9 +15,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-07-13 21:46+0000\n"
-"PO-Revision-Date: 2015-04-09 17:47+0000\n"
-"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
-"Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
+"PO-Revision-Date: 2015-08-26 06:24+0000\n"
+"Last-Translator: Anders Nilsson <locally@devode.se>\n"
+"Language-Team: Swedish (Sweden) (http://www.transifex.com/otf/I2P/language/sv_SE/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -24,7 +25,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 msgid "Congratulations on getting I2P installed!"
-msgstr "Grattis för din I2P installation!"
+msgstr "Grattis till din I2P-installation!"
 
 msgid "Welcome to I2P!"
 msgstr "Välkommen till I2P!"
diff --git a/apps/routerconsole/locale-news/messages_tr.po b/apps/routerconsole/locale-news/messages_tr.po
index 090db06b3ce340119595b3b724997dcaa4d1b9aa..4ec09769008193e5e480666716a3afbbeb4065c5 100644
--- a/apps/routerconsole/locale-news/messages_tr.po
+++ b/apps/routerconsole/locale-news/messages_tr.po
@@ -4,15 +4,15 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# Kaya Zeren <kayazeren@gmail.com>, 2013
+# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-07-13 21:46+0000\n"
-"PO-Revision-Date: 2014-02-23 16:51+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
+"PO-Revision-Date: 2015-08-05 14:03+0000\n"
+"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
+"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -62,4 +62,4 @@ msgstr "Sol tarafta \"paylaşılmış istemci\" hedefi listelendiğinde, lütfen
 msgid ""
 "Point your IRC client to {0}localhost:6668{1} and say hi to us on "
 "{2}#i2p{3}."
-msgstr ""
+msgstr "IRC istemcinizi {0}localhost:6668{1} adresine yönlendirin ve bize merhaba demek için {2}#i2p{3} kanalını açın."
diff --git a/apps/routerconsole/locale-news/messages_uk.po b/apps/routerconsole/locale-news/messages_uk.po
index ba8e39a36351c436c7b8ee00c97683af40893824..9112d4b9d8b4de46ed4a79b4d90c93c27dadb831 100644
--- a/apps/routerconsole/locale-news/messages_uk.po
+++ b/apps/routerconsole/locale-news/messages_uk.po
@@ -13,9 +13,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2013-07-13 21:46+0000\n"
-"PO-Revision-Date: 2014-12-25 14:10+0000\n"
-"Last-Translator: madjong <madjong@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"PO-Revision-Date: 2015-08-07 17:13+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
diff --git a/apps/routerconsole/locale/messages_ar.po b/apps/routerconsole/locale/messages_ar.po
index 365b38e53f31749ed0e4798313b4826564b314ca..8ff6cae97f1d52f2aff3b60c2fb9ac40bed62a67 100644
--- a/apps/routerconsole/locale/messages_ar.po
+++ b/apps/routerconsole/locale/messages_ar.po
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Arabic (http://www.transifex.com/projects/p/I2P/language/ar/)\n"
 "MIME-Version: 1.0\n"
@@ -33,8 +33,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -47,8 +47,8 @@ msgstr[5] ""
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -61,8 +61,8 @@ msgstr[5] ""
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -75,8 +75,8 @@ msgstr[5] ""
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
@@ -87,15 +87,9 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr ""
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
@@ -106,7 +100,26 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+msgstr[3] ""
+msgstr[4] ""
+msgstr[5] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
@@ -117,7 +130,7 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -164,7 +177,7 @@ msgstr "إلى"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "ﻻشيئ"
@@ -303,17 +316,17 @@ msgstr "جاري التوقيف"
 msgid "Rejecting tunnels"
 msgstr "رفض الأنفاق"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "اعادة التوزيع"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
@@ -324,26 +337,26 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "فشل اعادة التوزيع"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "تم حفظ اعدادات اعادة التوزيع"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "اعادة التوزيع: تحميل العنوان"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -413,7 +426,7 @@ msgstr "صعب الوصول بأية وسيلة"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "الحالة"
@@ -428,7 +441,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} مستعملة للاتصال الخارجي فقط"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr ""
 
@@ -451,13 +464,13 @@ msgid ""
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "التعاريف"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -472,7 +485,7 @@ msgstr "النظير البعيد"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr ""
 
@@ -499,13 +512,13 @@ msgstr "مدة تلقى / بعث حزمة  "
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "خامل"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "داخل/خارج"
@@ -520,14 +533,14 @@ msgstr "مدة استمرار هذا الاتصال"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "فوق"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "الانحراف"
 
@@ -561,7 +574,7 @@ msgstr "عتبة بداية بطيئة"
 msgid "The round trip time in milliseconds"
 msgstr "الوقت الذهاب وإياب في جزء ثانية"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -576,7 +589,7 @@ msgstr "الحد الأقصى الحالي إرسال حجم الحزمة"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr ""
 
@@ -586,7 +599,7 @@ msgstr "العدد الاجمالي للحزم المرسلة الى المست
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr ""
 
@@ -595,7 +608,7 @@ msgid "The total number of packets received from the peer"
 msgstr "العدد الاجمالي للحزم المستقبلة"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr ""
 
@@ -604,7 +617,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "العدد الاجمالي للحزم المرسلة الى النظائر"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr ""
 
@@ -643,8 +656,8 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "مدة الاشتغال"
 
@@ -739,17 +752,17 @@ msgid "NTCP connections"
 msgstr "اتصال NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "حد"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "انتهى الوقت"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr ""
 
@@ -762,19 +775,19 @@ msgid "Backlogged?"
 msgstr "السجلات"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "الداخل"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "الخارج"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
@@ -785,107 +798,107 @@ msgstr[3] ""
 msgstr[4] ""
 msgstr[5] ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "اتصال UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "اتجاه/تقديم"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "حسب الاتصاب الوارد"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "حسب الاتصال الخارج"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "حسب معدل الداخل"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "حسب معدل الصادرة"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "حسب مدة الاتصال"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "حسب انحراف الساعة"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "حسب نافذة الازدحام"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "حسب مدة الانطلاق"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "حسب الوقت ذهابا وإيابا"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "حسب مهلة إعادة الإرسال"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "حسب أقصى مدة"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "حسب الحزم المرسلة"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "حسب الحزم المستقبلة"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "حسب الحزم المعاد ارسالها"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "حسب الحزم المستقبلة اكثر من مرة"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "عرضنا لتعريفهم"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "عرصو علينا تقديمهم"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "اختنق"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "فشل واحد"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} فشل"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "ممنوع"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -923,66 +936,66 @@ msgstr "تجاوز النفق: ازدحام كبير"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "تجاوز النفق: وقت الانتظار"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "يوجد اصدار جديد {0} للملحق"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "فشل البحث عم ترقية للملحق {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "ﻻيوجد اصدار جديد {0} للملحق"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B منقول"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "فشل في النقل {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "طريقة الترقية"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "أعد التشغيل"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "انتهى التحديث"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "من {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "ملف التحديث غير كامل {0} "
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "فشل في نسخ {0}"
@@ -995,7 +1008,7 @@ msgstr "فشل في نسخ {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -1009,20 +1022,20 @@ msgstr ""
 msgid "Updating"
 msgstr "ترقية"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1212,16 +1225,20 @@ msgid "No new version found at {0}"
 msgstr "ﻻيوجد اصدار جديد {0} "
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "منع مؤقت {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "ممنوع الى اعادة تشغيل {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "الغاء المنع الآن"
 
@@ -1322,18 +1339,18 @@ msgstr "الغاء المنع الآن"
 msgid "I2P Router Console"
 msgstr "مركز تحكم I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "خطأ في ترقية الإعدادات - انظر التفاصيل"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "تم حفظ الإعدادات بنجاح"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1541,7 +1558,7 @@ msgid "Add Client"
 msgstr "أضف مستخدم"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "مستخدم"
@@ -1573,9 +1590,9 @@ msgid "Plugin"
 msgstr "الملحق"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "إصدار"
 
@@ -1597,7 +1614,8 @@ msgstr "رخصة"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "موقع"
 
@@ -1610,7 +1628,7 @@ msgid "Stop"
 msgstr "توقف"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "بحث عن الترقية"
@@ -1632,7 +1650,7 @@ msgstr "حذف"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1642,7 +1660,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1661,7 +1679,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1790,8 +1808,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "حذف"
 
@@ -1801,7 +1819,7 @@ msgstr "اختر فئة لإضافتها"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "سرعة الاتصال"
 
@@ -1810,7 +1828,7 @@ msgid "Home Page"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "شبكة"
 
@@ -1866,9 +1884,9 @@ msgid "UI"
 msgstr "واجهة مستخدم"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "نفق"
 
@@ -1886,15 +1904,15 @@ msgid "Logging"
 msgstr "تسجيل"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "المستخدمين"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "احصائات"
 
@@ -1906,8 +1924,8 @@ msgstr "متقدم"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2172,7 +2190,7 @@ msgstr "أعد التشغيل الآن"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "أعد التشغيل"
 
@@ -2655,8 +2673,8 @@ msgid "User Name"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr ""
 
@@ -2665,91 +2683,91 @@ msgstr ""
 msgid "Password"
 msgstr "كلمة السر"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "يوجد اصدار جديد "
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "توجد تحديثات، انقر زر على اليسار للتحميل"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "ﻻتوجد تحديثات"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "أبد"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "تحديث العناوين"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "تحديث المفاتيح الموثوقة."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "كل"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "إعلام فقط"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "حمل فقط"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "حمل، تحقق و أعد تشغيل"
 
@@ -2875,7 +2893,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr ""
 
@@ -3025,12 +3043,12 @@ msgid "Graph settings saved"
 msgstr "حفظ اعدادات الرسم البياني"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "دفتر العناوين"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3061,17 +3079,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "بريد الكتروني مجهول"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "بريد الكتروني"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "مساعدة روتر I2P"
 
@@ -3081,17 +3099,17 @@ msgid "Router Console"
 msgstr "مركز تحكم I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "برنامج تورنت مجهول"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "تورنت"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr ""
 
@@ -3260,97 +3278,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3368,223 +3386,223 @@ msgid "No log messages"
 msgstr "لا تسجيل الرسائل"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr ""
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "موجه"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "غير موجود في قاعدة الشبكة"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "محلي"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "غير منشور"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "الغاية"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "ينتهي في مدة {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "انتهى {0} منذ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "نفق"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "لم تتم تهيئة"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "احصائيات قاعدة البيانات I2P"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "عدد"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "نقل"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "البلد"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "المعلومات"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "معلومات النظائر"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "مختفي"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "تحديث"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} مدة"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "تم نشره منذ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "عناوين"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "ثمن"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "مختفي"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "آخر تحديث للأخبار {0} "
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "آخر تحديث للأخبار {0} "
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr ""
 
@@ -3611,7 +3629,7 @@ msgstr[5] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3650,19 +3668,19 @@ msgid "Groups (Caps)"
 msgstr "المجموعات"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "سرعة"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "القدرة"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "دمج"
 
@@ -3685,7 +3703,7 @@ msgid "Failing"
 msgstr "فشل"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "مدمج"
 
@@ -3762,71 +3780,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "نظير سريع"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "نظير ذو قدرة عالية"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "نظير مندمج"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "مجموعات"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "سرعة"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "القدرة"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "كم من الانفاق نطلب منهم الانضمام في ساعة؟"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "كم من النظائر موجودة مؤخرا؟"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "انضمام"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "الحالة"
 
@@ -3962,277 +3980,277 @@ msgstr "الرسم البياني"
 msgid "Lifetime average value"
 msgstr "متوسط الحياة"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "مساعدة حول I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "مساعدة"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "خدمات I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "I2P اعدادات موجه"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "أظهر الأنفاق الموجودة وحالة الانفاق "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "أظهر اتصالات المشاركين"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "أظهر قائمة بكل I2P المعروفة"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "تقرير"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "يجلات"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "أظهر اشتغال الموجه بريم بياني"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "رسم بياني"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "احصائات نصية للموجه"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "عام"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "هوية محلية"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "هوية موجهك  I2P هو"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "لاتظهر لأحد"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "أظهر"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "مساعدة في اعدادات الجدار الناري لزيادة فعالية I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "مفعل"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "سريع"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "قدرة عالية"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "معروف"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "حدد سرعة الموجه"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "الاتصال الداخلي/خارجي"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "مجموع"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "مستعمل"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "تصفح"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "مشارك"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "نسبة المشاركة"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "ازدحام"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "تأخر"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "تأخر الرسالة"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "تأخر النفق"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4336,26 +4354,26 @@ msgstr "جاري بناء النفق"
 msgid "shared clients"
 msgstr "المستخدمين المشتركين"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "أنقر اعادة التشغبل للتثبيت"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "انقر زر التوقف وأعد التشغيل للتثبيت"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "اصدار {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4364,7 +4382,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4373,69 +4391,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "مساعدة خول اعدادات الجدار الناري"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "تأكد من NAT/جدار ناري"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "اعادة توزيع"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "أعادة التشغيل في {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "متوسط {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "عدد الأحداث في المدة"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
-msgid "avg"
-msgstr ""
-
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
-msgid "max"
+msgid "avg"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+msgid "max"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "الآن"
 
@@ -4612,175 +4646,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "فتح شاشة التحكم في المتصفح عند البداية"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC بروكسي"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr ""
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P خادم ويب"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr ""
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr ""
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr ""
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr ""
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr ""
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "داكن"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "فاتح"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "ليل"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "تحديد سرعة الاتصال"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "التشفير"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "الأنفاق I2P"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "شبكة"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr ""
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "نقل"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr ""
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "مفتاح"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "منفذ"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4949,7 +4935,7 @@ msgid "Share"
 msgstr "شارك"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "ملاحظة"
@@ -4990,7 +4976,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -5029,27 +5015,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "اعدادات I2P متقدمة"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "بعض التغييرات تحتاج اعادة التشغيل لتفعيلها"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_cs.po b/apps/routerconsole/locale/messages_cs.po
index 69da230c06166736fe8979218103c176a8ffc7ba..936a8da837084ef7ff49a1de2eb68f48a56424c9 100644
--- a/apps/routerconsole/locale/messages_cs.po
+++ b/apps/routerconsole/locale/messages_cs.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Czech (http://www.transifex.com/projects/p/I2P/language/cs/)\n"
 "MIME-Version: 1.0\n"
@@ -31,8 +31,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -42,8 +42,8 @@ msgstr[2] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -53,8 +53,8 @@ msgstr[2] "{0} sek."
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -64,8 +64,8 @@ msgstr[2] "{0} minut"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
@@ -73,15 +73,9 @@ msgstr[0] "{0} hodina"
 msgstr[1] "{0} hodiny"
 msgstr[2] "{0} hodin"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "neaplikovatelné"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
@@ -89,7 +83,23 @@ msgstr[0] "{0} den"
 msgstr[1] "{0} dny"
 msgstr[2] "{0} dnů"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "neaplikovatelné"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
@@ -97,7 +107,7 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -141,7 +151,7 @@ msgstr "Do"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "žádný"
@@ -280,17 +290,17 @@ msgstr "Odmítám tunely: vypínání"
 msgid "Rejecting tunnels"
 msgstr "Odmítnutí tunelů"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Opětovné sdílení (reseeding)"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
@@ -298,26 +308,26 @@ msgstr[0] "Reseed získán pouze pro 1 router."
 msgstr[1] "Reseed získán pouze pro {0} routerů."
 msgstr[2] "Reseed získán pouze pro {0} routerů."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed selhal."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Další informace viz. {0}."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "reseed stránky nastavení"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseedovaní: načítání seedované URL."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -387,7 +397,7 @@ msgstr "Nedostupné na každém transportu"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Status"
@@ -402,7 +412,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} je použito pouze pro odchozí spojení"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP není povolen"
 
@@ -425,13 +435,13 @@ msgid ""
 msgstr "Pro nastavení těchto limitů přidejte nastavení i2np.ntcp.maxConnections=nnn a i2np.udp.maxConnections=nnn na stránce pokročilá nastavení."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definice"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -446,7 +456,7 @@ msgstr "Vzdálený sdíleč určený hashem routru."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Adresář"
 
@@ -473,13 +483,13 @@ msgstr "Doba od posledního přijetí / odeslání paketu."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Nečinný"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "příchozí/odchozí"
@@ -494,14 +504,14 @@ msgstr "Před jak dlouhou dobou bylo toto spojení navázáno"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Up"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Zkreslit"
 
@@ -535,7 +545,7 @@ msgstr "Pomalý start prahu."
 msgid "The round trip time in milliseconds"
 msgstr "Round trip time v milisekundách"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -550,7 +560,7 @@ msgstr "Současná maximální velikost odeslaného paketu / předpokládaná ve
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -560,7 +570,7 @@ msgstr "Celkový počet paketů odeslaných "
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -569,7 +579,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Celkový počet paketů obdržených od peeru"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -578,7 +588,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Celkový počet paketů znovu přenesených peeru. "
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -617,8 +627,8 @@ msgstr "WAN PPP Připojení"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr ""
 
@@ -713,17 +723,17 @@ msgid "NTCP connections"
 msgstr "NTCP připojení"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limit"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Timeout"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -736,19 +746,19 @@ msgid "Backlogged?"
 msgstr "Backlogováno?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Příchozí"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Odchozí"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
@@ -756,107 +766,107 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP připojení"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Třídit podle hashe peeru"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Směr / Úvod"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Seřadit podle příchozí nečinnosti"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Seřadit podle odchozí nečinnosti"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Seřadit podle příchozí rychlosti"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Seřadit podle odchozí rychlosti "
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Seřadit podle doby běhu připojení."
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Seřadit podle zkreslení času"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Seřadit podle okna přetížení"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Seřadit podle pomalého startu prahu"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Seřadit podle round trip time"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Seřadit podle časového limitu opakovaného přenosu"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Seřadit podle odchozí maximální přenosové jednotky"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Seředit podle odeslaných paketů"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Seřadit podle přijatých paketů"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Seřadit podle znovu odeslaných paketů "
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Seřadit podle paketů obdržených více než jednou"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Nabídli jsme jim že je představíme"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Nabídli nám že nás představí"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Zadušen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 selhání"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} selhání"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Zakázáno"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "Backblogováno"
 
@@ -894,66 +904,66 @@ msgstr ""
 msgid "Dropping tunnel requests: Queue time"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr ""
@@ -966,7 +976,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -980,20 +990,20 @@ msgstr ""
 msgid "Updating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1183,16 +1193,20 @@ msgid "No new version found at {0}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr ""
 
@@ -1293,18 +1307,18 @@ msgstr ""
 msgid "I2P Router Console"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1512,7 +1526,7 @@ msgid "Add Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr ""
@@ -1544,9 +1558,9 @@ msgid "Plugin"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr ""
 
@@ -1568,7 +1582,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr ""
 
@@ -1581,7 +1596,7 @@ msgid "Stop"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr ""
@@ -1603,7 +1618,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1613,7 +1628,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1632,7 +1647,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1761,8 +1776,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr ""
 
@@ -1772,7 +1787,7 @@ msgstr ""
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr ""
 
@@ -1781,7 +1796,7 @@ msgid "Home Page"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr ""
 
@@ -1837,9 +1852,9 @@ msgid "UI"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr ""
 
@@ -1857,15 +1872,15 @@ msgid "Logging"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr ""
 
@@ -1877,8 +1892,8 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2140,7 +2155,7 @@ msgstr ""
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr ""
 
@@ -2614,8 +2629,8 @@ msgid "User Name"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr ""
 
@@ -2624,91 +2639,91 @@ msgstr ""
 msgid "Password"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr ""
 
@@ -2834,7 +2849,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr ""
 
@@ -2984,12 +2999,12 @@ msgid "Graph settings saved"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3020,17 +3035,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr ""
 
@@ -3040,17 +3055,17 @@ msgid "Router Console"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr ""
 
@@ -3219,97 +3234,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3327,223 +3342,223 @@ msgid "No log messages"
 msgstr ""
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr ""
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr ""
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr ""
 
@@ -3567,7 +3582,7 @@ msgstr[2] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3597,19 +3612,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr ""
 
@@ -3632,7 +3647,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr ""
 
@@ -3709,71 +3724,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr ""
 
@@ -3903,277 +3918,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4277,26 +4292,26 @@ msgstr ""
 msgid "shared clients"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4305,7 +4320,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4314,69 +4329,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
-msgid "avg"
-msgstr ""
-
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
-msgid "max"
+msgid "avg"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+msgid "max"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr ""
 
@@ -4553,175 +4584,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
-msgid "IRC proxy"
+msgid "shared clients (DSA)"
 msgstr ""
 
 #: ../java/strings/Strings.java:38
-msgid "eepsite"
+msgid "IRC proxy"
 msgstr ""
 
 #: ../java/strings/Strings.java:39
-msgid "I2P webserver"
+msgid "eepsite"
 msgstr ""
 
 #: ../java/strings/Strings.java:40
+msgid "I2P webserver"
+msgstr ""
+
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr ""
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr ""
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr ""
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr ""
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr ""
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr ""
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr ""
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr ""
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr ""
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr ""
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr ""
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr ""
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr ""
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr ""
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr ""
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4890,7 +4873,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4931,7 +4914,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4970,27 +4953,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_da.po b/apps/routerconsole/locale/messages_da.po
index d909e6370debbf137372f0f2e3f0597f82682c84..35a47e20583f262940b6e8691f13185efd9e408b 100644
--- a/apps/routerconsole/locale/messages_da.po
+++ b/apps/routerconsole/locale/messages_da.po
@@ -11,9 +11,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-18 15:17+0000\n"
-"Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Danish (http://www.transifex.com/projects/p/I2P/language/da/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -32,8 +32,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -42,8 +42,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -52,8 +52,8 @@ msgstr[1] "{0} sek"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -62,37 +62,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 time"
 msgstr[1] "{0} timer"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "Ikke tingængelig "
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 dag"
 msgstr[1] "{0} dage"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "Ikke tingængelig "
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -135,7 +144,7 @@ msgstr "Til"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "ingen"
@@ -274,43 +283,43 @@ msgstr "Afviser tunneler: Lukker ned!"
 msgid "Rejecting tunnels"
 msgstr "Afviser tunneler"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "Reseeding: router info fra fil ({0} lykkedes, {1} fejl)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseeder"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Reseed entede kun 1 router."
 msgstr[1] "Reseeder hentede kun {0} routere."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseeding fejlede"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Se {0} for at få hjælp."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "Reseeding konfigurationsside"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseeder: henter seed-URL."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -380,7 +389,7 @@ msgstr "Utilgængelig for alle transporter"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Status"
@@ -395,7 +404,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} bruges kun til udadgående forbindelser"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP er ikke aktiveret."
 
@@ -418,13 +427,13 @@ msgid ""
 msgstr "For at tilsidesætte grænsen for ændringen af bearbejdningsdata, skal du tilføje indstillingerne i2np.ntcp.maxConnections = nnn og i2np.udp.maxConnections = nnn på den Avanceret Konfigurationsside."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definationer "
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -439,7 +448,7 @@ msgstr "Fjern-peeren, identificeret af router hash"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Dir"
 
@@ -466,13 +475,13 @@ msgstr "Hvor længe siden en pakke blev modtaget / sent"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Hvile"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Ind/Ud"
@@ -487,14 +496,14 @@ msgstr "Hvor længe siden denne forbindelse blev etableret"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Op"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Skæv"
 
@@ -528,7 +537,7 @@ msgstr "Den langsomme starttilstand"
 msgid "The round trip time in milliseconds"
 msgstr "Fra start til slut i millisekunder"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -543,7 +552,7 @@ msgstr "Nuværende maksimale sendte pakkestørrelse / anslået maksimalt modtage
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -553,7 +562,7 @@ msgstr "Det samlede antal af pakker sendt af peeren"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -562,7 +571,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Det samlede antal af pakker modtaget fra peeren"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dub TX"
 
@@ -571,7 +580,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Det samlede antal pakker videreudsendes til peeren"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "DUB RX"
 
@@ -610,8 +619,8 @@ msgstr "WAN PPP Forbindelse"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Oppetid"
 
@@ -706,17 +715,17 @@ msgid "NTCP connections"
 msgstr "NTCP fobindelser "
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Grænse"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Timeout"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -729,126 +738,126 @@ msgid "Backlogged?"
 msgstr "Gemt fra tidligere?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Indadgående"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Udadgående"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} peer"
 msgstr[1] "{0} peers"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP forbindelser"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sorter efter peer hash"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Retning / Indledning"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sorter efter hvilende indadgående"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sorter efter hvilende udadgående"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sorter efter indadgående sats"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sorter efter udadgående sats"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sorter efter forbindelsens oppetid"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sorter efter tidsforskel"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sorter efter overbelastnings vindue"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sorter efter langsom starttilstand"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sorter efter tiden fra start til slut"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sorter efter genafsendelses timeout"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sorter efter den maksimale udadgående overførsels-enhed"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sorter efter antal afsendte pakker"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sorter efter antal modtaget pakker"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sorter efter antal videresendte pakker "
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sorter efter pakker der er modtaget mere end én gang"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Vi tilbød at indtroducere dem "
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "De tilbød at idtoducere os"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Kvalt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 fejl"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} fejle"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Banned"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "backlogged"
 
@@ -886,66 +895,66 @@ msgstr "Dropper tunnelforespørgsler: Høj belastning"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Dropper tunnelforespørgsler: Kø tid"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Nyt plugin version {0} er tilgængeligt"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Opdatering for plugin {0} kunne ikke tjekkes"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Der er ingen ny version tilgængelig for plugin {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B overført"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Installationen misslykkedes fra {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Overfører fil fra {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Opdatering blev downloaded"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Genstarter"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Opdatering mislykkedes"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "fra {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Usigneret opdaterings fil fra {0} er korrupt"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Det mislykkedes at kopiere til {0}"
@@ -958,7 +967,7 @@ msgstr "Det mislykkedes at kopiere til {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "HTTP-klient proxy tunnel skal køre"
@@ -972,20 +981,20 @@ msgstr "HTTP-klient proxy tunnel skal køre"
 msgid "Updating"
 msgstr "Opdatere"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "In - netværk opdateringer deaktiveret. Tjek pakke manager."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Inge skriverettigheder til I2P installationsmappen."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Du skal først opdatere til version {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Kræver Java version {0} men installeret Java version er {1}"
@@ -1175,16 +1184,20 @@ msgid "No new version found at {0}"
 msgstr "Ingen ny version fundet på {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Midlertidige forbud udløber om {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Banned indtil genstart eller om {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "Unban nu"
 
@@ -1285,18 +1298,18 @@ msgstr "Unban nu"
 msgid "I2P Router Console"
 msgstr "I2P Router-konsol"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Fejl ved opdatering af konfiguration - Se venligst fejlloggen"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Konfigurationen er gemt med success "
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1504,7 +1517,7 @@ msgid "Add Client"
 msgstr "Tilføj Klient"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Klient"
@@ -1536,9 +1549,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Version"
 
@@ -1560,7 +1573,8 @@ msgstr "Licens"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Hjemmeside"
 
@@ -1573,7 +1587,7 @@ msgid "Stop"
 msgstr "Stop"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Check for opdateringer"
@@ -1595,7 +1609,7 @@ msgstr "Slet"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1605,7 +1619,7 @@ msgstr "Slet valgte"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1624,7 +1638,7 @@ msgstr "Gendanne standarder"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1753,8 +1767,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Fjern"
 
@@ -1764,7 +1778,7 @@ msgstr "Vælg en klasse der skal tilføjes"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "BÃ¥ndbredde"
 
@@ -1773,7 +1787,7 @@ msgid "Home Page"
 msgstr "Hjemmeside"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Netværk"
 
@@ -1829,9 +1843,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunneler"
 
@@ -1849,15 +1863,15 @@ msgid "Logging"
 msgstr "Logning"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Peers"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "statistik"
 
@@ -1869,8 +1883,8 @@ msgstr "Avanceret"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2131,7 +2145,7 @@ msgstr "Genstart med det samme"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Genstart"
 
@@ -2602,8 +2616,8 @@ msgid "User Name"
 msgstr "Brugernavn"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Tilføje"
 
@@ -2612,91 +2626,91 @@ msgstr "Tilføje"
 msgid "Password"
 msgstr "Adgangskode"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Opdatere eller tjek forvejen i gang"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Der er en tilgængelig opdatering, prøver at downloade."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Der er en tilgængelig opdatering, klik på knappen til venstre for at downloade."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Der er ingen tilgængelige opdateringer"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Opdatering af nyhedsURL til {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "intern"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Opdatering af proxyvært til {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Opdatering af proxyport til {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Opdaterer opdateringsfrekvens {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Aldrig"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Opdatering af opdateringspolicy til {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Opdaterer opdaterings URLer."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Opdaterer betroede nøgler."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Opdaterer usigneret opdateringsURL til {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr "Opdaterer signered udviklingsbuild URL til {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Enhver"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Notificer kun"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Download og verificer kun"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Download, verificer og genstart"
 
@@ -2822,7 +2836,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Ingen \"{0}\" hændelser fundet i tidligere {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tid"
 
@@ -2972,12 +2986,12 @@ msgid "Graph settings saved"
 msgstr "Graf indstillinger blev gemt"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Adressebog"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Hold styr på din I2P host-fil her (I2P domænenavns vedtagelse)"
 
@@ -3008,17 +3022,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2P Hjemmesidekonfiguration"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Anonym webmail klient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P Router Hjælp"
 
@@ -3028,17 +3042,17 @@ msgid "Router Console"
 msgstr "Router Konsol"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Indbygget anonym BitTorrent klient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrents"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Lokal webserver"
 
@@ -3207,97 +3221,97 @@ msgstr "HTTP proxyn er ikke oppe"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Din browser er ikke korrekt konfigueret til at bruge HTTP proxyn på {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Navn"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "I2P Jobkø"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Job körer"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Aktive job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "begyndte {0} siden"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Lige afslutet jobs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "afslutet {0} siden"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Færdige/ventede jobs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Planlagte jobs"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} vil starte i {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Samlede Jobstatistikker"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "I Kø"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Kører"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "Dropped"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Avg"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Afventer"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Resumé"
 
@@ -3315,223 +3329,223 @@ msgid "No log messages"
 msgstr "Der er ingen log beskeder"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Lokal Router"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Router Opslag"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Alle Routers"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Alle Routere med Fulle Stats"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSets"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "ikke fundet i netværksdatabasen"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Lokal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "ikke publiceret"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destination"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Føje til den lokale adressebog"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Udløber om {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Udløbet for {0} siden"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Gateway"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Ikke initialiseret"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Netværksdatabase Router statistik"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Antal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transporter"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Land"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Vores information"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Peer information for"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Hele posten"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Gemt"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Opdateret"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} siden"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publiceret"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Underskriftsnøgle"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adresse(r)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "omkostninger"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Gemt eller under opstart"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU med introdutører   "
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP og SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP og SSU med introdutører"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 kun SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6, introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 kun NTCP, SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Nyheder blev sidst opdateret for {0} siden"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Nyheder blev sidst tjekket for {0} siden"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Skjul nyheder"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Vis nyheder"
 
@@ -3554,7 +3568,7 @@ msgstr[1] "{0} plugins opdateret"
 msgid "Plugin update check complete"
 msgstr "Plugin opdatering tjek komplet"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3581,19 +3595,19 @@ msgid "Groups (Caps)"
 msgstr "Grupper (Caps)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Hastighed"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Kapacitet"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integration"
 
@@ -3616,7 +3630,7 @@ msgid "Failing"
 msgstr "Svigtende"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integreret"
 
@@ -3693,71 +3707,71 @@ msgstr "1h fejlfrekvens"
 msgid "1d Fail Rate"
 msgstr "1d fejlfrekvens"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Tærskler"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "Hurtige peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "Højkapacitet peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "godt integrerede peers "
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "som besluttet af profilarrangøren"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "Grupper"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "kapaciteter i netDb, anvendes ikke til at bestemme profilerne"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "caps"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "Top gennemstrømning (bytes pr. sekund) over en periode på 1 minut som klienten har holdt i den samme tunnel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "hastighed"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "kapacitet"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "hvor mange tunneler kan vi spørge dem at tilslutte sig i timen?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "hvor mange nye peers har de fortalt os om på det seneste?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "Integration"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "er klienten banned, utilgængelig eller mislykkes tunnel testene?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "status"
 
@@ -3885,277 +3899,277 @@ msgstr "Diagram over antal hændelser"
 msgid "Lifetime average value"
 msgstr "Livstids gennemsnitsværdi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P Router Hjælp &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Hjælp &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Konfigurer opstart af klienter og webapps (tjenester); manuel start af hvilende tjenester"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P tjenester"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Konfigurer I2P Router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P Internt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Se eksisterende tunneler og status på tunneler som bygges"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Vis alle de nuværende klient forbindelser"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Vis seneste klient ydelsesprofiler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profiler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Vis liste over kendte I2P routere"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Sundheds Rapport"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Logs"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Graf over routerens ydelse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Grafer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Tekstbaseret statistik over routerens ydelse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Lokale Tunneler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Skjulte Tjenster Manager"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Genarelt "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Din lokale identitet er din unike I2P router identitet, tilsvarande en ip adresse men tilpasset I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Aldrig vidaregive dette til nogen, da det kan afsløre din rigtige ip-adresse."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Lokal Identitet"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Din unikke I2P router identitet er"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "afslør aldrig denne for nogen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "vis"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Den version af I2P som vi kører."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Hvor længe vi har været i gang i denne session"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Hjælp med konfiguration af firewall og router for den optimale I2P ydelse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Se mere information på wikien"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Advarsel: ECDSA er ikke tilgængelig. Opdater din Java eller OS"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Konfigurere I2P Opdateringer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2P Opdatering"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Peers som vi snakket med de sidste minutter/ sidste time"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Aktiv"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Antallet af peers til rådighed at bygge klienttunneler "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Hurtig"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Antallet af peers til rådighed at bygge sonderende tunneler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Høj kapacitet"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Antallet af peers til rådighed for forespørgsler til netværksdatabasen "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Det samlade antal peers i vores netværkdatabase"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Kendte"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Konfigurer routerens båndbredde bevilling "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "BÃ¥ndbredde ind/ud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Total"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Used"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Bruges til opbygning og afprøvning af tunneler, og kommunikation med floodfill peers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Udforskende"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tunneler, vi bruger til at levere eller få adgang til tjenester på netværket"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Tunneler vi deltager i, og direkte bidrager med båndbredde til netværket"
+msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Deltagende"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "Forholdet mellem tunnel hops vi leverer med tunnel hops vi bruger - en værdi større end 1.00 indikerer et positivt bidrag til netværket"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Del-ratio "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Hvad er der i routerens jobkø?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Overfyldning"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indikerer routerens ydeevne"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Arbejdsforsinkelse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indikerer hvor hurtigt udgående beskeder til andre i2P routere er sendt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Besked fosinkelse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Tiden for en tunneltest fra start til slut"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Tunnel forsinkelse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Kø anmodninger fra andre routere til at deltage i tunneler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Efterslæb"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Nyheder &amps; Opdateringer"
 
@@ -4259,26 +4273,26 @@ msgstr "Opbygger tunneler"
 msgid "shared clients"
 msgstr "delte klienter "
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Klik på Genstart for at installere"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Klik på Luk Ned og Genstart for at installerer"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Version {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Opdatering tilgængelig"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Download {0} Opdatering"
@@ -4287,7 +4301,7 @@ msgstr "Download {0} Opdatering"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr "Hent signerede <br> Development opdatering <br> {0}"
@@ -4296,69 +4310,85 @@ msgstr "Hent signerede <br> Development opdatering <br> {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Download usigneret<br>Opdatering {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Hjælp med konfiguration af firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Tjek NAT/firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Reseed"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "rækkefølge    "
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Top"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Ned"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Bund"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Vælg et felt til at tilføje"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "hændelser i {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "gennemsnit for {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Hændelser pr. periode"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "Gennemsnit"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "maks"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "nu"
 
@@ -4535,175 +4565,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Ã…ben Router Konsol in webbrowseren ved opstart"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P webserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klassisk"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "mørk"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "lyst"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "midnat"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "BåndbreddeBegrænser"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "KlientBeskeder"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Kryptering"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp "
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPoo"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "JobKø"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "NetværksDatabase"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Stream"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Hastighedsregulator"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "vært"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "nøgle"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "tag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "konfigurere båndbredde"
@@ -4872,7 +4854,7 @@ msgid "Share"
 msgstr "Del"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTE"
@@ -4913,7 +4895,7 @@ msgid "Advanced network configuration page"
 msgstr "Avanceret network konfigurationsside"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4952,27 +4934,35 @@ msgid ""
 "computer's resources."
 msgstr "Floodill deltagelse hjælper netværket, men kan bruge mere af computerens ressourcer."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Automatisk"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "Tvinge på"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Deaktivere"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Avanceret I2P konfiguration"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Nogle ændringer kræver et genstart, før de kan træde i kraft"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "Hvis du vil foretage ændringer, skal du redigere filen {0}."
diff --git a/apps/routerconsole/locale/messages_de.po b/apps/routerconsole/locale/messages_de.po
index 5f67f6edc13a40f2355b772b7e2e66d0d0d4795d..993d8c9ec45dfffb727c0a6bc156a73a3a03db98 100644
--- a/apps/routerconsole/locale/messages_de.po
+++ b/apps/routerconsole/locale/messages_de.po
@@ -19,16 +19,17 @@
 # nextloop <ga25day@mytum.de>, 2013
 # pirr <pirr@tormail.org>, 2012
 # pirr <pirr@tormail.org>, 2012
+# Forecast <taisto@web.de>, 2015
 # zeroflag <zeroflag@i2pmail.org>, 2013
 # zeroflag <zeroflag@i2pmail.org>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 18:14+0000\n"
-"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/I2P/language/de/)\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-08-21 21:13+0000\n"
+"Last-Translator: Lars Schimmer <echelon@i2pmail.org>\n"
+"Language-Team: German (http://www.transifex.com/otf/I2P/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -46,8 +47,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -56,8 +57,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -66,8 +67,8 @@ msgstr[1] "{0} s"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -76,37 +77,46 @@ msgstr[1] "{0} Minuten"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 Stunde"
 msgstr[1] "{0} Stunden"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "nicht verfügbar"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "einen Tag"
 msgstr[1] "{0} Tage"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 Jahr"
+msgstr[1] "{0} Jahre"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "nicht verfügbar"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "{0,number,###} ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -149,7 +159,7 @@ msgstr "An"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "keine"
@@ -288,43 +298,43 @@ msgstr "Weise Tunnelanfragen zurück: Beende Router"
 msgid "Rejecting tunnels"
 msgstr "Weise Tunnelanfragen zurück"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "Reseede: Bekam Router Informationen aus der Datei ({0} erfolgreich, {1} Fehler)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseeden"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Nur Daten eines Routers per Reseed erhalten"
 msgstr[1] "Nur {0} Routerinformationen per Reseed erhalten"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed fehlgeschlagen"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Für Hilfe, siehe {0}!"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "Konfigurationsseite für das Reseeden"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseed: Hole die Seed-URL"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -364,7 +374,7 @@ msgstr "Bekannte integrierte (FloodFill) Kontakte"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:42
 msgid "Size of tunnel acceptor backlog"
-msgstr ""
+msgstr "Größe des zulässigen Rückstands an Tunnelanfragen"
 
 #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:502
 msgid "NetDb entry"
@@ -394,7 +404,7 @@ msgstr "Unerreichbar auf allen Transporten"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Status"
@@ -409,7 +419,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} wird nur für ausgehende Verbindungen genutzt"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP ist nicht aktiviert."
 
@@ -432,13 +442,13 @@ msgid ""
 msgstr "Um diese Einstellungen zu umgehen, fügen Sie folgende Einstellungen der Seite \"Erweiterte Konfiguration\" hinzu: i2np.ntcp.maxConnections=nnn und i2np.udp.maxConnections=nnn"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definitionen"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -453,7 +463,7 @@ msgstr "Der entfernte Teilnehmer, über seine Router-Prüfsumme erkannt"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Richtung"
 
@@ -480,13 +490,13 @@ msgstr "vergangene Zeit seit ein Paket empfangen/gesendet wurde"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "untätig"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "ein-/ausgehend"
@@ -501,14 +511,14 @@ msgstr "wie lange die Verbindung schon besteht"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "verbunden"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Differenz"
 
@@ -542,7 +552,7 @@ msgstr "Grenzwert zum verzögertem Starten"
 msgid "The round trip time in milliseconds"
 msgstr "Rundenzeit zum Server und zurück in Millisekunden"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -557,7 +567,7 @@ msgstr "derzeit maximale Größe der gesendeten Pakete / geschätzte maximale Gr
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "gesendet"
 
@@ -567,7 +577,7 @@ msgstr "Gesamtanzahl der an den Teilnehmer gesendeten Pakete"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "empfangen"
 
@@ -576,7 +586,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Gesamtanzahl der vom Teilnehmer empfangenen Pakete"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "mehrfach gesendet"
 
@@ -585,7 +595,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Gesamtanzahl der an den Teilnehmer erneut gesendeten Pakete"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "mehrfach empfangen"
 
@@ -624,8 +634,8 @@ msgstr "WAN-PPP-Verbindung"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Laufzeit"
 
@@ -720,17 +730,17 @@ msgid "NTCP connections"
 msgstr "NTCP-Verbindungen"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "obere Grenze"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Timeout"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -743,126 +753,126 @@ msgid "Backlogged?"
 msgstr "Rückstau"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "ankommend"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "abgehend"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} Teilnehmer"
 msgstr[1] "{0} Teilnehmer"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP-Verbindungen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Nach Router-Prüfsumme sortieren"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Richtung/Bekanntmachung"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sortieren nach untätigen eingehenden Verbindungen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sortieren nach untätigen ausgehenden Verbindungen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sortieren nach eingehender Transferrate"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sortieren nach ausgehender Transferrate"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sortieren nach Lebensdauer der Verbindung"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sortieren nach Zeitunterschied"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sortieren nach Größe des Pufferspeichers"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sortieren nach Grenzwert des verzögerten Startens"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sortieren nach Rundenzeit"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sortieren nach Timeout beim erneuten Senden"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sortieren nach maximaler ausgehender Transferpaketgröße"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sortieren nach Anzahl gesendeter Pakete"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sortieren nach Anzahl empfangener Pakete"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sortieren nach Anzahl erneut gesendeter Pakete"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sortieren nach Anzahl mehrfach empfangener Pakete"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Wir bieten an, diese bekannt zu machen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Diese boten an, uns bekannt zu machen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "gedrosselt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 Fehler"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} fehlgeschlagen"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Gesperrt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "im Rückstand"
 
@@ -900,66 +910,66 @@ msgstr "Ignoriere Tunnelanfragen: Hohe Last"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Ignoriere Tunnelanfragen: zu lange Warteschlange"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Neue Version des Zusatzprogramms ist verfügbar ({0})"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Überprüfung auf neue Version des Zusatzprogramms {0} fehlgeschlagen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Keine neue Version des Zusatzprogrammes {0} verfügbar"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}Bytes übertragen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Installation von {0} fehlgeschlagen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Ãœbertragung von {0} fehlgeschlagen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Aktualisierung heruntergeladen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Starte neu"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Aktualisierung verifiziert"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "von {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Unsignierte Aktualisierungsdatei von {0} ist fehlerhaft"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Kopieren nach {0} fehlgeschlagen"
@@ -972,10 +982,10 @@ msgstr "Kopieren nach {0} fehlgeschlagen"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
-msgstr ""
+msgstr "Proxy-Tunnel des HTTP-Clients muss aktiv sein"
 
 #. set status before thread to ensure UI feedback
 #: ../java/src/net/i2p/router/update/DevSU3UpdateHandler.java:91
@@ -986,20 +996,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Aktualisiere"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Netzwerkinterne Aktualisierungen deaktiviert. Schauen Sie im Paket Manager nach."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Keine Schreibberechtigung im I2P Installations Verzeichnis."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Sie müssen zuerst auf Version {0} upgraden."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Benötigt Java Version {0}, Sie haben aber Java Version {1} installiert"
@@ -1189,16 +1199,20 @@ msgid "No new version found at {0}"
 msgstr "Keine neue Version unter {0} gefunden"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "permanent gesperrte IP's"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "vorübergehende Sperrung endet in {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Gesperrt bis zum Neustart oder in {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "Bann aufheben"
 
@@ -1299,18 +1313,18 @@ msgstr "Bann aufheben"
 msgid "I2P Router Console"
 msgstr "I2P-Routerkonsole"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Fehler beim Aktualisieren der Konfiguration - Bitte schauen Sie in die Fehlerprotokolle!"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Konfiguration erfolgreich gespeichert"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1390,7 +1404,7 @@ msgstr "Starten"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:282
 msgid "New client added"
-msgstr "Neuer Klient hinzugefügt"
+msgstr "Neuer Client hinzugefügt"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:287
 msgid "Client configuration saved successfully"
@@ -1518,7 +1532,7 @@ msgid "Add Client"
 msgstr "Klienten hinzufügen"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Klient"
@@ -1550,9 +1564,9 @@ msgid "Plugin"
 msgstr "Zusatzprogramm"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Version"
 
@@ -1574,7 +1588,8 @@ msgstr "Lizenz"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Webseite"
 
@@ -1587,7 +1602,7 @@ msgid "Stop"
 msgstr "Stopp"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Auf Aktualisierungen prüfen"
@@ -1609,7 +1624,7 @@ msgstr "löschen"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1619,7 +1634,7 @@ msgstr "Lösche ausgewähltes"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1638,7 +1653,7 @@ msgstr "Auf Standardwerte zurücksetzen"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1767,8 +1782,8 @@ msgstr "WARNUNG"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Entfernen"
 
@@ -1778,7 +1793,7 @@ msgstr "Klasse auswählen"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Bandbreite"
 
@@ -1787,7 +1802,7 @@ msgid "Home Page"
 msgstr "Homepage"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Netzwerk"
 
@@ -1843,9 +1858,9 @@ msgid "UI"
 msgstr "Benutzerschnittstelle"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnel"
 
@@ -1863,15 +1878,15 @@ msgid "Logging"
 msgstr "Statusmeldungen"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Teilnehmer"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistiken"
 
@@ -1883,8 +1898,8 @@ msgstr "Erweitert"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2145,7 +2160,7 @@ msgstr "Sofortiger Neustart"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Neustart"
 
@@ -2616,8 +2631,8 @@ msgid "User Name"
 msgstr "Benutzername"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Hinzufügen"
 
@@ -2626,91 +2641,91 @@ msgstr "Hinzufügen"
 msgid "Password"
 msgstr "Passwort"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Es wird bereits auf Aktualisierungen geprüft."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Aktualisierung verfügbar; versuche, diese herunterzuladen"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Aktualisierung verfügbar. Klick auf den Knopf links, um sie herunterzuladen!"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Keine Aktualisierung verfügbar"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Aktualisiere die Adresse für Benachrichtigungen auf {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "intern"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Aktualisiere Proxyserver auf {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Aktualisiere den Port des Proxys auf {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Aktualisiere die Häufigkeit des Neuladens auf {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Nie"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Aktualisiere die Aktualisierungsrichtlinien auf {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Aktualisiere die Aktualisierungsadressen auf"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Aktualisiere die vertrauten Schlüssel"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Aktualisiere die Adresse der unsignierten Aktualisierungsdatei auf {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
-msgstr ""
+msgstr "Aktualisiere URL für signierte Entwicklerversionen zu {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Alle"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Nur benachrichtigen"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Nur herunterladen und überprüfen"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Herunterladen, überprüfen und neustarten"
 
@@ -2836,7 +2851,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Keine \"{0}\" Ereignisse gefunden in vorhergehende {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Zeit"
 
@@ -2986,12 +3001,12 @@ msgid "Graph settings saved"
 msgstr "Einstellungen zu Grafiken gespeichert"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Adressbuch"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Verwalten Sie Ihre I2P-Adressen hier (I2P-Namensauflösung)"
 
@@ -3022,17 +3037,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2P-Homepagekonfiguration"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Webmail-Klient für anonyme E-Mail"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "E-Mail"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Hilfe zum I2P-Router"
 
@@ -3042,17 +3057,17 @@ msgid "Router Console"
 msgstr "I2P-Routerkonsole"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Integrierter anonymer BitTorrent-Klient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "BitTorrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Lokaler Webserver"
 
@@ -3221,97 +3236,97 @@ msgstr "Der HTTP-Proxy ist nicht bereit"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Dein Browser ist nicht richtig konfiguriert, um den HTTP-Proxy auf {0} zu benutzen"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Name"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "I2P Job Queue"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Job Runners"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Aktive Jobs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "vor {0} gestartet"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Gerade beendete Jobs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "vor {0} beendet"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Fertige/wartende Jobs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Scheduled Jobs"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} wird in {1} starten"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Gesamte Job Statistik"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "Queued"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Laufend"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "Verworfen"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Avg"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Wartend"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Ãœberblick"
 
@@ -3329,223 +3344,223 @@ msgid "No log messages"
 msgstr "keine Ereignisse"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Lokaler Router"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Routersuche"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Alle Router"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Alle Router mit vollständigen Statistiken"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSets"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "nicht in der Netzwerkdatenbank gefunden"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "lokal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "unveröffentlicht"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Ziel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Zum lokalen Adressbuch hinzufügen"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Wird in {0} ungültig"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Wurde vor {0} ungültig"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Schnittstelle"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Nicht initialisiert"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Netzwerkdatenbank Routerstatistiken"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Anzahl"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transporte"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Land"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Informationen über uns"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Informationen über den Teilnehmer"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Ganzer Eintrag"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Versteckt"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Aktualisiert"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "vor {0}"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Veröffentlicht"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Signierungsschlüssel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adresse(n)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "Kosten"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Versteckt oder Startphase"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU mit Hilfsrouter"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP und SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP und SSU mit Hilfsrouter"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "nur IPv6 SSU, Introducer"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSu"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, Introducer"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, Introducer"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "nur IPv6 NTCP, SSU, Introducer"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Zeit seit letzter Aktualisierung der Benachrichtigungen: {0};"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Zeit seit letzter Prüfung auf neue Benachrichtigungen: {0}"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Neuigkeiten verstecken"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Neuigkeiten anzeigen"
 
@@ -3568,7 +3583,7 @@ msgstr[1] "{0} Zusatzprogramme aktualisiert"
 msgid "Plugin update check complete"
 msgstr "Überprüfung auf Aktualisierungen der Zusatzprogramme abgeschlossen"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3595,19 +3610,19 @@ msgid "Groups (Caps)"
 msgstr "Gruppen (Kategorien)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Geschwindigkeit"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Kapazität"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integration"
 
@@ -3630,7 +3645,7 @@ msgid "Failing"
 msgstr "fehlgeschlagen"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "integriert"
 
@@ -3707,71 +3722,71 @@ msgstr "stündl. Fehlerrate"
 msgid "1d Fail Rate"
 msgstr "tägl. Fehlerrate"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Grenzwerte"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "schnelle Teilnehmer"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "Teilnehmer hoher Kapazität"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "gut integrierte Teilnehmer"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "wie vom Profilorganisator ermittelt"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "Gruppen"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "Werte in der Netzwerkdatenbank, nicht zum Ermitteln der Profile verwendet"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "Kategorien"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "maximaler Durchsatz (Bytes je Tunnel) innerhalb einer Minute, den ein Teilnehmer in einem einzelnen Tunnel erreicht hat"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "Geschwindigkeit"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "Kapazität"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "Wie viele Tunnel können wir bei diesem Teilnehmer innerhalb einer Stunde bekommen?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "Wie viele neue Kontakte hat dieser Teilnehmer uns kürzlich mitgeteilt?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "Integration"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "Ist der Teilnehmer gesperrt, unerreichbar, oder schlagen die Tunneltests fehl?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "Status"
 
@@ -3899,277 +3914,277 @@ msgstr "Ereignisse graphisch darstellen"
 msgid "Lifetime average value"
 msgstr "Durchschnitt über Lebenszeit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Hilfe zum I2P-Router &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Hilfe &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Autostart-Einstellungen der Klienten und WebApplikationen (Services); manuelles Starten der ruhenden Services"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P-Dienste"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Konfiguration des I2P-Routers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Einstellungen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Betrachte die existierenden Tunnel und den Status des Tunnelaufbaus"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Zeige alle bestehenden Verbindungen zu Teilnehmern"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Zeige aktuelle Leistungsprofile der Teilnehmer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profile"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Eine Liste aller bekannten I2P-Router anzeigen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetzDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Gesundheitszustand"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Statusberichte"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Graphische Darstellung der Routerleistung"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Graphen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Statistiken über die Leistung des Routers in Textform"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Lokale Tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Verwaltung der versteckten Services"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Grundsätzliches"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Deine lokale Identität ist deine einzigartige I2P-Routeridentität, ähnlich einer IP-Adresse, jedoch speziell für I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Gib dies niemals irgendjemandem preis, es könnte deine echte IP-Adresse verraten."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "lokale Identität"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Ihre eindeutige I2P-Routeridentifikation ist"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "Verraten Sie sie niemandem!"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "anzeigen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Dies ist die Version von I2P, die aktuell läuft."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Wie lange ist der I2P-Router seit dem letztem Neustart aktiv"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Hilfe bei der Konfiguration Ihrer Firewall und Ihres Routers für eine optimale Leistung."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Mehr Informationen sind im Wiki verfügbar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Warnung: ECDSA ist nicht verfügbar. Aktualisieren Sie Ihr Java oder Betriebssystem"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Einstellungen zur Aktualisierung"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2P-Aktualisierung"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Teilnehmer mit denen wir in den letzen Minuten / Stunden kommuniziert haben"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "aktiv"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Anzahl der für den Aufbau von Klient-Tunneln verfügbaren Teilnehmer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "schnell"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Anzahl der für den Aufbau von Erkundungstunneln verfügbaren Teilnehmer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "hohe Kapazität"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Anzahl der Teilnehmer, die für Anfragen an die Netzwerk-Datenbank zur Verfügung stehen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Gesamtanzahl an Teilnehmern in unserer Netzwerk-Datenbank"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "bekannt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Konfigurieren der Bandbreitenzuweisung des Routers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Bandbreite ein-/ausgehend"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "gesamt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "genutzt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "benutzt zum Aufbau und Testen von Tunneln, sowie der Kommunikation mit Floodfill-Teilnehmern"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Erkundung"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tunnel, die wir zur Verfügung stellen oder nutzen, um auf Dienste im Netzwerk zuzugreifen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Tunnel an denen wir teilnehmen und über die wir direkt Bandbreite für das Netzwerk zur Verfügung stellen"
+msgstr "Tunnel an denen wir teilnehmen, die direkt Bandbreite dem Netzwerk zur Verfügung stellen."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "teilnehmend an"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr " Verhältnis der Tunnelsprünge, die wir dem Netz zur Verfügugn stellen, zu denen, die wir selbst benutzen - ein Wert größer als 1,00 bedeutet einen positiven Beitrag zum I2P-Netzwerk"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Kooperationsfaktor"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Was ist in der Aufgabenliste des Routers?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Aufgaben"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "zeigt die gegenwärtige Leisutng des Routers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Aufgabenverzug"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "zeigt, wie schnell Nachrichten an andere I2P-Router gesendet werden"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Nachrichtenverzug"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Hin- und Rücklaufzeit für einen Tunneltest"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Tunnelverzug"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "wartende Anfragen anderer Router zur Teilnahme in deren Tunneln"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Anfragenrückstau"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Benachrichtigungen &amp; Aktualisierungen"
 
@@ -4273,26 +4288,26 @@ msgstr "Baue Tunnel auf"
 msgid "shared clients"
 msgstr "versch. Klienten"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Klicken Sie auf Neustart zum Installieren der"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Klicken Sie zum Installieren auf Herunterfahren und Neustarten"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Version {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Aktualisierung verfügbar"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Aktualisierung herunterladen ({0})"
@@ -4301,78 +4316,94 @@ msgstr "Aktualisierung herunterladen ({0})"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
-msgstr ""
+msgstr "Signierte Entwickler-<br>version herunterladen:<br>{0}"
 
 #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
-msgstr "unsignierte Aktualisierung herunterladen: {0}"
+msgstr "Unsignierte Aktualisierung herunterladen: {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Hilfe bei der Firewallkonfiguration"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Überprüfe die Netzwerkverbindung und deine NAT/Firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Hole neue Teilnehmerinformationen"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Reihenfolge"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "ganz oben"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Nach oben verschieben"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Nach oben verschieben"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "runter"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "nach unten verschieben"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "ganz unten"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "Zum Ende verschieben"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Markiere eine Sektion zum Hinzuzufügen"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "Ereignisse in {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "gemittelt für {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Ereignisse je Zeitintervall"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "Durchschnitt"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "Jetzt"
 
@@ -4549,175 +4580,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "nach dem Starten die Routerkonsole im Browser anzeigen"
 
 #: ../java/strings/Strings.java:37
-msgid "IRC proxy"
-msgstr "IRC-Brücke"
+msgid "shared clients (DSA)"
+msgstr "mehrere Klienten (DSA)"
 
 #: ../java/strings/Strings.java:38
+msgid "IRC proxy"
+msgstr "IRC-Proxy"
+
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "Eepseite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P-Webserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
-msgstr "HTTP-Brücke"
+msgstr "HTTP-Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
-msgstr "eepBrücke"
+msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
-msgstr "ircBrücke"
+msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klassisch"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "dunkel"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "hell"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "Mitternacht"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Bandbreitenbegrenzer"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "Klienten-Nachrichten"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Verschlüsselung"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "Pool im Netz"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "Auftragswarteschlange"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "NetzwerkDatenbank"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Strom"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Drosselung"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "Host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "Schlüssel"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "Port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "Bandbreite einstellen"
@@ -4886,7 +4869,7 @@ msgid "Share"
 msgstr "für andere zur Benutzung freigegeben"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "HINWEIS"
@@ -4927,7 +4910,7 @@ msgid "Advanced network configuration page"
 msgstr "Erweiterte Netzwerkkonfigurationsseite"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4958,35 +4941,43 @@ msgstr "I2P Erweiterte Konfiguration"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:435
 msgid "Floodfill Configuration"
-msgstr ""
+msgstr "Floodfill-Konfiguration"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:437
 msgid ""
 "Floodill participation helps the network, but may use more of your "
 "computer's resources."
-msgstr ""
+msgstr "Floodfill-Teilnahme hilft dem Netzwerk, kann aber die Systemressourcen stärker beanspruchen."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr "Dieser Router ist zur Zeit Teilnehmer am FloodFill Netz."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr "Dieser Router ist zur Zeit kein Teilnehmer am FloodFill Netz."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Automatisch"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "Erzwingen ein"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Deaktivieren"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Erweiterte I2P-Konfiguration"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Einige Einstellungen benötigen einen Routerneustart, um aktiv zu werden."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "Um Änderungen vorzunehmen, bearbeiten Sie die Datei {0}."
@@ -5359,7 +5350,7 @@ msgstr "IPv4-Konfiguration"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:536
 msgid "Disable inbound (Firewalled by Carrier-grade NAT or DS-Lite)"
-msgstr ""
+msgstr "Deaktiviere eingehende Verbindungen (Firewall ist aktiv)"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:538
 msgid "IPv6 Configuration"
@@ -5789,7 +5780,7 @@ msgstr "Sie haben unter TCP eingehend keinen Hostnamen und Port eingetragen und
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:792
 msgid "Therefore your router cannot accept inbound connections."
-msgstr "Somit kann Ihr Router keine eigehenden Verbindungen akzeptieren."
+msgstr "Somit kann Ihr Router keine eingehenden Verbindungen akzeptieren."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:794
 msgid "Please configure a TCP host and port above or enable UDP."
@@ -5970,11 +5961,11 @@ msgstr "HTTP-Proxy aktivieren?"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:543
 msgid "HTTP Proxy Host"
-msgstr "IP der HTTP-Brücke"
+msgstr "Host des HTTP-Proxys"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:547
 msgid "HTTP Proxy Port"
-msgstr "Port der HTTP-Brücke"
+msgstr "Port des HTTP-Proxys"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:551
 msgid "Use HTTP Proxy Authorization?"
@@ -6367,11 +6358,11 @@ msgstr "Vertraute Schlüssel"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:517
 msgid "Update with signed development builds?"
-msgstr ""
+msgstr "Mit signierten Entwicklerversionen aktualisieren?"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:521
 msgid "Signed Build URL"
-msgstr ""
+msgstr "URL für signierte Aktualisierungen"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:525
 msgid "Update with unsigned development builds?"
@@ -6573,7 +6564,7 @@ msgstr "WebApplikation nicht gefunden"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:348
 msgid "Web Application Not Running"
-msgstr "Web Applikation ist nicht aktiv"
+msgstr "Web-Anwendung nicht aktiv"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:350
 msgid "The requested web application is not running."
@@ -6582,7 +6573,7 @@ msgstr "Die angeforderte Web-Anwendung ist nicht aktiv."
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/nowebapp_jsp.java:352
 #, java-format
 msgid "Please visit the {0}config clients page{1} to start it."
-msgstr ""
+msgstr "Bitte gehen Sie auf die {0}Client-Konfigurationsseite{1} um zu starten."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/peers_jsp.java:146
 msgid "peer connections"
diff --git a/apps/routerconsole/locale/messages_el.po b/apps/routerconsole/locale/messages_el.po
index 55500f5d1435e0ce45c5f15539583dd4565c24b9..a437273bcacb5577b5078fc8b3e13602b0cf52d6 100644
--- a/apps/routerconsole/locale/messages_el.po
+++ b/apps/routerconsole/locale/messages_el.po
@@ -9,12 +9,13 @@
 # Alex <hestia@riseup.net>, 2012
 # lixtetrax <lixtetrax@grhack.net>, 2012
 # lixtetrax <lixtetrax@grhack.net>, 2012
+# LOUKAS SKOUROLIAKOS, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Greek (http://www.transifex.com/projects/p/I2P/language/el/)\n"
 "MIME-Version: 1.0\n"
@@ -34,8 +35,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -44,8 +45,8 @@ msgstr[1] "{0,number,####} μιλιδευτερόλεπτα"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -54,8 +55,8 @@ msgstr[1] "{0} δευτ"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -64,37 +65,46 @@ msgstr[1] "{0} λεπτ"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 ώρα"
 msgstr[1] "{0} ώρες"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "Μ/Δ"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 μέρα"
 msgstr[1] "{0} μέρες"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "Μ/Δ"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -137,10 +147,10 @@ msgstr "Σε"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
-msgstr ""
+msgstr "κανένα"
 
 #. * IPv4 OK, IPv6 OK or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:311
@@ -276,43 +286,43 @@ msgstr "Απόρριψη τούνελ : Κλείσιμο"
 msgid "Rejecting tunnels"
 msgstr "Απόρριψη τούνελ"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Δείτε {0} για βοήθεια."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -382,7 +392,7 @@ msgstr "Μη προσβάσιμο από κανένα μεταφορέα"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Κατάσταση"
@@ -397,7 +407,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} χρησιμοποιείται για εξερχόμενες συνδέσεις μονο"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "Το UPnP δεν είναι ενεργοποιημένο"
 
@@ -420,13 +430,13 @@ msgid ""
 msgstr "Για να θέσετε δικά σας όρια, προσθέστε τα i2np.ntcp.maxConnections=nnn και i2np.udp.maxConnections=nnn στη σελίδα προχωρημένης παραμετροποίησης."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Ορισμοί"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -441,7 +451,7 @@ msgstr "Ο απομακρυσμένος ομότιμος, αναγνωρισμέ
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Κατάλογος"
 
@@ -468,13 +478,13 @@ msgstr "Χρονικό διάστημα από την λήψη/αποστολή
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Αδρανής"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Μέσα/Έξω"
@@ -489,14 +499,14 @@ msgstr "Χρονικό διάστημα από την εγκαθίδρυση α
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Πάνω"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Απόκλιση"
 
@@ -530,7 +540,7 @@ msgstr "Το κατώφλι αργής εκκίνησης"
 msgid "The round trip time in milliseconds"
 msgstr ""
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -545,7 +555,7 @@ msgstr "Τρέχον μέγιστο μέγεθος πακέτου αποστολ
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "Αποστολή"
 
@@ -555,7 +565,7 @@ msgstr "Συνολικός αριθμός πακέτων που εστάλησα
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "Λήψη"
 
@@ -564,7 +574,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Συνολικός αριθμός πακέτων που ελήφθησαν από τον ομότιμο"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Ταυτόσημες TX"
 
@@ -573,7 +583,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Συνολικός αριθμός πακέτων που επανεστάλησαν στον ομότιμο"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Ταυτόσημες RX"
 
@@ -612,8 +622,8 @@ msgstr "Σύνδεση WAN PPP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr ""
 
@@ -708,17 +718,17 @@ msgid "NTCP connections"
 msgstr "NTCP συνδέσεις"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Όριο"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Λήξη Χρόνου"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr ""
 
@@ -731,126 +741,126 @@ msgid "Backlogged?"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Εισερχόμενα"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Εξερχόμενα"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP συνδέσεις"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Ταξινόμηση σύμφωνα με το hash του ομότιμου"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Κατεύθυνση/Εισαγωγή"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Ταξινόμηση σύμφωνα την αδρανή εισερχόμενη"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Ταξινόμηση σύμφωνα την αδρανή εξερχόμενη"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Ταξινόμηση σύμφωνα με ρυθμό εισερχομένων"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Ταξινόμηση σύμφωνα με ρυθμό εξερχομένων"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Ταξινόμηση σύμφωνα με το χρόνο της σύνδεσης"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Ταξινόμηση σύμφωνα με την απόκλιση ρολογιού"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Ταξινόμηση σύμφωνα με το παράθυρο συμφόρησης"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Ταξινόμηση σύμφωνα με το κατώφλιο αργής εκκίνησης"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Ταξινόμηση σύμφωνα με τα απεσταλμένα πακέτα"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Ταξινόμηση σύμφωνα με τα ληφθέντα πακέτα"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Ταξινόμηση σύμφωνα με τον αριθμό πακέτων που επαναμεταδόθηκαν"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Ταξινόμηση σύμφωνα με τον αριθμό των πακέτων που ελήφθησαν πάνω από μια φορά"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Προσφερθήκαμε να τους εισάγουμε"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Προσθέρθηκαν να μας εισάγουν"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 αποτυχία"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} αποτυχίες"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Αποκλεισμένος"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -888,66 +898,66 @@ msgstr "Απόρριψη αιτημάτων για τούνελ: Υψηλό φο
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Απόρριψη αιτημάτων για τούνελ: Χρόνος ουράς αναμονής"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Νέα έκδοση πρόσθετου {0} διαθέσιμη"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Ο έλεγχος για ενημέρωσεις του πρόσθετου {0} απέτυχε"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Δεν υπάρχει νέα έκδοση διαθέσιμη για το πρόσθετο {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0} Bytes μεταφέρθηκαν"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Μεταφορά από {0} απέτυχε"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Η ενημέρωση κατέβηκε"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Γίνεται επανεκκίνηση"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Η ενημέρωση επαληθεύτηκε"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "από {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Το μη υπογεγραμμένο αρχείο ενημέρωσης από {0} είναι κατεστραμμένο"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Αντιγραφή από {0} απέτυχε"
@@ -960,7 +970,7 @@ msgstr "Αντιγραφή από {0} απέτυχε"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -974,20 +984,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Γίνεται ενημέρωση"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1177,16 +1187,20 @@ msgid "No new version found at {0}"
 msgstr "Δεν βρέθηκε νέα έκδοση στο {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr ""
 
@@ -1287,18 +1301,18 @@ msgstr ""
 msgid "I2P Router Console"
 msgstr "Κονσόλα I2P Router"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Σφάλμα κατά την ενημέρωση των ρυθμίσεων - παρακαλούμε δείτε τις καταγραφές λαθών"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Επιτυχής αποθήκευση ρυθμίσεων"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1506,7 +1520,7 @@ msgid "Add Client"
 msgstr "Προσθήκη Πελάτη"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Πελάτης"
@@ -1538,9 +1552,9 @@ msgid "Plugin"
 msgstr "Πρόσθετο"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Έκδοση"
 
@@ -1562,7 +1576,8 @@ msgstr "Άδεια"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Ιστότοπος"
 
@@ -1575,7 +1590,7 @@ msgid "Stop"
 msgstr "Σταμάτα"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Έλεγχος για ενημερώσεις"
@@ -1597,7 +1612,7 @@ msgstr "Διαγραφή"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1607,7 +1622,7 @@ msgstr "Διαγραφή επιλεγμένων"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1626,7 +1641,7 @@ msgstr "Επαναφορά προεπιλογών"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1755,8 +1770,8 @@ msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Αφαίρεση"
 
@@ -1766,7 +1781,7 @@ msgstr "Επιλογή κλάσης για προσθήκη"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Εύρος Ζώνης"
 
@@ -1775,7 +1790,7 @@ msgid "Home Page"
 msgstr "Αρχική Σελίδα"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Δίκτυο"
 
@@ -1831,9 +1846,9 @@ msgid "UI"
 msgstr "Διεπαφή Χρήστη"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Τούνελ"
 
@@ -1851,15 +1866,15 @@ msgid "Logging"
 msgstr "Καταγραφή"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Ομότιμοι"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Στατιστικά"
 
@@ -1871,8 +1886,8 @@ msgstr "Προχωρημένα"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2133,7 +2148,7 @@ msgstr "Επανεκκίνηση αμέσως"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Επανεκκίνηση"
 
@@ -2601,11 +2616,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:172
 msgid "User Name"
-msgstr ""
+msgstr "Ονομα χρήστη"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Προσθήκη"
 
@@ -2614,91 +2629,91 @@ msgstr "Προσθήκη"
 msgid "Password"
 msgstr "Κωδικός"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Διαθέσιμη ενημέρωση, προσπάθεια για κατέβασμα τώρα"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Ενημέρωση διαθέσιμη, πατήστε το κουμπί στα αριστέρα για  κατέβασμα"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Καμιά ενημέρωση διαθέσιμη"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Ενημέρωση του URL ενημέρωσης σε {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "εσωτερικό"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Ενημέρωση της διεύθυνσης του proxy σε {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Ενημέρωση της πόρτας του proxy σε {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Ενημέρωση συχνότητας ανανέωσης σε {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Ποτέ"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Ενημέρωση πολιτικής ενημερώσεων σε {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Ανανέωση των διευθύνσεων URL για ενημερώσεις."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Ενημέρωση κλειδιών εμπιστοσύνης."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Κάθε"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Ειδοποίηση μόνο"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Κατέβασμα και ειδοποίηση μόνο"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Κατέβασμα, επαλήθευση και επανεκκίνηση"
 
@@ -2824,7 +2839,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr ""
 
@@ -2974,12 +2989,12 @@ msgid "Graph settings saved"
 msgstr "Οι ρυθμίσεις των γραφημάτων αποθηκεύτηκαν"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3010,17 +3025,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Ρύθμιση της Αρχικής Σελίδας I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr ""
 
@@ -3030,17 +3045,17 @@ msgid "Router Console"
 msgstr "Κονσόλα Router"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrents"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Τοπικός server ιστού"
 
@@ -3209,97 +3224,97 @@ msgstr "Ο HTTP proxy server δεν είναι σε λειτουργία"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Ο browser σας δεν είναι σωστά ρυθμισμένος να χρησιμοποιεί HTTP proxy στο {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Όνομα"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Περίληψη"
 
@@ -3317,223 +3332,223 @@ msgid "No log messages"
 msgstr "Κανένα μήνυμα καταγραφής"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Αναζήτηση Δρομολογητή"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Όλα οι δρομολογητές"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "δεν βρέθηκε στη βάση δεδομένων του δικτύου"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Τοπικό"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Μη δημοσιευμένο"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Προορισμός"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Λήγει σε {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Έληξε {0} πριν"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Τούνελ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Δεν αρχικοποιήθηκε"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Χώρα"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Τα στοιχεία μας"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Πληροφορίες ομότιμου για"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Πλήρης εγγραφή"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} πριν"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Δημοσιεύτηκε"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Διεύθυνση/εις"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "κόστος"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Κρυμμένο κατά την εκκίνηση"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP και SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Τα νέα ενημερώθηκαν {0} πριν."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Έγινε έλεγχος για νέα {0} πριν."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Κρύψιμο νέων"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Εμφάνιση νέων"
 
@@ -3556,7 +3571,7 @@ msgstr[1] "{0} πρόσθετα ενημερώθηκαν"
 msgid "Plugin update check complete"
 msgstr "Ολοκλήρωση ελέγχου για ενημερώσεις πρόσθετων"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3583,19 +3598,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Ταχύτητα"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Χωρητικότητα"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Ενσωμάτωση"
 
@@ -3618,7 +3633,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Ενσωματωμένος"
 
@@ -3695,71 +3710,71 @@ msgstr "Ρυθμός αποτυχίας 1 ώρας"
 msgid "1d Fail Rate"
 msgstr "Ρυθμός αποτυχίας 1 μέρας"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Κατώφλια"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "γρήγοροι ομότιμοι"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "ομότιμοι υψηλής χωρητικότητας"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "ομάδες"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "δυνατότητες στη βάση δεδομένων δικτύου, netDB, που δεν χρησιμοποιούνται για τον καθορισμό των προφίλ"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "ταχύτητα "
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "χωρητικότητα"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "ενσωμάτωση"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr ""
 
@@ -3887,277 +3902,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P Υπηρεσίες"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Προφίλ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Γραφήματα"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Γενικά"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Τοπική ταυτότητα"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "εμφάνιση"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4261,26 +4276,26 @@ msgstr ""
 msgid "shared clients"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Κάνε κλικ στην επανεκκίνηση για εγκατάσταση"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Κάνε κλικ στο σβήσιμο και στη επανεκκίνησε για εγκατάσταση"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Έκδοση {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Κατέβασμα {0} Ενημερώσεων"
@@ -4289,7 +4304,7 @@ msgstr "Κατέβασμα {0} Ενημερώσεων"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4298,69 +4313,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Κατέβασμα μη υπογεγραμμένης<br>Ενημέρωσης {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Ελέγξτε τη σύνδεση δικτύου και το NAT/firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Επίλεξε μια ενότητα για προσθήκη"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "γεγονότα σε {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Γεγονότα ανά περίοδο"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "μέσος όρος"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "τώρα"
 
@@ -4537,175 +4568,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P webserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "κλασικό"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "σκοτεινό"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "ελαφρύ"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "μεσάνυχτα"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr ""
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2P τούνελ"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Ρεύμα"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "κλειδί"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "πόρτα"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "Ρύθμιση εύρους ζώνης"
@@ -4874,7 +4857,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "ΣΗΜΕΙΩΣΗ"
@@ -4915,7 +4898,7 @@ msgid "Advanced network configuration page"
 msgstr "Σελίδα προχωρημένων ρυθμίσεων δικτύου"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4954,27 +4937,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
@@ -6521,15 +6512,15 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:148
 msgid "logs"
-msgstr "logs"
+msgstr "εγγραφές"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:344
 msgid "I2P Router Logs"
-msgstr "Logs του I2P Router"
+msgstr "Καταχωρήσεις του I2P Router"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:409
 msgid "Critical Logs"
-msgstr "Κρίσιμα logs"
+msgstr "Κρίσιμαες εγγραφές"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:413
 msgid "Router Logs"
diff --git a/apps/routerconsole/locale/messages_en.po b/apps/routerconsole/locale/messages_en.po
index 4d9eee639a8191bf8e071ac9f2c76d45a82a16ac..c6299df22daba7280885d331aa8140288f314047 100644
--- a/apps/routerconsole/locale/messages_en.po
+++ b/apps/routerconsole/locale/messages_en.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P routerconsole\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
+"POT-Creation-Date: 2015-07-17 01:33+0000\n"
 "PO-Revision-Date: 2010-06-15 14:09+0100\n"
 "Last-Translator: duck <duck@mail.i2p>\n"
 "Language-Team: duck <duck@mail.i2p>\n"
@@ -26,8 +26,8 @@ msgstr ""
 #. {0,number,####} prevents 1234 from being output as 1,234 in the English locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -36,8 +36,8 @@ msgstr[1] ""
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -46,8 +46,8 @@ msgstr[1] ""
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -56,37 +56,46 @@ msgstr[1] ""
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr ""
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -129,7 +138,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr ""
@@ -265,43 +274,43 @@ msgstr ""
 msgid "Rejecting tunnels"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -369,7 +378,7 @@ msgstr ""
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr ""
@@ -384,7 +393,7 @@ msgid "{0} is used for outbound connections only"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr ""
 
@@ -407,13 +416,13 @@ msgid ""
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -428,7 +437,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr ""
 
@@ -454,13 +463,13 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr ""
@@ -475,14 +484,14 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr ""
 
@@ -516,7 +525,7 @@ msgstr ""
 msgid "The round trip time in milliseconds"
 msgstr ""
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The standard deviation of the round trip time in milliseconds")).append("<br>\n" +
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The standard deviation of the round trip time in milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
 msgid "The retransmit timeout in milliseconds"
 msgstr ""
@@ -529,7 +538,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr ""
 
@@ -539,7 +548,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr ""
 
@@ -548,7 +557,7 @@ msgid "The total number of packets received from the peer"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr ""
 
@@ -557,7 +566,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr ""
 
@@ -596,8 +605,8 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr ""
 
@@ -691,17 +700,17 @@ msgid "NTCP connections"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr ""
 
@@ -714,126 +723,126 @@ msgid "Backlogged?"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr ""
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -871,66 +880,66 @@ msgstr ""
 msgid "Dropping tunnel requests: Queue time"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr ""
@@ -943,7 +952,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -957,20 +966,20 @@ msgstr ""
 msgid "Updating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1159,16 +1168,20 @@ msgid "No new version found at {0}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr ""
 
@@ -1269,18 +1282,18 @@ msgstr ""
 msgid "I2P Router Console"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1488,7 +1501,7 @@ msgid "Add Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr ""
@@ -1520,9 +1533,9 @@ msgid "Plugin"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr ""
 
@@ -1544,7 +1557,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr ""
 
@@ -1557,7 +1571,7 @@ msgid "Stop"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr ""
@@ -1579,7 +1593,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1589,7 +1603,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1608,7 +1622,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1737,8 +1751,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr ""
 
@@ -1748,7 +1762,7 @@ msgstr ""
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr ""
 
@@ -1757,7 +1771,7 @@ msgid "Home Page"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr ""
 
@@ -1813,9 +1827,9 @@ msgid "UI"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr ""
 
@@ -1833,15 +1847,15 @@ msgid "Logging"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr ""
 
@@ -1853,8 +1867,8 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2115,7 +2129,7 @@ msgstr ""
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr ""
 
@@ -2585,8 +2599,8 @@ msgid "User Name"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr ""
 
@@ -2595,91 +2609,91 @@ msgstr ""
 msgid "Password"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr ""
 
@@ -2805,7 +2819,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr ""
 
@@ -2955,12 +2969,12 @@ msgid "Graph settings saved"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -2991,17 +3005,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr ""
 
@@ -3011,17 +3025,17 @@ msgid "Router Console"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr ""
 
@@ -3186,97 +3200,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3294,223 +3308,223 @@ msgid "No log messages"
 msgstr ""
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr ""
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr ""
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr ""
 
@@ -3533,7 +3547,7 @@ msgstr[1] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3560,19 +3574,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr ""
 
@@ -3595,7 +3609,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr ""
 
@@ -3672,71 +3686,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr ""
 
@@ -3862,276 +3876,276 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4235,26 +4249,26 @@ msgstr ""
 msgid "shared clients"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4262,7 +4276,7 @@ msgstr ""
 #. Note to translators: parameter is a router version, e.g. "0.9.19-16"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4270,69 +4284,85 @@ msgstr ""
 #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
-msgid "avg"
-msgstr ""
-
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
-msgid "max"
+msgid "avg"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+msgid "max"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr ""
 
@@ -4509,175 +4539,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
-msgid "IRC proxy"
+msgid "shared clients (DSA)"
 msgstr ""
 
 #: ../java/strings/Strings.java:38
-msgid "eepsite"
+msgid "IRC proxy"
 msgstr ""
 
 #: ../java/strings/Strings.java:39
-msgid "I2P webserver"
+msgid "eepsite"
 msgstr ""
 
 #: ../java/strings/Strings.java:40
+msgid "I2P webserver"
+msgstr ""
+
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr ""
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr ""
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr ""
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr ""
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr ""
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr ""
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr ""
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr ""
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr ""
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr ""
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr ""
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr ""
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr ""
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr ""
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr ""
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4845,7 +4827,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4886,7 +4868,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4925,27 +4907,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_es.po b/apps/routerconsole/locale/messages_es.po
index fbd02a8fd227f220d80c4c9da8124e3e0c45b05d..c5be1e480dd87ce16e7bbbfe021122a64e795377 100644
--- a/apps/routerconsole/locale/messages_es.po
+++ b/apps/routerconsole/locale/messages_es.po
@@ -23,8 +23,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 17:44+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 02:10+0000\n"
 "Last-Translator: strel\n"
 "Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/es/)\n"
 "MIME-Version: 1.0\n"
@@ -44,8 +44,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -54,8 +54,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -64,8 +64,8 @@ msgstr[1] "{0} s"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -74,37 +74,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 hora"
 msgstr[1] "{0} horas"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/d"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 día"
 msgstr[1] "{0} días"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 año"
+msgstr[1] "{0} años"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/d"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -147,7 +156,7 @@ msgstr "A"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "ninguno"
@@ -286,43 +295,43 @@ msgstr "Rechazando túneles: Apagando"
 msgid "Rejecting tunnels"
 msgstr "Rechazando túneles"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "Resembrado: Se obtuvo la información de routers I2P del fichero ({0} completados, {1} errores)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Resembrando (reseed)"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "El resembrado sólo obtuvo 1 router I2P."
 msgstr[1] "El resembrado sólo obtuvo {0} routers I2P."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "El resembrado falló."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Consulte {0} para obtener ayuda."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "página de configuración del resembrado (reseed)"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Resembrando: Descargando URL de la semilla (seed)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -392,7 +401,7 @@ msgstr "Inaccesible sobre cualquier transporte"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Estado"
@@ -407,7 +416,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} se utiliza sólo para conexiones salientes"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP no está habilitado"
 
@@ -430,13 +439,13 @@ msgid ""
 msgstr "Para rebasar estos límites, añada las configuraciones i2np.ntcp.maxConnections=nnn y i2np.udp.maxConnections=nnn en la página de configuración avanzada."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definiciones"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -451,7 +460,7 @@ msgstr "Par (peer) remoto vía identificador criptrográfico (hash) de su router
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Dir"
 
@@ -478,13 +487,13 @@ msgstr "El tiempo que hace que un paquete ha sido recibido / enviado"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Sin actividad"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Entrada/Salida"
@@ -499,14 +508,14 @@ msgstr "El tiempo que hace que se estableció esta conexión"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Subida"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Desincronización"
 
@@ -540,7 +549,7 @@ msgstr "El umbral del algoritmo de comienzo lento"
 msgid "The round trip time in milliseconds"
 msgstr "El periodo de ida y vuelta en milisegundos"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -555,7 +564,7 @@ msgstr "Tamaño máximo actual de envío de paquete / tamaño máximo estimado d
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "Env"
 
@@ -565,7 +574,7 @@ msgstr "El número total de paquetes enviados al par (peer)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "Rec"
 
@@ -574,7 +583,7 @@ msgid "The total number of packets received from the peer"
 msgstr "El número total de paquetes recibidos del par (peer)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Env dup"
 
@@ -583,7 +592,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "El número total de paquetes enviados de nuevo al par (peer)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Rec dup"
 
@@ -622,8 +631,8 @@ msgstr "Conexión PPP WAN"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Periodo de actividad"
 
@@ -718,17 +727,17 @@ msgid "NTCP connections"
 msgstr "Conexiones NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Límite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Periodo de espera"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -741,126 +750,126 @@ msgid "Backlogged?"
 msgstr "¿Pendiente?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Entrante"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Saliente"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} par"
 msgstr[1] "{0} pares"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Conexiones UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Ordenar por identificador criptográfico (hash) del par"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Dirección/Introducción"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Ordenar por inactividad entrante"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Ordenar por inactividad saliente"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Ordenar por tasa de entrada"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Ordenar por tasa de salida"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Ordenar por duración de la conexión"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Ordenar por desincronización del reloj"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Ordenar por ventana de congestión"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Ordenar por umbral del algoritmo de comienzo lento"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Ordenar por periodo de ida y vuelta"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Ordenar por periodo de espera de retransmisión"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Ordenar por unidad de transmisión máxima de salida"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Ordenar por paquetes enviados"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Ordenar por paquetes recibidos"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Ordenar por paquetes retransmitidos"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Ordenar por paquetes recibidos más de una vez"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Nos hemos ofrecido a introducirles"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Se han ofrecido a introducirnos"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Atascado"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 fallido"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} fallidos"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Excluido"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "pendientes"
 
@@ -898,66 +907,66 @@ msgstr "Descartando solicitudes de túnel: Carga elevada"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Descartando solicitudes de túnel: Tiempo en cola"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Está disponible una nueva versión del complemento {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Fallo al buscar actualizaciones para el complemento {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "No hay ninguna versión nueva disponible para el complemento {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B transferidos"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "La instalación desde {0} falló"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Transferencia fallida de {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Actualización descargada"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Reiniciando"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Actualización verificada"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "de {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "El archivo de actualización no firmado de {0} está dañado"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Fallo al copiar a {0}"
@@ -970,7 +979,7 @@ msgstr "Fallo al copiar a {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "El túnel del proxy del cliente HTTP tiene que estar en marcha"
@@ -984,20 +993,20 @@ msgstr "El túnel del proxy del cliente HTTP tiene que estar en marcha"
 msgid "Updating"
 msgstr "Actualizando"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Las actualizaciones desde el interior de la red están deshabilitadas. Revise el administrador de paquetes."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "No tiene permiso de escritura para el directorio de instalación de I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Primero tiene que actualizar a la versión {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Requiere Java versión {0}, pero la versión instalada de Java es {1}"
@@ -1187,16 +1196,20 @@ msgid "No new version found at {0}"
 msgstr "No se encontró ninguna versión nueva en {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Excluido permanentemente"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "La exclusión temporal caducará en {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Excluido hasta el reinicio o en {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "readmitir ahora"
 
@@ -1297,18 +1310,18 @@ msgstr "readmitir ahora"
 msgid "I2P Router Console"
 msgstr "Consola del router I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Error al actualizar la configuración - por favor revise los registros (logs) de errores"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configuración guardada con éxito"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1516,7 +1529,7 @@ msgid "Add Client"
 msgstr "Añadir cliente"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Cliente"
@@ -1548,9 +1561,9 @@ msgid "Plugin"
 msgstr "Complemento"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versión"
 
@@ -1572,7 +1585,8 @@ msgstr "Licencia"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Sitio web"
 
@@ -1585,7 +1599,7 @@ msgid "Stop"
 msgstr "Detener"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Buscar actualizaciones"
@@ -1607,7 +1621,7 @@ msgstr "Eliminar"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1617,7 +1631,7 @@ msgstr "Eliminar seleccionados"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1636,7 +1650,7 @@ msgstr "Restablecer valores predeterminados"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1765,8 +1779,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Eliminar"
 
@@ -1776,7 +1790,7 @@ msgstr "Seleccione una clase a añadir"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Ancho de banda"
 
@@ -1785,7 +1799,7 @@ msgid "Home Page"
 msgstr "Página principal"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Red"
 
@@ -1841,9 +1855,9 @@ msgid "UI"
 msgstr "Interfaz de usuario"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Túneles"
 
@@ -1861,15 +1875,15 @@ msgid "Logging"
 msgstr "Registro"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Pares (peers)"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Estadísticas"
 
@@ -1881,8 +1895,8 @@ msgstr "Avanzado"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2143,7 +2157,7 @@ msgstr "Reiniciar inmediatamente"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Reiniciar"
 
@@ -2614,8 +2628,8 @@ msgid "User Name"
 msgstr "Nombre de usuario"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Añadir"
 
@@ -2624,91 +2638,91 @@ msgstr "Añadir"
 msgid "Password"
 msgstr "Contraseña"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Actualización o comprobación ya en marcha"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Actualización disponible; tratando de descargarla"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Actualización disponible, pulse el botón de la izquierda para descargarla"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Ninguna actualización disponible"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Actualizando URL de news (usenet) a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "interno"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Actualizando equipo (host) del proxy a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Actualizando puerto del servidor proxy a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Actualizando frecuencia de refresco a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Nunca"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Actualizando política de actualización a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Actualizando URLs de actualización."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Actualizando claves de confianza."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Actualizando URL de actualización no firmada a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr "Actualizando URL de versión firmada a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Cada"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Sólo notificar"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Sólo descargar y verificar"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Descargar, verificar y reiniciar"
 
@@ -2834,7 +2848,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "No se encontraron eventos \"{0}\" en el anterior {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Hora"
 
@@ -2984,12 +2998,12 @@ msgid "Graph settings saved"
 msgstr "Se guardó la configuración de la gráfica"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Addressbook (libreta de direcciones)"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Administre su fichero hosts de I2P aquí (resolución de nombres de dominios I2P)"
 
@@ -3020,17 +3034,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Configuración de la página principal de I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Cliente de correo web anónimo"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Correo electrónico"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Ayuda del router I2P"
 
@@ -3040,17 +3054,17 @@ msgid "Router Console"
 msgstr "Consola del router I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Cliente BitTorrent anónimo integrado"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrents"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Servidor web local"
 
@@ -3219,97 +3233,97 @@ msgstr "El proxy HTTP no está activo"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Su navegador no está correctamente configurado para utilizar el proxy HTTP en {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nombre"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "Cola de tareas de I2P"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Ejecutores de las tareas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Tareas activas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "comenzó hace {0}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Tareas recién finalizadas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "finalizado hace {0}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Listo/esperando tareas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Tareas programadas"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} comenzará en {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Estadística de tareas totales"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Tarea"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "En cola"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Ejecuciones"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "Desestimado"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Media"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Máx"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Mín"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Pendientes"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Resumen"
 
@@ -3327,223 +3341,223 @@ msgid "No log messages"
 msgstr "No hay mensajes de registro (log)"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Router I2P local"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Búsqueda de router I2P"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Todos los routers I2P"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Todos los routers I2P con estadísticas completas"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSets"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router I2P"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "no se encuentra en la base de datos de red"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "No publicado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destino"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Añadir a la libreta de direcciones local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Caduca en {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Caducó hace {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Pasarela (gateway)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Túnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "No inicializado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Estadísticas del router I2P en la base de datos de red"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Recuento"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transportes"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "País"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Información propia"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Información del par para"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Entrada completa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Oculto"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Actualizado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "hace {0}"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publicado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Clave firmante"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Dirección(es)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "coste"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Oculto o iniciándose"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU con introductores"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP y SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP y SSU con introductores"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "SSU-introductores sólo IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "SSU IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "SSU-introductores IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "NTCP IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "NTCP-SSU IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "NTCP-SSU-introductores IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "NTCP-SSU-introductores sólo IPv6"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "News (usenet) actualizadas hace {0}."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "News (usenet) comprobadas hace {0}."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Ocultar news"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Mostrar news"
 
@@ -3566,7 +3580,7 @@ msgstr[1] "{0} complementos actualizados"
 msgid "Plugin update check complete"
 msgstr "Búsqueda de actualizaciones de complementos finalizada"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3593,19 +3607,19 @@ msgid "Groups (Caps)"
 msgstr "Grupos (Capacidades)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Velocidad"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capacidad"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integración"
 
@@ -3628,7 +3642,7 @@ msgid "Failing"
 msgstr "Fallando"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrado"
 
@@ -3705,71 +3719,71 @@ msgstr "Tasa de fallos a 1h"
 msgid "1d Fail Rate"
 msgstr "Tasa de fallos a 1d"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Umbrales"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "pares (peers) rápidos"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "pares de alta capacidad"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "pares bien integrados"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "según lo determinado por el organizador del perfil"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupos"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "capacidades en la base de datos de red (netDb), no se usan para determinar los perfiles"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "capacidades"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "rendimiento máximo (bytes por segundo) durante un periodo de 1 minuto que el par (peer) ha sostenido en un solo túnel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "velocidad"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "capacidad"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "¿a cuántos túneles podemos pedirles que se unan en una hora?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "¿cuántos pares (peers) nuevos nos han indicado ellos últimamente?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integración"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "¿el par está excluido, o es inalcanzable, o están fallando sus tests de túnel?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "estado"
 
@@ -3897,277 +3911,277 @@ msgstr "Graficar recuento de eventos"
 msgid "Lifetime average value"
 msgstr "Valor medio del total de vida"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Ayuda del router I2P y preguntas frecuentes (FAQ)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Ayuda y preguntas frecuentes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Configurar el inicio de clientes y aplicaciones web (servicios); iniciar manualmente servicios inactivos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Servicios I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Configurar router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Datos internos de I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Mostrar túneles existentes y estado de creación de túneles"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Mostrar todas las conexiones actuales con los pares (peers)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Mostrar perfiles de rendimiento de los pares recientes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Perfiles"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Mostrar la lista de todos los routers I2P conocidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB (base de datos de red)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Informe de salud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Registros (logs)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Graficar el rendimiento del router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Gráficos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Estadísticas textuales de rendimiento del router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Túneles locales"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Administrador de servicios ocultos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "General"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Su identidad local es la identificación única de su router I2P, similar a una dirección IP, pero específica de I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "NUNCA LA REVELE A NADIE, ya que puede exponer su dirección IP pública real."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Identidad local"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "La identificación única de su router I2P es "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "NUNCA LA REVELE A NADIE"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "mostrar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "La versión del software I2P que está ejecutando"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "El tiempo que lleva ejecutándose para esta sesión"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Ayuda con la configuración del cortafuegos (firewall) y del router I2P para un rendimiento óptimo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Vea más información en el wiki"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Advertencia: ECDSA no está disponible. Actualice su Java o su sistema operativo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Configurar actualizaciones de I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Actualización de I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Pares (peers) con los que nos hemos comunicado en los últimos minutos / última hora"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Activo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Número de pares disponibles para crear túneles de cliente"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Rápido"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Número de pares disponibles para crear túneles exploratorios"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Alta capacidad"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Número de pares disponibles para consultas a la base de datos de red"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Número total de pares (peers) en nuestra base de datos de red"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Conocidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Configurar asignación de ancho de banda para el router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Ancho de banda de entrada/salida"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Total"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Usado"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Usado para crear y probar túneles, y comunicarse con los pares de inundación (floodfill)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Exploratorios"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Túneles que está usando para proporcionar o acceder a servicios en la red"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Túneles en los que está participando, aportando de forma directa ancho de banda a la red"
+msgstr "Túneles en los que estamos participando, contribuyendo ancho de banda directamente a la red"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Participando en"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "La relación entre el número de saltos de los túneles que proporciona y el número de saltos de los que usa - un valor mayor que 1,00 indica una aportación positiva a la red"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Tasa de compartición"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "¿Qué hay en la cola de tareas del router I2P?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Congestión"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indica el rendimiento del router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Demora de tareas"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indica cómo de rápido se envían mensajes a otros routers I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Demora de mensajes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Duración del viaje de ida y vuelta de un test de túnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Demora de túneles"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Solicitudes en cola de otros routers I2P para participar en túneles"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Peticiones pendientes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "News (usenet) y actualizaciones"
 
@@ -4271,26 +4285,26 @@ msgstr "Creando túneles"
 msgid "shared clients"
 msgstr "clientes compartidos"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Pulse \"Reiniciar\" para instalar"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Pulse \"Apagar\" y reinicie para instalar"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versión {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Actualización disponible"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Descargar actualización {0}"
@@ -4299,7 +4313,7 @@ msgstr "Descargar actualización {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr "Descargar actualización<br>de desarrollo firmada<br>{0}"
@@ -4308,69 +4322,85 @@ msgstr "Descargar actualización<br>de desarrollo firmada<br>{0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Descargar actualización<br>no firmada de {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Ayuda con la configuración del cortafuegos (firewall)"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Comprobar conexión de red y NAT/cortafuegos"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Resembrar (reseed)"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Orden"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Techo"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Mover a la parte superior"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Mover arriba"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Abajo"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "Mover abajo"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Fondo"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "Mover a la parte inferior"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Seleccione una sección a añadir"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "eventos en {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "promediado para {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Eventos por periodo"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "med"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "máx"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "ahora"
 
@@ -4547,175 +4577,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Abrir la consola del router I2P en el navegador web al iniciar el router I2P"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr "clientes compartidos (DSA)"
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "Proxy IRC"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "Servidor web de I2P"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "Proxy HTTP"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "clásico"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "oscuro"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "claro"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "medianoche"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "LimitadorAnchoBanda"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "MensajesClientes"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Cifrado"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "DepósitoTúnelesRed"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "ColaTareas"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "BaseDatosRed"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Stream"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Regulador"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transporte"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "equipo(host)"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "clave"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "puerto"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "configurar ancho de banda"
@@ -4884,7 +4866,7 @@ msgid "Share"
 msgstr "Compartir"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTA"
@@ -4925,7 +4907,7 @@ msgid "Advanced network configuration page"
 msgstr "Página de configuración avanzada de la red"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4964,27 +4946,35 @@ msgid ""
 "computer's resources."
 msgstr "La participación de routers I2P de inundación (floodfills) ayuda a la red, pero puede usar muchos de los recursos de su computadora."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr "Este router I2P es actualmente un participante en la inundación (floodfill)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr "Este router I2P no es actualmente un participante en la inundación (floodfill)."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Automática"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "Forzar activado"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Dehabilitar"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Configuración de I2P avanzada"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Algunos cambios pueden requerir un reinicio para que surtan efecto."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "Para realizar cambios, edite el fichero {0}."
diff --git a/apps/routerconsole/locale/messages_et.po b/apps/routerconsole/locale/messages_et.po
index 2915c6251c7723297e3cd08e74ecb8aade470cf9..a0f34f2b09b778a6b5bfe80bc7dc0fd4952af9c3 100644
--- a/apps/routerconsole/locale/messages_et.po
+++ b/apps/routerconsole/locale/messages_et.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/I2P/language/et_EE/)\n"
 "MIME-Version: 1.0\n"
@@ -31,8 +31,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -41,8 +41,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -51,8 +51,8 @@ msgstr[1] "{0} s"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -61,37 +61,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 tund"
 msgstr[1] "{0} tundi"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "puudub"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 päev"
 msgstr[1] "{0} päeva"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "puudub"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -134,7 +143,7 @@ msgstr "Kuhu"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "puudub"
@@ -273,43 +282,43 @@ msgstr "Keeldun tunnelitest: Välja lülitumine"
 msgid "Rejecting tunnels"
 msgstr "Keeldun tunnelitest"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Hangin ruuterite kontakte"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Kontaktide hankel leiti vaid 1 ruuter."
 msgstr[1] "Kontaktide hankel leiti vaid {0} ruuterit."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Kontaktide hange ei õnnestunud."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Vaata {0} et leida abi."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "kontaktide hanke häälestusleht"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Kontaktide hange: toon loendi URL-i."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -379,7 +388,7 @@ msgstr "Pole ühelgi transpordil kättesaadav"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Staatus"
@@ -394,7 +403,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} kasutatakse vaid välja ühendumiseks"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP pole sisse lülitatud"
 
@@ -417,13 +426,13 @@ msgid ""
 msgstr "Et lubada piire ületada, kehtestage parameeter i2np.ntcp.maxConnections=nnn ning i2np.udp.maxConnections=nnn peenhäälestuse lehel."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definitsioonid"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -438,7 +447,7 @@ msgstr "Kauge ruuter, tuvastatud ruuteri hashi abil"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Suund"
 
@@ -465,13 +474,13 @@ msgstr "Kaua on möödunud viimase paketi saamisest / saatmisest"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Jõude"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Sisse/Välja"
@@ -486,14 +495,14 @@ msgstr "Kaua on möödunud ühenduse loomisest"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Ãœleval"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Ajanihe"
 
@@ -527,7 +536,7 @@ msgstr "Aeglase käivitumise lävi"
 msgid "The round trip time in milliseconds"
 msgstr "Saatmise-kinnituse aeg millisekundites"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -542,7 +551,7 @@ msgstr "Kehtiv suurima saadetava paketi maht / oletatav suurim vastuvõetava pak
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -552,7 +561,7 @@ msgstr "Ruuterile saadetud pakettide koguarv"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -561,7 +570,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Ruuterilt vastuvõetud pakettide koguarv"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "TX dupl"
 
@@ -570,7 +579,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Ruuterile uuesti saadetud pakettide koguarv"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "RX dupl"
 
@@ -609,8 +618,8 @@ msgstr "WAN PPP häälestus"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Tööiga"
 
@@ -705,17 +714,17 @@ msgid "NTCP connections"
 msgstr "NTCP ühendusi"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Piir"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Ajalimiit"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -728,126 +737,126 @@ msgid "Backlogged?"
 msgstr "Ummik?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Sisse"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Välja"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP ühendused"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sorteeri ruuteri hashi järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Suund/Tutvustamine"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sorteeri saabuva jõudeaja järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sorteeri väljuva jõudeaja järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sorteeri saabuva kiiruse järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sorteeri väljuva kiiruse järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sorteeri ühenduse ea järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sorteeri ajanihke järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sorteeri ummikuakna järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sorteeri aeglase käivitumise läve järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sorteeri saatmise-kinnituse viive järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sorteeri uuesti saatmise ajalimiidi järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sorteeri väljuva suurima saateühiku järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sorteeri saadetud pakettide arvu järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sorteeri vastuvõetud pakettide arvu järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sorteeri uuesti saadetud pakettide arvu järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sorteeri mitmekordselt vastuvõetud pakettide arvu järgi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Me pakkusime end neile tutvustajaks"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Nad pakkusid end meile tutvustajaks"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Venib"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 viga"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} viga"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Bännitud"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -885,66 +894,66 @@ msgstr "Eiran tunneliosaluse palveid: Kõrge koormus"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Eiran tunneliosaluse palveid: Pikk järjekord"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Pluginale {0} on uus versioon"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Uuenduste otsing pluginale {0} ebaõnnestus"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Pluginale {0} uut versiooni ei ole"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B laetud"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Laadimine allikast {0} ebaõnnestus"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Uuendus alla laetud"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Käivitun uuesti"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Uuendus kontrollitud"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "allikast {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Allkirjata uuenduse fail allikast {0} on katki"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Ei suutnud kopeerida asukohta {0}"
@@ -957,7 +966,7 @@ msgstr "Ei suutnud kopeerida asukohta {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -971,20 +980,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Uuendan"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1174,16 +1183,20 @@ msgid "No new version found at {0}"
 msgstr "Allikas {0} polnud uut versiooni"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Ajutine bänn, aegub {0} pärast"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Bännitud kuni uuesti käivitumiseni või {0} möödumiseni"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "tühista bänn"
 
@@ -1284,18 +1297,18 @@ msgstr "tühista bänn"
 msgid "I2P Router Console"
 msgstr "I2P ruuteri konsool"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Viga häälestuse uuendamisel - palun vaata vealogi"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Häälestus edukalt salvestatud"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1503,7 +1516,7 @@ msgid "Add Client"
 msgstr "Lisa klient"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Klient"
@@ -1535,9 +1548,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versioon"
 
@@ -1559,7 +1572,8 @@ msgstr "Litsents"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Veebileht"
 
@@ -1572,7 +1586,7 @@ msgid "Stop"
 msgstr "Peata"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Otsi uuendusi"
@@ -1594,7 +1608,7 @@ msgstr "Kustuta"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1604,7 +1618,7 @@ msgstr "Kustuta valitu"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1623,7 +1637,7 @@ msgstr "Taasta vaikimisi"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1752,8 +1766,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Eemalda"
 
@@ -1763,7 +1777,7 @@ msgstr "Vali lisamiseks klass"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Ribalaius"
 
@@ -1772,7 +1786,7 @@ msgid "Home Page"
 msgstr "Avaleht"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Võrk"
 
@@ -1828,9 +1842,9 @@ msgid "UI"
 msgstr "Kasutajaliides"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnelid"
 
@@ -1848,15 +1862,15 @@ msgid "Logging"
 msgstr "Logimine"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Ruuterid"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistika"
 
@@ -1868,8 +1882,8 @@ msgstr "Peenhäälestus"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2130,7 +2144,7 @@ msgstr "Käivitu kohe uuesti"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Käivitu uuesti"
 
@@ -2601,8 +2615,8 @@ msgid "User Name"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr ""
 
@@ -2611,91 +2625,91 @@ msgstr ""
 msgid "Password"
 msgstr "Parool"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Uuendus saadaval, proovin nüüd alla laadida"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Uuendus saadaval, klõpsa vasakul nuppu et alla laadida"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Uuendusi pole"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Uuendan uudiste URL-iks {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Uuendan proxy serveriks {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Proxy pordiks {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Uuendan sageduseks {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Mitte kunagi"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Uuendan uuenduste poliitikaks {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Uuendan uuenduste URL-id."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Uuendan usaldatud võtmeid."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Uuendan allkirjastamata uuenduse URL-iks {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Iga"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Ãœksnes teata"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Lae alla ja kontrolli allkiri"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Lae alla, kontrolli ja käivitu uuesti"
 
@@ -2821,7 +2835,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr ""
 
@@ -2971,12 +2985,12 @@ msgid "Graph settings saved"
 msgstr "Graafikute häälestus salvestatud"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Aadressiraamat"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Halda siit oma I2P nimefaili (I2P domeenide lahendamist)"
 
@@ -3007,17 +3021,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2P Avalehe Konfiguratsioon"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Anonüümne veebimeili klient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "E-post"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P ruuteri abi"
 
@@ -3027,17 +3041,17 @@ msgid "Router Console"
 msgstr "Ruuteri konsool"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Sisseehitatud anonüümne BitTorrenti klient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrentid"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Kohalik veebiserver"
 
@@ -3206,97 +3220,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nimi"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3314,223 +3328,223 @@ msgid "No log messages"
 msgstr "Logis pole sõnumeid"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr ""
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "Lüüsikirjegrupid"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Ruuter"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "ei leitud võrguandmebaasist"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "Lüüsikirjegrupp"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Kohalik"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Avaldamata"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Sihtvõti"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Aegub {0} pärast"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Aegus {0} eest"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Lüüs"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lüüsikirje"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Lähtestamata"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Võrguandmebaasi ruuterite statistika"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Arv"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transpordid"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Maa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Meie info"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Ruuter info ruuterile"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Täielik kirje"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Peidetud"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Uuendatud"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} eest"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Avaldatud"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Aadress(id)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "kulukus"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Peidetud või alles käivitub"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU tutvustajatega"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP ja SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP ja SSU tutvustajatega"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Uudiseid uuendati viimati {0} eest."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Uudiseid kontrolliti viimati {0} eest."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Peida uudised"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Näita uudised"
 
@@ -3553,7 +3567,7 @@ msgstr[1] ""
 msgid "Plugin update check complete"
 msgstr "Plugina uuenduse kontroll sooritatud"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3580,19 +3594,19 @@ msgid "Groups (Caps)"
 msgstr "Grupid (Võimekused)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Kiirus"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Maht"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integratsioon"
 
@@ -3615,7 +3629,7 @@ msgid "Failing"
 msgstr "Läbikukkuvad"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Hästi integreerunud"
 
@@ -3692,71 +3706,71 @@ msgstr "1h ebaõnnestumise tase"
 msgid "1d Fail Rate"
 msgstr "1p ebaõnnestumise tase"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Läved"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "kiired ruuterid"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "suure mahuga ruuterid"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr " hästi integreerunud ruuterid"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "profiili organiseerija vaatepunktist"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupid"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "võimekused võrguandmebaasis, ei kasutata profiilide määramisel"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "võimekused"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "suurim läbilaskevõime (baiti sekundis) 1 minutisel perioodil mida ruuter on ühes tunnelis suutnud saavutada"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "kiirus"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "maht"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "mitmes tunnelis võime neil tunnis osaleda paluda?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "mitmest uuest ruuterist nad meile hiljuti rääkinud on?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integratsioon"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "kas ruuter bännitud, kättesaadamatu või kukub tunnelitestides läbi?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "staatus"
 
@@ -3884,277 +3898,277 @@ msgstr "Graafiku sündmuste arv"
 msgid "Lifetime average value"
 msgstr "Ruuteri tööea keskmine väärtus"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P ruuteri abi &amp; KKK"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Abi &amp; KKK"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Häälesta klientide ja veebirakenduste (teenuste) käivitumist; käivita magavaid teenuseid käsitsi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P teenused"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Häälesta I2P ruuterit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P sisemus"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Vaata tunnelite ja nende ehitamise staatust"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Näita kõiki ühendusi teiste ruuteritega"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Näita hiljutisi ruuterite jõudluse profiile"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profiilid"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Näita nimekirja kõigist tuntud I2P ruuteritest"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "Võrguandmebaas"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Terviseraport"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Logid"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Ruuteri jõudlusgraafikud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Graafikud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Ruuteri jõudlusinfo teksti kujul"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Ãœldine"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Kohalik identiteet"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Sinu I2P ruuteri unikaalne ID on"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "ära seda kellelegi avalda"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "näita"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Kui kaua on ruuter käesolevas sessioonis töötanud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Abi tulemüüri häälestamisel ja ruuteri jõudluse optimeerimisel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Aktiivne"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Kiire"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Suure mahuga"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Tuntud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Häälesta ruuteri ribalaiuse piiranguid"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Ribalaius sisse/välja"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Kokku"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Kasutatud"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Avastamine"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Osalemine"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Jagamistase"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Mis on ruuteri tööde järjekorras?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Ummik"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Töö viive"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Sõnumi viive"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Tunneli viive"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Järjekord"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4258,26 +4272,26 @@ msgstr "Ehitan tunneleid"
 msgid "shared clients"
 msgstr "ühised klienditunnelid"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Käivita uuesti et paigaldada"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Lülita välja et uuesti käivitamisel paigaldada"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versioon {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Lae alla uuendus {0}"
@@ -4286,7 +4300,7 @@ msgstr "Lae alla uuendus {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4295,69 +4309,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Lae alla allkirjata<br>uuendus {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Abi tulemüüri häälestamisel"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Kontrolli võrguühendust ja kohtvõrgu ruuterit/tulemüüri"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Hangi ruuterite kontakte"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "sundmusi {0} vältel"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "{0} keskmine"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Sündmusi perioodi kohta"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "keskm."
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "max"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "nüüd"
 
@@ -4534,175 +4564,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Ava ruuteri konsool brauseris ruuteri käivitumisel"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P veebiserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klassikaline"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "tume"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "hele"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "kesköö"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr ""
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr ""
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "key"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "ribalaiuse häälestus"
@@ -4871,7 +4853,7 @@ msgid "Share"
 msgstr "jagamiseks"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NB"
@@ -4912,7 +4894,7 @@ msgid "Advanced network configuration page"
 msgstr "Võrguseadete peenhäälestuse leht"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4951,27 +4933,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "I2P peenhäälestus"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Mõned muutused vajavad jõustumiseks uuesti käivitamist."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_fi.po b/apps/routerconsole/locale/messages_fi.po
index 5b81a966a6d9487efceb3ab1dedccc2dd5477854..8690dc890c2568ce5e7e61c077f80fa267b9e69c 100644
--- a/apps/routerconsole/locale/messages_fi.po
+++ b/apps/routerconsole/locale/messages_fi.po
@@ -4,6 +4,7 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2015
 # kytv <killyourtv@i2pmail.org>, 2011, 2012
 # kytv <killyourtv@i2pmail.org>, 2011-2012
 # oselotti, 2014
@@ -13,9 +14,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-22 16:16+0000\n"
+"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
 "Language-Team: Finnish (http://www.transifex.com/projects/p/I2P/language/fi/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -34,8 +35,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -44,8 +45,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -54,8 +55,8 @@ msgstr[1] "{0} s"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -64,42 +65,51 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 tunti"
 msgstr[1] "{0} tuntia"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr ""
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 päivä"
 msgstr[1] "{0} päivää"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 vuosi"
+msgstr[1] "{0} vuotta"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "1 ns"
+msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "1 μs"
+msgstr[1] "{0,number,###} μs"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:201
 #, java-format
@@ -128,16 +138,16 @@ msgstr ""
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:959
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:71
 msgid "From"
-msgstr ""
+msgstr "Lähettäjä"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:961
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
 msgid "To"
-msgstr ""
+msgstr "Vastaanottaja"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "ei mitään"
@@ -276,43 +286,43 @@ msgstr "Torjutaan käytäviä: Järjestelmää suljetaan"
 msgid "Rejecting tunnels"
 msgstr "Torjutaan käytäviä"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Lisätietoja kohdasta {0}."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -382,7 +392,7 @@ msgstr ""
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Tila"
@@ -397,7 +407,7 @@ msgid "{0} is used for outbound connections only"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP ei ole käytössä"
 
@@ -420,13 +430,13 @@ msgid ""
 msgstr "Muuttaaksesi näitä rajoja, lisää asetukset i2np.ntcp.maxConnections=nnn ja i2np.udp.maxConnections=nnn erikoisasetussivulla."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Määritelmät"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -441,7 +451,7 @@ msgstr "Vertaissolmu, reitittimen tiivisteen mukaan tunnistettuna."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr ""
 
@@ -468,13 +478,13 @@ msgstr "Milloin on viimeksi lähetetty / vastaanotettu paketti"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Tyhjäkäynti"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Sisään/Ulos"
@@ -489,14 +499,14 @@ msgstr "Milloin tämä yhteys rakennettiin"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Toiminnassa"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Vääristymä"
 
@@ -530,7 +540,7 @@ msgstr ""
 msgid "The round trip time in milliseconds"
 msgstr "Edestakaisen matkan aika millisekunneissa"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -545,7 +555,7 @@ msgstr "Tämänhetkinen suurin lähetettävä paketin koko / arvioitu suurin vas
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -555,7 +565,7 @@ msgstr "Vertaissolmulle lähetettyjen pakettien kokonaismäärä"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -564,7 +574,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Vertaissolmulta vastaanotettujen pakettien kokonaismäärä"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -573,7 +583,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Vertaissolmulle uudelleenlähetettyjen pakettien kokonaismäärä"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -612,8 +622,8 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr ""
 
@@ -708,17 +718,17 @@ msgid "NTCP connections"
 msgstr "NTCP-yhteydet"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Raja"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Aikakatkaisu"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -731,126 +741,126 @@ msgid "Backlogged?"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Sisääntulevia"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Ulosmeneviä"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} vertainen"
 msgstr[1] "{0} vertaista"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP-yhteydet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Järjestä vertaissolmun tiivisteen mukaan."
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Suunta/Esittely"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Järjestä sisääntulevien mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Järjestä ulosmenevien mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Järjestä sisääntulonopeuden mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Järjestä ulosmenonopeuden mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Järjestä yhteyden keston mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Järjestä aikavääristymän mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Järjestä tungosikkunan mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Järjestä edestakaisen matkan keston mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Järjestä uudelleenlähetyksen aikakatkaisun mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Järjestä suurimman siirtäyksikön koon mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Järjestä lähetettyjen pakettien määrän mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Järjestä vastaanotettujen pakettien määrän mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Järjestä uudelleenlähetettyjen pakettien mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Järjestä useammin kuin kerran vastaanotettujen pakettien mukaan"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Me tarjoiduimme esittelemään heidät"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "He tarjoituivat esittelemään meidät"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Tukossa"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 epäonnistuminen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} epäonnistumista"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Estetty"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -888,66 +898,66 @@ msgstr "Pudotetaan käytäväpyyntöjä: Raskas kuorma"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Pudotetaan käytäväpyyntöjä: Jonotusaika"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Päivitys ladattu"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Uudelleenkäynnistetään"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr ""
@@ -960,7 +970,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -974,20 +984,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Päivitetään"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1177,16 +1187,20 @@ msgid "No new version found at {0}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Väliaikainen esto kestää vielä {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Estetty uudelleenkäynnistämiseen saakka tai vielä {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "poista esto nyt"
 
@@ -1287,18 +1301,18 @@ msgstr "poista esto nyt"
 msgid "I2P Router Console"
 msgstr "I2P reitittimen ohjauspaneeli"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Virhe päivitettäessä asetuksia - tarkasta virhelokit."
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1416,7 +1430,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202
 msgid "WebApp"
-msgstr ""
+msgstr "WebApp"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
 msgid "started"
@@ -1437,16 +1451,16 @@ msgstr "Ei määritelty lisäosan URL."
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:421
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:79
 msgid "You must enter a file"
-msgstr ""
+msgstr "Sinun on kirjoitettava tiedosto"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:464
 msgid "Install from file failed"
-msgstr ""
+msgstr "Asennus tiedostosta epäonnistui"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:479
 #, java-format
 msgid "No update URL specified for {0}"
-msgstr ""
+msgstr "Kohteelle {0} ei ole määritelty päivitysverkko-osoitetta"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:488
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:512
@@ -1506,7 +1520,7 @@ msgid "Add Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Asiakas"
@@ -1538,9 +1552,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versio"
 
@@ -1562,7 +1576,8 @@ msgstr "Lupa"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Verkkosivu"
 
@@ -1575,7 +1590,7 @@ msgid "Stop"
 msgstr "Pysäytä"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Tarkista päivitykset"
@@ -1597,7 +1612,7 @@ msgstr "Poista"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1607,7 +1622,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1626,7 +1641,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1635,7 +1650,7 @@ msgstr "Tallenna"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:29
 msgid "Home page changed"
-msgstr ""
+msgstr "Kotisivu vaihtunut"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:51
 msgid "Restored default settings"
@@ -1755,8 +1770,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Poista"
 
@@ -1766,7 +1781,7 @@ msgstr ""
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr ""
 
@@ -1775,7 +1790,7 @@ msgid "Home Page"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Verkko"
 
@@ -1831,9 +1846,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Käytävät"
 
@@ -1851,15 +1866,15 @@ msgid "Logging"
 msgstr "Lokit"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Vertaiset"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Tilastot"
 
@@ -1871,8 +1886,8 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -1919,7 +1934,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:284
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311
 msgid "Invalid port"
-msgstr ""
+msgstr "Virheellinen portti"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:289
 msgid "Updating inbound TCP port to auto"
@@ -2133,7 +2148,7 @@ msgstr "Uudelleenkäynnistä välittömästi"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Uudelleenkäynnistä"
 
@@ -2601,11 +2616,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:172
 msgid "User Name"
-msgstr ""
+msgstr "Käyttäjätunnus"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Lisää"
 
@@ -2614,91 +2629,91 @@ msgstr "Lisää"
 msgid "Password"
 msgstr "Salasana"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Päivitys saatavilla, yritetään ladata nyt"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Päivitys saatavilla, klikkaa nappia vasemmalla ladataksesi"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Päivityksiä ei saatavilla"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "Sisäinen"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Ei koskaan"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Joka"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Vain ilmoita "
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Vain lataa ja varmista"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Lataa, tarkista ja käynnistä"
 
@@ -2728,7 +2743,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:40
 msgid "Critical error"
-msgstr ""
+msgstr "Kriittinen virhe"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:41
 msgid "Installed new version"
@@ -2736,11 +2751,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:42
 msgid "Install failed"
-msgstr ""
+msgstr "Asennus epäonnistui"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:43
 msgid "Network error"
-msgstr ""
+msgstr "Verkkovirhe"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:44
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:48
@@ -2824,7 +2839,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Aika"
 
@@ -2974,12 +2989,12 @@ msgid "Graph settings saved"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Osoitekirja"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3010,17 +3025,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Sähköposti"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P Reitittimen ohje"
 
@@ -3030,17 +3045,17 @@ msgid "Router Console"
 msgstr "Reitittimen ohjauspaneeli"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Sisäänrakennettu anonyymi BitTorrent-asiakasohjelma"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrentit"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Paikallinen web-palvelin"
 
@@ -3085,7 +3100,7 @@ msgstr "UKK"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:47
 msgid "Frequently Asked Questions"
-msgstr ""
+msgstr "Usein Kysytyt Kysymykset"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:48
 msgid "Community forum"
@@ -3148,7 +3163,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:57
 msgid "Pastebin"
-msgstr ""
+msgstr "Pastebin"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:58
 msgid "I2P News"
@@ -3209,97 +3224,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nimi"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "aloitettiin {0} sitten"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Työ"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3317,223 +3332,223 @@ msgid "No log messages"
 msgstr "Ei lokiviestejä"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Paikallinen reititin"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Kaikki reitittimet"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Reititin"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "ei löytynyt verkkotietokannasta"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Paikallinen"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Julkaisematon"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Kohde"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Lisää paikalliseen osoitekirjaan"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Käytävä"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Ei alustettu"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Lukumäärä"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Maa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Meidän tieto"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Päivitetty"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} sitten"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Julkaistu"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Osoitteet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU ja esittelijät"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP ja SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP, SSU ja esittelijät"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 vain SSU, esittelijät"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, esittelijät"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, esittelijät"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 vain NTCP, SSU, esittelijät"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Uutiset viimeksi päivitetty {0} sitten."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Uutiset viimeksi tarkistettu {0} sitten."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Piilota uutiset"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Näytä uutiset"
 
@@ -3556,7 +3571,7 @@ msgstr[1] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3583,19 +3598,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Nopeus"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr ""
 
@@ -3618,7 +3633,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr ""
 
@@ -3695,71 +3710,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "nopeus"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "Kuinka moneen käytävään voimme pyytää heitä osallistumaan tunnissa?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "onko vertaissolmu estetty, saavuttamaton tai epäonnistuu käytäväkokeissa?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr ""
 
@@ -3887,277 +3902,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P Reitittimen ohje &amp; UKK"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Ohje &amp; UKK"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P Palvelut"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "I2P Reitittimen asetukset"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P sisälmykset"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Näytä nykyiset käytävät ja käytävien rakentamistilanne"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profiilit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Listaa kaikki tunnetut I2P reitittimet"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Lokit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Kuvaajat"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Yleinen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Paikallinen identiteetti"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Tämän I2P reitittimen ainutlaatuinen identiteetti on"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "älä koskaan paljasta sitä kenellekään"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "näytä"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Nopea"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Tuttu"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Kaistaa sisään/ulos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Yhteensä"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Käytetty"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Jakosuhde"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Tungos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Käytävän viive"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4261,26 +4276,26 @@ msgstr "Rakentaa käytäviä"
 msgid "shared clients"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versio {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4289,7 +4304,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4298,69 +4313,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "maks"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "nyt"
 
@@ -4537,175 +4568,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P www-palvelin"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "perinteinen"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "tumma"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "vaalea"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "keskiyö"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Salaus"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PKäytävä"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr ""
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "avain"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "portti"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4874,7 +4857,7 @@ msgid "Share"
 msgstr "Jaa"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4915,7 +4898,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4954,27 +4937,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Jotkut muutokset saattavat vaatia uudelleenkäynnistykset tullakseen voimaan."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_fr.po b/apps/routerconsole/locale/messages_fr.po
index 19bacab5184064dc961a63da59fc5020df8a04c4..72a77b54aa2bccf7994892e7ee21733a26792037 100644
--- a/apps/routerconsole/locale/messages_fr.po
+++ b/apps/routerconsole/locale/messages_fr.po
@@ -24,10 +24,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-15 10:36+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-08-14 04:29+0000\n"
 "Last-Translator: Towinet\n"
-"Language-Team: French (http://www.transifex.com/projects/p/I2P/language/fr/)\n"
+"Language-Team: French (http://www.transifex.com/otf/I2P/language/fr/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -45,8 +45,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -55,8 +55,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -65,8 +65,8 @@ msgstr[1] "{0} s"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -75,37 +75,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "{0}h"
 msgstr[1] "{0} heures"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/d"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "{0}j"
 msgstr[1] "{0} jours"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 année"
+msgstr[1] "{0} années"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/d"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -148,7 +157,7 @@ msgstr "Vers"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "aucun"
@@ -241,15 +250,15 @@ msgstr "Rejet des tunnels : démarrage"
 
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:182
 msgid "Rejecting tunnels: High message delay"
-msgstr "Refus de tunnels: (délai de messages élevé)"
+msgstr "Refus de tunnels: délai de messages élevé"
 
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:195
 msgid "Rejecting tunnels: Limit reached"
-msgstr "Refus de tunnels: (limite atteinte)"
+msgstr "Refus de tunnels: limite atteinte"
 
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:227
 msgid "Rejecting most tunnels: High number of requests"
-msgstr "Refuse la plupart des tunnels: (trop de requêtes)"
+msgstr "Refuse la plupart des tunnels: trop de requêtes"
 
 #. hard to do {0} from here
 #. setTunnelStatus("Accepting " + (100-(int)(100.0*probReject)) + "% of
@@ -270,60 +279,60 @@ msgstr "Accepte les tunnels"
 #. always leave at least 4KBps free when allowing
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:336
 msgid "Rejecting tunnels: Bandwidth limit"
-msgstr "Refus de tunnels: (limite de bande passante)"
+msgstr "Refus de tunnels: limite de bande passante"
 
 #. hard to do {0} from here
 #. setTunnelStatus("Rejecting " + ((int)(100.0*probReject)) + "% of tunnels:
 #. Bandwidth limit");
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:406
 msgid "Rejecting most tunnels: Bandwidth limit"
-msgstr "Refuse la plupart des tunnels: (limite de bande passante)"
+msgstr "Refuse la plupart des tunnels: limite de bande passante"
 
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:528
 msgid "Rejecting tunnels: Shutting down"
-msgstr "Refuse les tunnels: (arrêt en cours)"
+msgstr "Refuse les tunnels: arrêt en cours"
 
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:541
 msgid "Rejecting tunnels"
 msgstr "Refus des tunnels"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
-msgstr "Ré-essaimage : ai obtenu des infos de routeur depuis fichier ({0} fructueux, {1} erreurs)."
+msgstr "Ré-essaimage : ai obtenu des infos de routeurs depuis fichier ({0} fructueux, {1} erreurs)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Réamorçage"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Le réamorçage n''a trouvé qu''un seul routeur."
 msgstr[1] "Le réamorçage n''a trouvé que {0} routeurs."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Échec de réamorçage."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Voir {0} pour l'aide."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "page de configuration du réamorçage"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Réamorçage: collecte des URL sources."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -393,7 +402,7 @@ msgstr "Inaccessible sur tous transport"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "État"
@@ -408,7 +417,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} est utilisé seulement pour les connexions sortantes"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP n'est pas activé"
 
@@ -431,13 +440,13 @@ msgid ""
 msgstr "Pour modifier ces limites, ajoutez  les réglages i2np.ntcp.maxConnections=nnn et i2np.udp.maxConnections=nnn dans la configuration avancée."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Définitions"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -452,7 +461,7 @@ msgstr "Le pair distant, identifié par son hachage routeur"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Sens"
 
@@ -479,13 +488,13 @@ msgstr "Temps écoulé depuis la dernière réception/émission d'un paquet "
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "En attente"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Entrant/Sortant"
@@ -500,14 +509,14 @@ msgstr "Depuis combien de temps cette connexion est établie"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "En marche"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Dérive"
 
@@ -541,7 +550,7 @@ msgstr "Seuil de démarrage lent"
 msgid "The round trip time in milliseconds"
 msgstr "Aller-retour en ms"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -556,7 +565,7 @@ msgstr "Taille actuelle maximum de paquet envoyé / taille maximum estimée de p
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -566,7 +575,7 @@ msgstr "Nombre de paquets envoyés au pair"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -575,7 +584,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Nombre de paquets reçus du pair"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "TX dupl."
 
@@ -584,7 +593,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Nombre de paquets retransmis au pair"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "RX dupl."
 
@@ -623,8 +632,8 @@ msgstr "Connexion Internet PPP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Lancé depuis"
 
@@ -719,17 +728,17 @@ msgid "NTCP connections"
 msgstr "Connexions NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Échéance"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -742,149 +751,149 @@ msgid "Backlogged?"
 msgstr "Réinscrit?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Entrant"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Sortant"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} pair"
 msgstr[1] "{0} pairs"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Connexions UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Tri par hachage de pair"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Direction/Introduction"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Tri par entrant inactif"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Tri par sortant inactif"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Tri par taux entrant"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Tri par taux sortant"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Tri par durée de connexion"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Tri par décalage d'horloge"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Tri par fenêtre de congestion"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Tri par seuil de démarrage lent"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Tri par durée d'aller-retour"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Tri pas dépassement de durée de retransmission"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Tri par MTU sortant"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Tri par paquets envoyés"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Tri par paquets reçus"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Tri par paquets renvoyés"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Tri par paquet reçus multiples"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Propositions de présentation à"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Ont proposé leur service"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Choqué"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 échec"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} échecs"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Banni"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "arriéré "
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:250
 msgid "Dropping tunnel requests: Too slow"
-msgstr "Perte de demandes de tunnels: Trop lent"
+msgstr "Perte de demandes de tunnels : trop lent"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:260
 msgid "Dropping tunnel requests: High job lag"
-msgstr "Laisse tomber des demandes de tunnel : Haut décalage de travail"
+msgstr "Laisse tomber des demandes de tunnel : haut décalage de travail"
 
 #. don't even bother, since we are so overloaded locally
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:451
 msgid "Dropping tunnel requests: Overloaded"
-msgstr "Perte de demandes de tunnnels: Surchargé"
+msgstr "Perte de demandes de tunnnels : surchargé"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
 msgid "Rejecting tunnels: Hidden mode"
-msgstr "Rejette les tunnels: mode caché"
+msgstr "Rejette les tunnels : mode caché"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
 msgid "Rejecting tunnels: Request overload"
-msgstr "Rejet de tunnels: surcharge de requêtes "
+msgstr "Rejet de tunnels : surcharge de requêtes "
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:752
 msgid "Rejecting tunnels: Connection limit"
@@ -893,72 +902,72 @@ msgstr "Rejet de tunnels: limite de connexions"
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:964
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:997
 msgid "Dropping tunnel requests: High load"
-msgstr "Perte de tunnels: Forte charge"
+msgstr "Perte de tunnels: forte charge"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:1076
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Demandes de fermeture de tunnel: temps en file d'attente"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "La nouvelle version {0} du greffon est disponible"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Échec de la vérification de mise à jour du greffon {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Pas de nouvelle version pour le greffon {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}o transférés"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Installation échouée depuis {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Échec de transfert depuis {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Mise à jour téléchargée"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Redémarrage en cours"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Mise à jour vérifiée"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "depuis {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Le fichier de mise à jour non signé de {0} est corrompu"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Échec de copie vers {0}"
@@ -971,7 +980,7 @@ msgstr "Échec de copie vers {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "Le tunnel proxy client HTTP doit être en cours de fonctionnement"
@@ -985,20 +994,20 @@ msgstr "Le tunnel proxy client HTTP doit être en cours de fonctionnement"
 msgid "Updating"
 msgstr "Mise à jour en cours"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Mises à jour intra-réseau désactivées. Vérifiez le gestionnaire de paquet."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Pas de permission d'écriture pour le répertoire d'installation I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Vous devez d''abord mettre à jour vers la version {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Nécessite la version {0} Java mais la version Java installée est {1}"
@@ -1188,16 +1197,20 @@ msgid "No new version found at {0}"
 msgstr "Pas de nouvelle trouvée sur {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Banni en permanence"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Le bannissement temporaire expire dans {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Banni jusqu''au redémarrage ou dans {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "lever le bannissement"
 
@@ -1298,18 +1311,18 @@ msgstr "lever le bannissement"
 msgid "I2P Router Console"
 msgstr "Console du routeur I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Erreur pendant la mise à jour de la configuration: contrôlez les historiques"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configuration sauvegardée avec succès"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1348,7 +1361,7 @@ msgstr "Installer le greffon"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:77
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:639
 msgid "Install Plugin from File"
-msgstr "Installer plugin depuis fichier"
+msgstr "Installer plugin depuis le fichier"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:86
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:650
@@ -1517,7 +1530,7 @@ msgid "Add Client"
 msgstr "Ajouter un client"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Clients"
@@ -1549,9 +1562,9 @@ msgid "Plugin"
 msgstr "Greffon"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Version"
 
@@ -1565,7 +1578,7 @@ msgstr "Date"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:273
 msgid "Author"
-msgstr "Autheur"
+msgstr "Auteur"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:289
 msgid "License"
@@ -1573,7 +1586,8 @@ msgstr "Licence"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Site web"
 
@@ -1586,7 +1600,7 @@ msgid "Stop"
 msgstr "Arrêt"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Vérifier les mises à jour"
@@ -1594,7 +1608,7 @@ msgstr "Vérifier les mises à jour"
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:364
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
 msgid "Update"
-msgstr "Mise à jour"
+msgstr "Mettre à jour"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:369
 #, java-format
@@ -1608,7 +1622,7 @@ msgstr "Effacer"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1618,7 +1632,7 @@ msgstr "Efface la sélection"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1637,7 +1651,7 @@ msgstr "Restaurer à l'origine"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1766,8 +1780,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Supprimer"
 
@@ -1777,7 +1791,7 @@ msgstr "Choisissez une classe à ajouter"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Bande passante"
 
@@ -1786,7 +1800,7 @@ msgid "Home Page"
 msgstr "Page d'accueil"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Réseau"
 
@@ -1842,9 +1856,9 @@ msgid "UI"
 msgstr "Apparence"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnels"
 
@@ -1862,15 +1876,15 @@ msgid "Logging"
 msgstr "Historiques"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Pairs"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistiques"
 
@@ -1882,8 +1896,8 @@ msgstr "Avancé"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2106,7 +2120,7 @@ msgstr "Ré-essaimage depuis fichier"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:84
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:91
 msgid "Reseed from file failed"
-msgstr "Échec du ré-essaimage depuis fichier"
+msgstr "Échec de ré-essaimage depuis fichier"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:86
 #, java-format
@@ -2144,7 +2158,7 @@ msgstr "Redémarrer immédiatement"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Redémarrage"
 
@@ -2615,8 +2629,8 @@ msgid "User Name"
 msgstr "Nom d'utilisateur"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Ajout"
 
@@ -2625,91 +2639,91 @@ msgstr "Ajout"
 msgid "Password"
 msgstr "Mot de passe"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Mise à jour ou vérification déjà en cours"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Mise à jour disponible, essai de téléchargement en cours"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Mise à jour disponible, cliquez sur le bouton de gauche pour la télécharger"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Pas de mise à jour disponible"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Mise à jour des nouvelles URL à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "interne"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Mise à jour hôte proxy  à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Mise à jour port proxy à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Mise à jour fréquence de rafraîchissement à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Jamais"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Mise à jour politique de mise à jour à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Mise à jour de l'URL de mises à jour."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Mise à jour des clefs de confiance."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Mise à jour URL de mise à jour non signée à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr "Mise à jour l''URL de la build de développement signée à {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Tou(te)s les"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Notifier seulement"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Télécharger et vérifier seulement"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Télécharger, vérifier et redémarrer"
 
@@ -2835,7 +2849,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Pas d''évènements \"{0}\" trouvés dans le(s) précédent {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Temps"
 
@@ -2985,12 +2999,12 @@ msgid "Graph settings saved"
 msgstr "Réglages des graphiques enregistrés"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Carnet d'adresses"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Gérer votre fichier d'hôtes I2P ici (I2P DNS)"
 
@@ -3021,17 +3035,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Configuration page d'accueil I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Client webmail anonyme"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Messagerie web"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Aide du routeur I2P"
 
@@ -3041,17 +3055,17 @@ msgid "Router Console"
 msgstr "Console du routeur I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Client bittorrent anonyme"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrents"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Serveur web local"
 
@@ -3220,97 +3234,97 @@ msgstr "Le proxy HTTP n'est pas en place"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Votre navigateur n''est pas configuré correctement pour utiliser le proxy HTTP à {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nom"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "File d'attente job de I2P"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Exécuteurs de job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Jobs actifs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "commencé {0} auparavant"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Jobs tout juste finis"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "fini {0} auparavant"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Jobs prêts/en attente"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Jobs prévus"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} va démarrer dans {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Statistiques totales des jobs"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "Mis en file d'attente"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Lancés"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "Laissé tomber"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Moy"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "En suspens"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Sommaire"
 
@@ -3328,223 +3342,223 @@ msgid "No log messages"
 msgstr "Historique vide"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Routeur local"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Regard routeur"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Tous routeurs"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Tous routeurs avec statistiques complètes"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "Jeux de baux"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Routeur"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "non trouvé dans la NetDb"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "Jeu de baux"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Pas publié"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destination"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Ajouter au carnet d'adresses local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Expirera dans {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Périmé il y a {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Passerelle"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Bail"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Pas initialisé"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Statistiques NetDb du routeur "
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Nombre"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transports"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Pays"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Ce routeur"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Informations pair"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Détails"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Caché"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Mise à jour terminée"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "il y a {0}"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publié il y a"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Signature de clé"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adresse(s)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "coût"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Masqué ou en cours de démarrage"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU avec représentants"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP et SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP et SSU avec représentants"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 only SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 NTCP seul, SSU, introducers"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Actualités mises à jour il y a {0}."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
-msgstr "Actualités vérifiés il y a {0}"
+msgstr "Actualités vérifiées il y a {0}."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Cacher les actualités"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Montrer les actualités"
 
@@ -3567,7 +3581,7 @@ msgstr[1] "{0} plugins mis à jour"
 msgid "Plugin update check complete"
 msgstr "Verification de mise à jour de plugin accomplie"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3594,19 +3608,19 @@ msgid "Groups (Caps)"
 msgstr "Groupes (capacités)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Vitesse"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capacité"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Intégration"
 
@@ -3629,7 +3643,7 @@ msgid "Failing"
 msgstr "Défaillant"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Bien intégrés"
 
@@ -3706,71 +3720,71 @@ msgstr "Taux d'échec (1h)"
 msgid "1d Fail Rate"
 msgstr "Taux d'échec (1j)"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Seuils"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "pairs rapides"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "pairs à haute capacités"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "pairs bien intégrés"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "tels que définis par le  gestionnaire de profils"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "Groupes"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "possibilités vues dans la base de données du réseau (non utilisées pour définir les profils)"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "Possib."
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
-msgstr "débit crête (o/s) tenu sur 1mn par le pair sur un seul tunnel"
+msgstr "débit en crête (octets/s) tenu sur 1 mn par le pair sur un seul tunnel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "Vitesse"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "Capacité"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
-msgstr "combien de tunnels nous pouvons lui demander de rejoindre en une heure."
+msgstr "combien de tunnels pouvons-nous lui demander de rejoindre en une heure ?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
-msgstr "sur combien de nouveaux pairs il nous a renseigné récemment."
+msgstr "de combien de nouveaux pairs il nous a-t-il renseigné récemment ?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "Intégration"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
-msgstr "Le pair banni, injoignable ou les tests de tunnels échouent."
+msgstr "le pair est-il banni, injoignable, ou alors les tests de tunnels échouent-ils ?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "État"
 
@@ -3898,277 +3912,277 @@ msgstr "Nombre d'évènements de graphiques"
 msgid "Lifetime average value"
 msgstr "Durée de vie moyenne"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Aide routeur I2P &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Aide &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "configurer le démarrage des clients et des applications web (services); démarrer manuellement les services arrêtés"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Services I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "I2P Routeur Configuration"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Configuration"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "État des tunnels existants et de la création de tunnels"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Afficher toutes les connexions actuelles aux pairs"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Afficher les profils de la performance récente des pairs"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profils"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Afficher tous les routeurs I2P connus"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDb"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Bilan de santé"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Historiques"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Graphique de performances du routeur"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Graphes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Statistiques textuelles de performance du routeur"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Tunnels locaux"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Gestionnaire de services cachés"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Général"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Votre identité locale est votre identité unique de routeur I2P, semblable à une adresse ip, mais adaptée à I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Ne divulguez jamais ceci à personne, car il peut révéler votre IP monde réel."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Identité locale"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "L'identité unique de votre routeur commence par"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "Ne la révélez JAMAIS à PERSONNE ! (Cliquez pour l'afficher)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "Détails"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "La version du logiciel I2P que nous faisons fonctionner"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Durée de cette session"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Aide à la configuration du pare-feu et du routeur pour optimiser les performances d'I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Pour plus d'informations lire le wiki"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Avertissement: ECDSA n'est pas disponible. Mettez à niveau votre Java ou OS"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Configure mises à jour I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Mise à jour I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Pairs auxquels nous avons parlé durant les dernières minutes / heure dernière"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Actifs"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Le nombre de pairs disponibles pour la construction de tunnels exploratoires"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Rapides"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Le nombre de pairs disponibles pour la construction de tunnels exploratoires"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Hautes capacités"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Le nombre de pairs disponibles pour les demandes de bases de données réseau"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Le nombre total de pairs dans notre base de données réseau"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Connus"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Configurer la bande passante du routeur"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Bande passante entrante/sortante"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Totale"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Utilisée"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Utilisés pour construire et tester des tunnels, et communiquer avec les pairs de remplissage par diffusion"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Exploratoires"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tunnels que nous utilisons pour fournir ou accéder à des services sur le réseau"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Tunnels auxquels nous participons, contribuant ainsi directement à la bande passante du réseau"
+msgstr "Tunnels auxquels nous participons, contribuant directement à la bande passante du réseau"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Participants"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "Le ratio de sauts tunnel que nous offrons aux sauts tunnel que nous utilisons - une valeur supérieure à 1,00 indique une contribution positive au réseau"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Rapport de partage"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Afficher la file d'attente de travaux du routeur. "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Charge"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indique la performance du routeur"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Retard de tâches"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indique à quelle vitesse sont envoyés les messages sortants vers d'autres routeurs I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Retard de messages"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Temps aller-retour pour un essai tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Retard de tunnels"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Requêtes en attente issues d'autres routeurs désireux de participer à des tunnels"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "En attente"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Nouvelles et mises à jour"
 
@@ -4272,26 +4286,26 @@ msgstr "Création des tunnels en cours"
 msgid "shared clients"
 msgstr "clients partagés"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Cliquez sur Redémarrer pour installer"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Cliquez sur \"Arrêter\" puis \"Démarrer\" pour installer"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Version {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Mise à jour disponible"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Télécharger la version {0}"
@@ -4300,7 +4314,7 @@ msgstr "Télécharger la version {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr "Télécharger la <br>mise à jour de développement<br> signée {0}"
@@ -4309,69 +4323,85 @@ msgstr "Télécharger la <br>mise à jour de développement<br> signée {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Télécharger la version<br> non signée {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Aide à la configuration du pare-feu"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Vérifier NAT/pare-feu"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Réamorçage"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Ordre"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Haut"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Déplacer tout en haut"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Déplacer vers le haut"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Bas"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "Déplacer vers le bas"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Fond"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "Déplacer tout en bas"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Sélection d'une section à ajouter"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "Évènements en {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "moyenné pour {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Fréquence"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "moy"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "max"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "maintenant"
 
@@ -4548,175 +4578,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Ouvrir la console du routeur dans le navigateur au démarrage"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr "clients partagés (DSA)"
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "proxy IRC"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "Serveur web I2P"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "Mandataire HTTP"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "hôte eeProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "Mandataire IRC"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "Classique"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "Sombre"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "Clair"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "Minuit"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Limiteur de bande passante"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "Messages clients"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Cryptage"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "File d'attente de travaux"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "Base de données du réseau"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "flux"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Régulation"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "UDP"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "hôte"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "clef"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "Configurer la bande passante"
@@ -4885,7 +4867,7 @@ msgid "Share"
 msgstr "Partagés"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTE"
@@ -4926,7 +4908,7 @@ msgid "Advanced network configuration page"
 msgstr "Page de configuration réseau avancée"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4965,27 +4947,35 @@ msgid ""
 "computer's resources."
 msgstr "La participation au Floodfill (remplissage) aide le réseau, mais peut utiliser davantage de ressources de votre ordinateur."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr "Ce routeur est actuellement un participant au remplissage (\"floodfill\")."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr "Ce routeur n'est pas actuellement un participant au remplissage (\"floodfill\")."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Automatique"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "Forcer active"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Désactiver"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Configuration I2P avancée"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Pour prendre effet certains changement nécessitent un redémarrage."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "Pour faire des changements, éditez le fichier {0}."
@@ -5111,7 +5101,7 @@ msgstr "Les greffons listés ci-dessous sont démarrés par le client webConsole
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:616
 msgid "Plugin Installation from URL"
-msgstr "Installation de plugin depuis URL"
+msgstr "Installation de plugin depuis une URL"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:618
 #, java-format
@@ -5124,7 +5114,7 @@ msgstr "Pour installer un greffon, entrez son URL de téléchargement:"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:631
 msgid "Plugin Installation from File"
-msgstr "Installation de plugin depuis fichier"
+msgstr "Installation de plugin depuis un fichier"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:635
 msgid "Install plugin from file."
@@ -6322,7 +6312,7 @@ msgstr "Contrôle de mises à jour"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:451
 msgid "News Updates"
-msgstr "Mises à jour des nouvelles"
+msgstr "Mises à jour des actualités"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:459
 msgid "Update In Progress"
@@ -6342,7 +6332,7 @@ msgstr "Méthode de mise à jour"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:487
 msgid "Fetch news through the eepProxy?"
-msgstr "Récupérer news à travers le eepProxy ?"
+msgstr "Récupérer les actualités à travers l'eepProxy ?"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:491
 msgid "Update through the eepProxy?"
@@ -6382,7 +6372,7 @@ msgstr "L'URL des versions non signées"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:536
 msgid "Updates will be dispatched via your package manager."
-msgstr "Les mises à jours seront relayées par votre gestionnaire de paquets"
+msgstr "Les mises à jour seront relayées par votre gestionnaire de paquets."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/console_jsp.java:146
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:146
diff --git a/apps/routerconsole/locale/messages_hu.po b/apps/routerconsole/locale/messages_hu.po
index c4f2a42e8c9609244f31d98513a2afdbed22ecd0..fee1b5b08475d9c5eee5c53dff88553281ccda59 100644
--- a/apps/routerconsole/locale/messages_hu.po
+++ b/apps/routerconsole/locale/messages_hu.po
@@ -4,15 +4,16 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# benewfy <benewfy@gmail.com>, 2015
 # omgitsadalek <mihalymokus76@gmail.com>, 2013
 # omgitsadalek <mihalymokus76@gmail.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 12:47+0000\n"
+"Last-Translator: benewfy <benewfy@gmail.com>\n"
 "Language-Team: Hungarian (http://www.transifex.com/projects/p/I2P/language/hu/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -31,8 +32,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -41,8 +42,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -51,8 +52,8 @@ msgstr[1] "{0} mp"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -61,37 +62,46 @@ msgstr[1] "{0} perc"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 óra"
 msgstr[1] "{0} óra"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "nem elérhető"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 nap"
 msgstr[1] "{0} nap"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 év"
+msgstr[1] "{0} év"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "nem elérhető"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -134,7 +144,7 @@ msgstr "Ide"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "semmi"
@@ -147,40 +157,40 @@ msgstr "Rendben"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:312
 msgid "IPv4: OK; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: OK; IPv6: Tesztelés"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:313
 msgid "IPv4: OK; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: OK; IPv6: Tűzfalazva"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:314
 msgid "IPv4: Testing; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Tesztelés; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:315
 msgid "IPv4: Firewalled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Tűzfalazva; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:316
 msgid "IPv4: Disabled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Letiltva; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:317
 msgid "IPv4: Symmetric NAT; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Szimmetrikus NAT; IPv6: OK"
 
 #. * IPv4 symmetric NAT, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:319
 msgid "Symmetric NAT"
-msgstr ""
+msgstr "Szimmetrikus NAT"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:320
 msgid "IPv4: Symmetric NAT; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Szimmetrikus NAT; IPv6: Tesztelés"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:321
 msgid "IPv4: Firewalled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Tűzfalazva; IPv6: Tesztelés"
 
 #. * IPv4 firewalled, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:323
@@ -190,29 +200,29 @@ msgstr "Tűzfalazva"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:324
 msgid "IPv4: Testing; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Tesztelés; IPv6: Tűzfalazva"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:325
 msgid "IPv4: Disabled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Letiltva; IPv6: Tesztelés"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:326
 msgid "IPv4: Disabled; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Letiltva; IPv6: Tűzfalazva"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:327
 msgid "Disconnected"
-msgstr ""
+msgstr "Szétkapcsolt"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:328
 msgid "Port Conflict"
-msgstr ""
+msgstr "Port Összeütközés"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:329
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:155
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:722
 msgid "Testing"
-msgstr "Tesztelés alatt"
+msgstr "Tesztelés"
 
 #. NPE, too early
 #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K"))
@@ -273,43 +283,43 @@ msgstr "Alagutak elutasítva: kikapcsolás folyamatban"
 msgid "Rejecting tunnels"
 msgstr "Alagutak elutasítása"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Újratáplálás (reseed) folyamatban"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Az újratáplálás csak 1 routert hozott."
 msgstr[1] "Az újratáplálás csak {0} routert hozott."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Újratáplálás (reseed) sikertelen."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Segítségért lásd {0}."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "újratáplálás (reseed) beállítási oldal"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Újratáplálás: táplálási URL kézbesítése."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -363,7 +373,7 @@ msgstr "Nincs átvitel (rejtett vagy indul)?"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:601
 msgid "Unsupported signature type"
-msgstr ""
+msgstr "Nem támogatott aláírástípus"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:618
 msgid "No support for our signature type"
@@ -379,10 +389,10 @@ msgstr "Egyik átvitelen sem érhető el"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
-msgstr "Státusz"
+msgstr "Állapot"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:692
 msgid "Router Transport Addresses"
@@ -394,7 +404,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "A következő csak kimenő csatlakozásokhoz használva: {0}"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP nincs engedélyezve"
 
@@ -417,13 +427,13 @@ msgid ""
 msgstr "E határok felülírásához a következő beállításokat a haladó beállitások oldalon: i2np.ntcp.maxConnections=nnn és i2np.udp.maxConnections=nnn ."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Meghatározások"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -438,7 +448,7 @@ msgstr "A távoli társ, router hash alapján azonosítva"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Könyvtár"
 
@@ -465,13 +475,13 @@ msgstr "Mennyi idő telt el az utolsó csomag fogadása / küldése óta"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Ãœres"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Be/Ki"
@@ -486,14 +496,14 @@ msgstr "Mennyi ideje lett a kapcsolat létrehozva"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Fel"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Pontatlanság"
 
@@ -527,7 +537,7 @@ msgstr "A lassú indítás határérték"
 msgid "The round trip time in milliseconds"
 msgstr "A körbejárási idő ezredmásodpercben."
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -542,7 +552,7 @@ msgstr "Jelenlegi maximális küldési csomag méret / becsült maximális fogad
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "Küldött"
 
@@ -552,7 +562,7 @@ msgstr "A társnak küldött csomagok teljes száma"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "Fogadott"
 
@@ -561,7 +571,7 @@ msgid "The total number of packets received from the peer"
 msgstr "A társtól érkezett csomagok teljes száma"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Duplex Küldött"
 
@@ -570,7 +580,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "A társnak újraközölt csomagok teljes száma"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Duplex Fogadott"
 
@@ -609,8 +619,8 @@ msgstr "WAP PPP Kapcsolat"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Indítás óta eltelt idő"
 
@@ -649,7 +659,7 @@ msgstr "UPnP Státusz"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:668
 msgid "Disabled UPnP Devices"
-msgstr ""
+msgstr "Letiltott UPnP Készülékek"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:682
 msgid ""
@@ -705,19 +715,19 @@ msgid "NTCP connections"
 msgstr "NTCP kapcsolatok"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Határ"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Időtúllépés"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1361
 msgid "Out Queue"
@@ -728,126 +738,126 @@ msgid "Backlogged?"
 msgstr "Visszanaplózva?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Bejövő"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Kimenő"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "{0} peer"
+msgstr[1] "{0} peer"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP csatlakozások"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Rendezés társ hash szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Irány/Bemutató"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Rendezés üres bejövő szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Rendezés üres kimenő szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Rendezés bejövő sebesség szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Rendezés kimenő sebeeség szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Rendezés kapcsolat indítása óta eltelt idő szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Rendezés óra eltérése szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Rendezés torlódás ablak szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Rendezés lassú indítás küszöb szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Rendezés körbejárási idő szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Rendezés újraátviteli időtúllépés szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Rendezés maximális kimenő továbbítási egységenként"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Rendezés küldött csomagok szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Rendezés fogadott csomagok szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Rendezés újraközvetített csomagok szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Rendezés több, mint egyszer fogadott csomagok szerint"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Fejajánlottuk, hogy bemutatjuk őket"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Felajánlották, hogy bemutatnak minket"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Eltömődött"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 sikertelen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} sikertelen"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Kitiltva"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -866,7 +876,7 @@ msgstr "Alagút kérések elvetése: túlterhelt"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
 msgid "Rejecting tunnels: Hidden mode"
-msgstr ""
+msgstr "Alagutak elvetése: Rejtett mód"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
 msgid "Rejecting tunnels: Request overload"
@@ -885,66 +895,66 @@ msgstr "Alagút kérések elvetése: Magas töltöttség"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Alagút kérések elvetése: Sorba állítási idő"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Elérhető új kiegészítő verzió: {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "{0} kiegészítő frissítés keresése sikertelen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Nincs elérhető új verzió a következő kiegészítőhöz: {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0} B átviltelre került."
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
-msgstr ""
+msgstr "Sikertelen telepítés tőle: {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Sikertelen átvitel a következőtől: {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Frissítés letöltve"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Újraindítás"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Frissítés igazolva"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "innen {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Az aláírás nélküli frissítési fájl korrupt a következőtől: {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Sikertelen másolás a következőre: {0}"
@@ -957,10 +967,10 @@ msgstr "Sikertelen másolás a következőre: {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
-msgstr ""
+msgstr "HTTP kliens proxy alagútnak futnia kell"
 
 #. set status before thread to ensure UI feedback
 #: ../java/src/net/i2p/router/update/DevSU3UpdateHandler.java:91
@@ -971,23 +981,23 @@ msgstr ""
 msgid "Updating"
 msgstr "Frissítés"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
-msgstr ""
+msgstr "Először frissítened kell a {0} verzióra"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
-msgstr ""
+msgstr "{0} Java verzió szükséges, de a telepített Java verzió {1}"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateChecker.java:62
 #, java-format
@@ -1000,7 +1010,7 @@ msgstr "Frissítés keresése a következő kiegészítőhöz: {0}"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:72
 #, java-format
 msgid "Bad URL {0}"
-msgstr ""
+msgstr "Rossz URL {0}"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:95
 #, java-format
@@ -1174,16 +1184,20 @@ msgid "No new version found at {0}"
 msgstr "Nincs új verzió a következőn: {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Ideiglenes kitiltás lejár a következőn belül: {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Kitiltva a következő újraindításig vagy következőn belül: {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "Kitiltás visszavonása most"
 
@@ -1284,18 +1298,18 @@ msgstr "Kitiltás visszavonása most"
 msgid "I2P Router Console"
 msgstr "I2P Router Konzol"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Hiba a beállítások frissítésekor - kérlek, nézd át a hibanaplót"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Beállítások sikeresen elmentve"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1334,7 +1348,7 @@ msgstr "Kiegészítő Telepítése"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:77
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:639
 msgid "Install Plugin from File"
-msgstr ""
+msgstr "Beépülő Telepítése Fájlból"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:86
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:650
@@ -1438,7 +1452,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:464
 msgid "Install from file failed"
-msgstr ""
+msgstr "Sikertelen telepítés fájlból"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:479
 #, java-format
@@ -1457,7 +1471,7 @@ msgstr "Az összes kiegészítő frissítése folyamatban"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:528
 #, java-format
 msgid "Installing plugin from {0}"
-msgstr ""
+msgstr "Beépülő telepítése innen: {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:549
 #, java-format
@@ -1503,7 +1517,7 @@ msgid "Add Client"
 msgstr "Kliens Hozzáadása"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Kliens"
@@ -1535,9 +1549,9 @@ msgid "Plugin"
 msgstr "Kiegészítő"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Verzió"
 
@@ -1559,7 +1573,8 @@ msgstr "Licensz"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Weboldal"
 
@@ -1572,7 +1587,7 @@ msgid "Stop"
 msgstr "Állj"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Frissítések ellenőrzése"
@@ -1594,7 +1609,7 @@ msgstr "Törlés"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1604,7 +1619,7 @@ msgstr "Kiválasztottak Törlése"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1623,7 +1638,7 @@ msgstr "Alapértelmezett Beállítások Visszaállítása"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1752,8 +1767,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Eltávolítás"
 
@@ -1763,7 +1778,7 @@ msgstr "Válassz hozzáadandó osztályt"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Sávszélesség"
 
@@ -1772,7 +1787,7 @@ msgid "Home Page"
 msgstr "Kezdőlap"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Hálózat"
 
@@ -1828,9 +1843,9 @@ msgid "UI"
 msgstr "Kezelőfelület"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Alagút"
 
@@ -1848,15 +1863,15 @@ msgid "Logging"
 msgstr "Naplózás"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Társ"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statisztika"
 
@@ -1868,8 +1883,8 @@ msgstr "Haladó"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -1893,7 +1908,7 @@ msgstr "TCP teljes letiltása"
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:256
 #, java-format
 msgid "Updating TCP address to {0}"
-msgstr ""
+msgstr "TCP cím frissítése erre: {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:263
 msgid "Disabling inbound TCP"
@@ -1906,7 +1921,7 @@ msgstr "Bejövő TCP Cím frissítése a következőhöz (automatikus):"
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:278
 #, java-format
 msgid "Updating TCP port to {0}"
-msgstr ""
+msgstr "TCP port frissítése erre: {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:280
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:305
@@ -1916,7 +1931,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:284
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311
 msgid "Invalid port"
-msgstr ""
+msgstr "Érvénytelen port"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:289
 msgid "Updating inbound TCP port to auto"
@@ -1925,7 +1940,7 @@ msgstr "Bejövő TCP Port frissítése a következőhöz (automatikus):"
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:303
 #, java-format
 msgid "Updating UDP port to {0}"
-msgstr ""
+msgstr "UDP port frissítése erre: {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:328
 msgid "Gracefully restarting into Hidden Router Mode"
@@ -1937,11 +1952,11 @@ msgstr "Türelmes újraindítás a  Rejtett Router Üzemmódból való kilépés
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:339
 msgid "Enabling UPnP"
-msgstr ""
+msgstr "UPnP engedélyezése"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:341
 msgid "Disabling UPnP"
-msgstr ""
+msgstr "UPnP letiltása"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:350
 msgid "Enabling laptop mode"
@@ -1973,7 +1988,7 @@ msgstr "SSU bemutatók szükségesek"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:436
 msgid "Invalid address"
-msgstr ""
+msgstr "Érvénytelen cím"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:442
 #, java-format
@@ -2130,7 +2145,7 @@ msgstr "Azonnali Újraindítás"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Újraindítás"
 
@@ -2355,7 +2370,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:129
 msgid "Moved"
-msgstr ""
+msgstr "Áthelyezve"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:136
 msgid "Saved order of sections."
@@ -2451,7 +2466,7 @@ msgstr "Kimenő opciók"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:471
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:477
 msgid "Add user"
-msgstr ""
+msgstr "Felhasználó hozzáadása"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:63
 msgid "Theme change saved."
@@ -2509,7 +2524,7 @@ msgstr "Észt"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:81
 msgid "Greek"
-msgstr ""
+msgstr "Görög"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:82
 msgid "English"
@@ -2529,7 +2544,7 @@ msgstr "Francia"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:86
 msgid "Hungarian"
-msgstr ""
+msgstr "Magyar"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:87
 msgid "Italian"
@@ -2537,11 +2552,11 @@ msgstr "Olasz"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:88
 msgid "Japanese"
-msgstr ""
+msgstr "Japán"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:89
 msgid "Malagasy"
-msgstr ""
+msgstr "Madagaszkári"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:90
 msgid "Dutch"
@@ -2549,7 +2564,7 @@ msgstr "Holland"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:91
 msgid "Norwegian Bokmaal"
-msgstr ""
+msgstr "Norvég"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:92
 msgid "Polish"
@@ -2562,7 +2577,7 @@ msgstr "Portugál"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:95
 msgid "Romanian"
-msgstr ""
+msgstr "Román"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:96
 msgid "Russian"
@@ -2570,7 +2585,7 @@ msgstr "Orosz"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:97
 msgid "Slovak"
-msgstr ""
+msgstr "Szlovák"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:98
 msgid "Swedish"
@@ -2578,7 +2593,7 @@ msgstr "Svéd"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:99
 msgid "Turkish"
-msgstr ""
+msgstr "Török"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:100
 msgid "Ukrainian"
@@ -2601,8 +2616,8 @@ msgid "User Name"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Hozzáadás"
 
@@ -2611,91 +2626,91 @@ msgstr "Hozzáadás"
 msgid "Password"
 msgstr "Jelszó"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Frissítés elérhető, kísérlet a letöltésre"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Frissítés elérhető, a letöltéshez kattints a bal oldalon lévő gombra"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Nincs elérhető frissítés"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Hírek URL frissítése a következőre: {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "belső"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Proxy hoszt frissítése a következőre: {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Proxy port frissítése a következőre: {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Frissítési gyakoriság frissítése a következőre: {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Soha"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Frissítési házirend frissítése a következőre: {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "A frissítési URL-ek frissítése."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Megbízható kulcsok frissítése."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Nem aláírt frissítő URL frissítése a következőre: {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Összes"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Csak jelez"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Csak letöltés és igazolás"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Letöltés, igazolás és újraindítás"
 
@@ -2725,19 +2740,19 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:40
 msgid "Critical error"
-msgstr ""
+msgstr "Kritikus hiba"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:41
 msgid "Installed new version"
-msgstr ""
+msgstr "Új verzió telepítve"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:42
 msgid "Install failed"
-msgstr ""
+msgstr "Sikertelen telepítés"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:43
 msgid "Network error"
-msgstr ""
+msgstr "Hálózati hiba"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:44
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:48
@@ -2821,17 +2836,17 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
-msgstr ""
+msgstr "Idő"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:182
 msgid "Event"
-msgstr ""
+msgstr "Esemény"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:184
 msgid "Details"
-msgstr ""
+msgstr "Részletek"
 
 #: ../java/src/net/i2p/router/web/FormHandler.java:251
 msgid ""
@@ -2971,12 +2986,12 @@ msgid "Graph settings saved"
 msgstr "Ábra beállítások elmentve"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Címjegyzék"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "I2P hosts fájl kezelése itt (I2P domain név feloldás)"
 
@@ -3007,17 +3022,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2P Kezdőlap Beállítása"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Anoním webes e-mail kliens"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "E-mail"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P Router Segítség"
 
@@ -3027,17 +3042,17 @@ msgid "Router Console"
 msgstr "Router Konzol"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Beépített anoním BitTorrent Kliens"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Helyi web szerver"
 
@@ -3206,97 +3221,97 @@ msgstr "A HTTP proxy nincs bekapcsolva"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "A böngésződ nincs megfelelően beállítva, hogy HTTP proxyt használjon a következőn: {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Név"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
-msgstr ""
+msgstr "Átlag"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
-msgstr ""
+msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
-msgstr ""
+msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Összegzés"
 
@@ -3314,223 +3329,223 @@ msgid "No log messages"
 msgstr "Nincs naplóüzenet"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Helyi router"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Router keresése"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Összes router"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Összes router minden adattal"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSet-ek"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "nem található a hálózati adatbázisban"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Helyi"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Nem közzétett"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Célállomás"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Lejár {0} belül"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Lejárt {0} ezelőtt"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Átjáró (Gateway)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Kiad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Alagút"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Nincs inicializálva"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Hálózati Adatbázis Router Statisztika"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Mennyiség"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Átvitel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Ország"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Mi infónk"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Társ infó a következőnek"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Teljes bejegyzés"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Rejtett"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Frissített"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} előtt"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Közzétett"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Cím(ek)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "költség"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Rejtett vagy indul"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU bemutatókkal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP és SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP és SSU bemutatókkal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
-msgstr ""
+msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
-msgstr ""
+msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
-msgstr ""
+msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Hírek utoljára frissítve: {0} "
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Hírek utoljára ellenőrzve ezelőtt:  {0} "
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Hírek elrejtése"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Hírek mutatása"
 
@@ -3553,7 +3568,7 @@ msgstr[1] "{0} kiegészítő lett frissítve"
 msgid "Plugin update check complete"
 msgstr "Kiegészítők frissítéseinek ellenőrzése elkészült"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3580,19 +3595,19 @@ msgid "Groups (Caps)"
 msgstr "Csoport"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Sebesség"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Kapacitás"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integráltság"
 
@@ -3615,7 +3630,7 @@ msgid "Failing"
 msgstr "Elromló"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrált"
 
@@ -3692,71 +3707,71 @@ msgstr "Sikertelen ráta 1 óra alatt"
 msgid "1d Fail Rate"
 msgstr "Sikertelen ráta 1 nap alatt"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Küszöb"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "gyors társak"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "nagy kapacitású társak"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "jól integrálódott társak"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "ahogy a profil rendezőben meghatározva"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "csoport"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "Adottságok a NetDb-ben, nincs felhasználva a profilok meghatározásához"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "tető"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "csúcs átvilel (bájt / másodperc) az alatt az 1 perces időtartam alatt, melyben a társ egyedülálló alagutat tartott fenn"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "sebesség"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "kapacitás"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "Óránként hány alagútba kérhetjük őket, hogy csatlakozzanak?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "A közelmúltban hány új társról szóltak nekünk?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integráció"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "a társ kitiltva, nem elérhető vagy az alagút tesztjei sikertelenek?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "állapot"
 
@@ -3884,279 +3899,279 @@ msgstr "Ábra Események Száma"
 msgid "Lifetime average value"
 msgstr "Élethossz átlag érték"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P Router Segítség és GYIK"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Segítség és GYIK"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Beállítások a kliensek és webalkalmazások (szolgáltatások) indítására vonatkozóan; elfekvő szolgáltatások kézi indítása"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P Szolgáltatások"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "I2P Router Beállítása"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P Belső"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Létező alagutak és alagút építési állapot megtekintése"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Minden jelenlegi társ csatlakozás megjelenítése"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "A legutóbbi társ teljesítmény profilok megjelenítése"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profil"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Minden ismert I2P router listájának megjelenítése"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Egészségi Állapot"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Napló"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Ábra router teljesítmény"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Ábra"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Szöveges router teljesítmény statisztika"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
-msgstr ""
+msgstr "Helyi Alagutak"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Általános"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Ezt ne tedd közzé, mert tartalmazza az igazi ip címedet."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Helyi Személyazonosság"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Egyedi I2P router azonosítód a következő:"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "soha ne fedd fel senkinek"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "Mutat"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "A futó I2P alkalmazás verziója"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Mióta fut ez a munkaszakasz"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Segítség a tűzfal és router beállítására az I2P optimális teljesítménye érdekében"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "I2P frissítések konfigurálása"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2P frissítés"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Utóbbi percek/óra kapcsolatai"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Aktív"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "A kliens csatornát létrehozó kapcsolatok száma"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Gyors"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Nagy kapacitású"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "A hálózati adatbázisban szereplő összes kapcsolat száma"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Ismert"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "A router szávszélesség elosztásának beállítása"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Sávszélesség Be/Ki"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Összes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Használt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Felderítő"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Résztvevő"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Megosztási ráta"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Mi van a router munka várólistájában?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Torlódás"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "A router teljesítményét szemlélteti"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Feladat késés"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Más I2P routereknek küldött üzenetek gyorsaságát szemlélteti"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Üzenet késés"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Alagút lemaradás"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Vissznapló"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
-msgstr ""
+msgstr "Hírek &amp; Frissítések"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:143
 msgid "ERR-Client Manager I2CP Error - check logs"
@@ -4189,7 +4204,7 @@ msgstr "FIGYELEM-Tűzfalazva és floodfill"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:194
 msgid "Disconnected - check network cable"
-msgstr ""
+msgstr "Szétkapcsolva - ellenőrizd a hálózati kábelt"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:197
 msgid ""
@@ -4215,7 +4230,7 @@ msgstr "Hozzáadás/Eltávolítás/Szerkesztés, valamint saját kliens és szer
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:450
 msgid "Hidden Service"
-msgstr ""
+msgstr "Rejtett Szolgáltatás"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:454
 msgid "Show tunnels"
@@ -4258,26 +4273,26 @@ msgstr "Alagutak építés alatt"
 msgid "shared clients"
 msgstr "osztott kliensek"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Telepítéshez kattints az újraindításra"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Telepítéshez kattints a lekapcsolás és újraindítás -ra"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "{0} Verzió"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
-msgstr ""
+msgstr "Frissítés elérhető"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "{0} Frissítés Letöltése"
@@ -4286,7 +4301,7 @@ msgstr "{0} Frissítés Letöltése"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4295,69 +4310,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Aláírás nélküli<br>Frissítés Letöltése {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Segítség a tűzfal beállításához"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Ellenőrizd a hálózati kapcsolatokat és a NAT-ot/tűzfalat"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Újratáplálás (reseed)"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "Események a következőben: {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "átlagolva a következőhöz: {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Események időszakonként"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "átlag"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "maximum"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "most"
 
@@ -4534,175 +4565,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Indításkor a Router Konzol megnyitása böngészőben"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eep oldal"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P webszerver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klasszikus"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "sötét"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "világos"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "éjfél"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "SávszélességHatároló"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "KliensÃœzenetek"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Titkosítás"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PAlagút"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetKészlet"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "MunkaSor"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "HálózatiAdatbázis"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Stream"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Gát"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Szállítás"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "hoszt"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "kulcs"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "sávszélesség beállítása"
@@ -4871,7 +4854,7 @@ msgid "Share"
 msgstr "Megoszt"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "MEGJEGYZÉS"
@@ -4912,7 +4895,7 @@ msgid "Advanced network configuration page"
 msgstr "Haladó hálózati beállítások lap"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4951,27 +4934,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
-msgid "Automatic"
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
-msgid "Force On"
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+msgid "Automatic"
+msgstr "Automatikus"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
+msgid "Force On"
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Haladó I2P Beállítások"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Némely változtatás érvénybe lépéséhez újraindítás szükséges."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
@@ -5122,7 +5113,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:646
 msgid "Update All Plugins"
-msgstr ""
+msgstr "Összes Beépülő Frissítése"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:150
 msgid "config home"
@@ -5148,7 +5139,7 @@ msgstr ""
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:524
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:416
 msgid "Applications and Configuration"
-msgstr ""
+msgstr "Alkalmazások és Konfiguráció"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:150
 msgid "config keyring"
@@ -5340,7 +5331,7 @@ msgstr "Kísérleti"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:532
 msgid "IPv4 Configuration"
-msgstr ""
+msgstr "IPv4 Konfiguráció"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:536
 msgid "Disable inbound (Firewalled by Carrier-grade NAT or DS-Lite)"
@@ -5348,15 +5339,15 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:538
 msgid "IPv6 Configuration"
-msgstr ""
+msgstr "IPv6 Konfiguráció"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:542
 msgid "Disable IPv6"
-msgstr ""
+msgstr "IPv6 Letiltás"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:546
 msgid "Enable IPv6"
-msgstr ""
+msgstr "IPv6 Engedélyezés"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:550
 msgid "Prefer IPv4 over IPv6"
@@ -6382,14 +6373,14 @@ msgstr "Üdvözöl az I2P"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:336
 msgid "I2P Addressbook"
-msgstr ""
+msgstr "I2P Címjegyzék"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:338
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:339
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:338
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:338
 msgid "Open in new tab"
-msgstr ""
+msgstr "Megnyitás új lapon"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/dns_jsp.java:342
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:343
@@ -6403,7 +6394,7 @@ msgstr ""
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:344
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:344
 msgid "Click here to continue."
-msgstr ""
+msgstr "Kattints ide a folytatáshoz."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:159
 msgid "Internal Error"
@@ -6478,11 +6469,11 @@ msgstr "nem található"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/events_jsp.java:146
 msgid "events"
-msgstr ""
+msgstr "események"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/events_jsp.java:334
 msgid "I2P Event Log"
-msgstr ""
+msgstr "I2P Eseménynapló"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graph_jsp.java:148
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/graphs_jsp.java:146
@@ -6534,11 +6525,11 @@ msgstr "Router Napló"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:419
 msgid "Event Logs"
-msgstr ""
+msgstr "Eseménynaplók"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:421
 msgid "View event logs"
-msgstr ""
+msgstr "Eseménynaplók megtekintése"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:423
 msgid "Service (Wrapper) Logs"
@@ -6604,11 +6595,11 @@ msgstr "Frissítés {0} Kikapcs"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:164
 msgid "torrents"
-msgstr ""
+msgstr "torrentek"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/torrents_jsp.java:336
 msgid "I2P Torrent Downloader"
-msgstr ""
+msgstr "I2P Torrent Letöltő"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/tunnels_jsp.java:146
 msgid "tunnel summary"
@@ -6630,8 +6621,8 @@ msgstr "Profil társanként {0}"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:164
 msgid "webmail"
-msgstr ""
+msgstr "webmail"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:336
 msgid "I2P Webmail"
-msgstr ""
+msgstr "I2P Webmail"
diff --git a/apps/routerconsole/locale/messages_it.po b/apps/routerconsole/locale/messages_it.po
index 921d2f815674865b33039298e2dc73d3f5ec73e4..931aa5c65d9150587c1357a1a24fbcfdde34b717 100644
--- a/apps/routerconsole/locale/messages_it.po
+++ b/apps/routerconsole/locale/messages_it.po
@@ -25,8 +25,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/it/)\n"
 "MIME-Version: 1.0\n"
@@ -46,8 +46,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -56,8 +56,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -66,8 +66,8 @@ msgstr[1] "{0} sec"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -76,37 +76,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 ora"
 msgstr[1] "{0} ore"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/a"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 giorno"
 msgstr[1] "{0} giorni"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/a"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -149,7 +158,7 @@ msgstr "A"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "nessuno"
@@ -288,43 +297,43 @@ msgstr "Rifiutando i tunnel: Arresto"
 msgid "Rejecting tunnels"
 msgstr "Rifiutando i tunnel"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseeding"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Il reseed ha recuperato solo 1 router."
 msgstr[1] "Il reseed ha recuperato solo {0} router."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed fallito"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Guarda {0} per aiuto"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "Pagina di configurazione del reseed"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseed: recupero dell'URL dei seed."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -394,7 +403,7 @@ msgstr "Irraggiungibile su ogni trasporto"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Stato"
@@ -409,7 +418,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} è usato solo per le connessioni in uscita"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP non è abilitato"
 
@@ -432,13 +441,13 @@ msgid ""
 msgstr "Per sistemare questi limiti, aggiungi l'impostazione i2np.ntcp.maxConnections=nnn e i2np.udp.maxConnections=nnn nella pagina di configurazione avanzata."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definizioni"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -453,7 +462,7 @@ msgstr "Peer remoto, identificato dall'hash del router"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Cartella"
 
@@ -480,13 +489,13 @@ msgstr "Quanto è passato dalla ricezione/invio di un pacchetto"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Inattivo"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Entrata/Uscita"
@@ -501,14 +510,14 @@ msgstr "Quanto è passato dall'inizio di questa connessione"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Su"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Disallinea"
 
@@ -542,7 +551,7 @@ msgstr "La soglia di avvio lento"
 msgid "The round trip time in milliseconds"
 msgstr "Tempo di ciclo in millisecondi"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -557,7 +566,7 @@ msgstr "Dimensione corrente massima pacchetti in invio / dimensione massima stim
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -567,7 +576,7 @@ msgstr "Il numero totale di pacchetti inviati al peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -576,7 +585,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Il numero totale di pacchetti ricevuti dal peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -585,7 +594,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Il numero totale di pacchetti ritrasmessi al peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -624,8 +633,8 @@ msgstr "Connessione WAN PPP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Intervallo di attività"
 
@@ -720,17 +729,17 @@ msgid "NTCP connections"
 msgstr "Connessioni NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Intervallo"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -743,126 +752,126 @@ msgid "Backlogged?"
 msgstr "Arretrato?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "In ingresso"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "In uscita"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} peer"
 msgstr[1] "{0} peer"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Connessioni UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Ordina secondo l' hash dei peer"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Direzione/Introduzione"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Ordina secondo il tempo di inattività dei tunnel in entrata"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Ordina secondo il tempo di inattività dei tunnel in uscita"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Ordina secondo la velocità dei tunnel in entrata"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Ordina secondo la velocità dei tunnel in uscita"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Ordina per tempo di connessione"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Ordina secondo la discrepanza di ciclo"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Ordina per finestra di congestione"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Ordina secondo la soglia di avvio lento"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Ordina per tempo di ciclo"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Ordina secondo l'intervallo di ritrasmissione"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Ordina secondo l'unità massima di trasmissione in uscita"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Ordina per pacchetti inviati"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Ordina per pacchetti ricevuti"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Ordina per pacchetti ritrasmessi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Ordina per pacchetti ricevuti più di una volta"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Ci siamo offerti di introdurli"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Hanno offerto di introdurci"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Congestionato"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 fallimento"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} fallimenti"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Bannato"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "ritardi"
 
@@ -900,66 +909,66 @@ msgstr "Abbandono delle richieste tunnel: Carico elevato"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Abbandono delle richieste tunnel: Tempo della coda scaduto"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Una nuova versione del plugin {0} è disponibile"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Controllo aggiornamenti per il plugin {0} fallito"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Nessuna nuova versione del plugin {0} è disponibile"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B trasferiti"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Trasferimento fallito da {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Aggiornamento scaricato"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Riavvio"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Aggiornamento verificato"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "da {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Il file di aggiornamento non firmato ricevuto da {0} è corrotto"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Copia a {0} fallita"
@@ -972,7 +981,7 @@ msgstr "Copia a {0} fallita"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -986,20 +995,20 @@ msgstr ""
 msgid "Updating"
 msgstr "In aggiornamento"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Aggiornamenti in-network disabilitati. Controlla il packet manager."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Non hai i permessi di scrittura per la cartella di installazione di I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Devi prima aggiornare alla versione {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Richiede la versione {0} di Java ma è installata la versione {1}"
@@ -1189,16 +1198,20 @@ msgid "No new version found at {0}"
 msgstr "Nessuna nuova versione trovata a {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Interdizione temporanea che scade in {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Bannato fino al riavvio o in {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "riammissione istantanea"
 
@@ -1299,18 +1312,18 @@ msgstr "riammissione istantanea"
 msgid "I2P Router Console"
 msgstr "Console router I2P "
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Errore nell'aggiornamento della configurazione - vedere i log di errore"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configurazione salvata con successo"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1518,7 +1531,7 @@ msgid "Add Client"
 msgstr "Aggiugi client"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Client"
@@ -1550,9 +1563,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versione"
 
@@ -1574,7 +1587,8 @@ msgstr "Licenza"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Sito web"
 
@@ -1587,7 +1601,7 @@ msgid "Stop"
 msgstr "Ferma"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Verifica aggiornamento"
@@ -1609,7 +1623,7 @@ msgstr "Cancella"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1619,7 +1633,7 @@ msgstr "Elimina selezionati"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1638,7 +1652,7 @@ msgstr "Ripristina"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1767,8 +1781,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Rimuovi"
 
@@ -1778,7 +1792,7 @@ msgstr "Seleziona una classe da aggiungere"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Larghezza di banda"
 
@@ -1787,7 +1801,7 @@ msgid "Home Page"
 msgstr "Pagina Principale"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Rete"
 
@@ -1843,9 +1857,9 @@ msgid "UI"
 msgstr "Interfaccia Utente"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnel"
 
@@ -1863,15 +1877,15 @@ msgid "Logging"
 msgstr "Registro"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Peer"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistiche"
 
@@ -1883,8 +1897,8 @@ msgstr "Avanzate"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2145,7 +2159,7 @@ msgstr "Riavvia immediatamente"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Riavvio"
 
@@ -2616,8 +2630,8 @@ msgid "User Name"
 msgstr "Nome Utente"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Aggiungi"
 
@@ -2626,91 +2640,91 @@ msgstr "Aggiungi"
 msgid "Password"
 msgstr "Password"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Aggiornamento o controllo già in corso"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Aggiornamento disponibile, tentativo di scaricamento in corso"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Aggiornamento disponibile, fai click sul pulsante a sinistra per scaricarlo"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Nessun aggiornamento disponibile"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Aggiornando URL notizie a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "interno"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Aggiornando host proxy a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Aggiornando porta proxy a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Aggiornando frequenza di aggiornamento a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Mai"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Aggiornando politica di aggiornamento a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Aggiornamento degli URL degli aggiornamenti."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Aggiornamento delle chiavi di fiducia."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Aggiornando URL aggiornamenti non firmati a {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Ogni"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Segnala solo"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Scarica e verifica soltanto"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Scarica, verifica e riavvia"
 
@@ -2836,7 +2850,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tempo"
 
@@ -2986,12 +3000,12 @@ msgid "Graph settings saved"
 msgstr "Impostazioni del grafico salvate"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Rubrica"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Gestisci qui i tuoi file host I2P (risoluzione del nome di dominio I2P)"
 
@@ -3022,17 +3036,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Configurazione Pagina Principale I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Client di posta elettronica anonimo"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "E-mail"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Aiuto per il router I2P"
 
@@ -3042,17 +3056,17 @@ msgid "Router Console"
 msgstr "Console del Router"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Client BitTorrent anonimo incorporato"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Server web locale"
 
@@ -3221,97 +3235,97 @@ msgstr "Il proxy HTTP non è avviato"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Il tuo browser non è configurato correttamente per usare il proxy HTTP al {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nome"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "Coda dei Job I2P"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Esecutori dei Job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Job attivi"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "avviato {0} fa"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Job appena terminato"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "terminato {0} fa"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Job pronti/in attesa"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Job pianificati"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} partirà in {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Statistice Job Globali"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Job"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "In coda"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "In esecuzione"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Media"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Pending"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Sommario"
 
@@ -3329,223 +3343,223 @@ msgid "No log messages"
 msgstr "Nessun messaggio di log"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Router locale"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Lookup del router"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Tutti i Router"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Tutti i Router con tutte le statistiche"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "Insiemi di Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "non trovato nel database della rete"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "Serie di Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Locale"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Non pubblicato"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destinazione"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Scade in {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Scaduto {0} fa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Gateway"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Non inizializzata"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Statistiche del Router nel Database della Rete"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Conto"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Trasporti"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Paese"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Informazioni su di noi"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Informazioni del Peer per"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Voce completa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Nascosto"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Aggiornato"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} fa"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Pubblicato"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Indirizzo/i"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "costo"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Nascosto o in avvio"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU con introduttori"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP e SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP e SSU con introduttori"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 solo SSU, presentatori"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, presentatori"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, presentatori"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 solo NTCP, SSU, presentatori"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Notizie aggiornate {0} fa."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Notizie controllate {0} fa."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Nascondi notizie"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Mostra notizie"
 
@@ -3568,7 +3582,7 @@ msgstr[1] "{0} plugin aggiornati"
 msgid "Plugin update check complete"
 msgstr "Controllo nuovi aggiornamenti plugin completato"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3595,19 +3609,19 @@ msgid "Groups (Caps)"
 msgstr "Gruppi (Maiuscole)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Velocità"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capacità"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integrazione"
 
@@ -3630,7 +3644,7 @@ msgid "Failing"
 msgstr "In fallimento"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrato"
 
@@ -3707,71 +3721,71 @@ msgstr "Tasso di fallimento di 1h"
 msgid "1d Fail Rate"
 msgstr "Tasso di fallimento di 1g"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Soglie"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "peer veloci"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "peer ad alta capacità"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "peer ben integrati"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "come determinato dall'organizzatore del profilo"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "gruppi"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "capacità nel database di rete, non usate per determinare profili"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "maiuscole"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "picco di throughput (byte al secondo) che il peer ha sostenuto in un singolo tunnel nell'intervallo di 1 minuto "
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "velocità"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "capacità"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "a quanti tunnel possiamo chiedergli di partecipare in un'ora?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "di quanti peer ci hanno fatto sapere ultimamente?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integrazione"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "per caso il peer è bandito, irraggiungibile, o fallisce i test del tunnel? "
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "stato"
 
@@ -3899,277 +3913,277 @@ msgstr "Grafo Conteggio Eventi "
 msgid "Lifetime average value"
 msgstr "Valore medio nell'arco di vita"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Aiuto &amp Router I2P; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Aiuto &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Configura l'avvio di client e webapps (servizi); avvia manualmente servizi dormienti"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Servizi I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Configura il Router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Interni I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Vedi i tunnel esistenti e lo stato della costruzione dei tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Mostra tutte le connessioni correnti dei peer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Mostra i profili di prestazioni recenti dei peer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profili"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Mostra la lista di tutti i router I2P conosciuti"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Rapporto di salute"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Registri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Grafico delle prestazioni del router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Grafici"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Statistiche testuali delle prestazioni del router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Generale"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "La tua identità locale è rappresentata dall'identità del tuo i2P router, che è simile ad un indirizzo ip ma appartenente alla rete i2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "NON divulgare queste stringhe a nessuno, esse potrebbero rivelare il tuo vero ip."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Identità locale"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "La tua identità unica del router I2P è"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "non rivelarla mai a nessuno"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "mostra"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "La versione di I2P che stai eseguendo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Da quanto tempo stiamo funzionando in questa sessione"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Aiuto nella configurazione del tuo firewall e del tuo router per ottenere prestazioni ottimali da I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Configura aggiornamenti I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Aggiornamento I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Peers con i quali abbiamo comunicato negli ultimi minuti/ultima ora"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Attivo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Numero di peers disponibili per costruire i client-tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Veloce"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Numero di peers disponibili per costruire tunnel di esplorazione"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Alta capacità"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Numero di peers disponibili per le ricerche"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Numero totale di peers nel nostro database di reti"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Conosciuto"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Configura l'allocazione di banda del router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Largheza di banda entrata/uscita"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Totale"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Usato"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Usato per costruire/testare i tunnel e comunicare con i peers di accumulo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Esplorativo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tunnel che stiamo usando per promuovere o accedere a servizi in rete"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Tunnel ai quali contribuiamo facendone parte con la nostra larghezza di banda"
+msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Partecipando"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "Il rapporto tra hops di tunnel che proponiamo rispetto a quelli che usiamo, più il valore si avvicina a 1.00 più contribuiamo alla rete i2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Tasso di condivisione"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Cosa c'è nella coda di lavoro del router?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Congestione"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indica le performance del router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Ritardo nel compito"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indica quanto veloci sono i messaggi in uscita verso gli altri router I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Ritardo nel messaggio"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Test (tempo) di un ciclo tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Lag del tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Richieste in coda da parte di altri routers per partecipare ai tunnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Arretrati"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "News &amp; Aggiornamenti"
 
@@ -4273,26 +4287,26 @@ msgstr "Costruendo i tunnel"
 msgid "shared clients"
 msgstr "client condivisi"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Cliccare Riavvia per installare"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Cliccare Spegni per riavviare e installare"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versione {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Aggiornamento disponibile"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Scaricamento {0} Aggiornamento"
@@ -4301,7 +4315,7 @@ msgstr "Scaricamento {0} Aggiornamento"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4310,69 +4324,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Scaricamento Aggiornamento {0} Non Firmato<br>"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Aiuto con la configurazione del firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Controlla la connessione di rete e il NAT/firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Reseed"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Ordine"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Sopra"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Sotto"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Basso"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Seleziona una sezione da aggiungere"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "eventi in {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "media per {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Eventi per periodo"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "med"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "massimo"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "ora"
 
@@ -4549,175 +4579,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Apri la console del router nel browser all'avvio"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "Proxy IRC"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "Webserver I2P"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "Proxy HTTP"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "classico"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "scuro"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "luminoso"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "mezzanotte"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Limitatore di Banda"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "Messaggi Client"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Cifratura"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "Tunnel I2P"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "Coda Lavori"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "Database di Rete"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Flusso"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Velocità"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Trasporto"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "chiave"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "porta"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "configura larghezza di banda"
@@ -4886,7 +4868,7 @@ msgid "Share"
 msgstr "Condivisione"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTA"
@@ -4927,7 +4909,7 @@ msgid "Advanced network configuration page"
 msgstr "Pagina di configurazione avanzata della rete"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4966,27 +4948,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Configurazione avanzata I2P"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Certi cambiamenti possono richiedere un riavvio per avere effetto."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_ja.po b/apps/routerconsole/locale/messages_ja.po
index 1da892428e54dd5474e77562900d3e64acb51c69..dd3e9b6348dbcdb21e140d1b6b5a3ee5400da565 100644
--- a/apps/routerconsole/locale/messages_ja.po
+++ b/apps/routerconsole/locale/messages_ja.po
@@ -6,7 +6,8 @@
 # Translators:
 # a1678991 <nfgantanku@yahoo.co.jp>, 2015
 # g3600303 <g3600303@trbvm.com>, 2015
-# タカハシ <gomidori@live.jp>, 2013-2014
+# タカハシ <indexial@outlook.jp>, 2013-2014
+# タカハシ <indexial@outlook.jp>, 2015
 # luixxiul, 2013
 # rafe <rafe.kun@gmail.com>, 2015
 # rafe <rafe.kun@gmail.com>, 2015
@@ -16,10 +17,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-16 09:35+0000\n"
-"Last-Translator: g3600303 <g3600303@trbvm.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/ja/)\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-08-31 09:17+0000\n"
+"Last-Translator: タカハシ <indexial@outlook.jp>\n"
+"Language-Team: Japanese (http://www.transifex.com/otf/I2P/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -37,8 +38,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -46,8 +47,8 @@ msgstr[0] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -55,8 +56,8 @@ msgstr[0] "{0} 秒"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -64,38 +65,46 @@ msgstr[0] "{0} 分"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "{0} 時間"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/a"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "{0} æ—¥"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "{0} å¹´"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/a"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
-msgstr[0] ""
+msgstr[0] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
-msgstr[0] ""
+msgstr[0] "{0,number,###} μs"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:201
 #, java-format
@@ -133,7 +142,7 @@ msgstr "送信先"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "なし"
@@ -146,40 +155,40 @@ msgstr "OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:312
 msgid "IPv4: OK; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: OK; IPv6: テスト中"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:313
 msgid "IPv4: OK; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: OK; IPv6: ファイアーウォール有効"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:314
 msgid "IPv4: Testing; IPv6: OK"
-msgstr ""
+msgstr "IPv4: テスト中; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:315
 msgid "IPv4: Firewalled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: ファイアーウォール有効; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:316
 msgid "IPv4: Disabled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: 無効; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:317
 msgid "IPv4: Symmetric NAT; IPv6: OK"
-msgstr ""
+msgstr "IPv4: 対称型NAT; IPv6: OK"
 
 #. * IPv4 symmetric NAT, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:319
 msgid "Symmetric NAT"
-msgstr ""
+msgstr "対称型NAT"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:320
 msgid "IPv4: Symmetric NAT; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: 対称型NAT; IPv6: テスト中"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:321
 msgid "IPv4: Firewalled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: ファイアーウォール有効; IPv6: テスト中"
 
 #. * IPv4 firewalled, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:323
@@ -189,23 +198,23 @@ msgstr "警告-ファイアーウォールされ、高速"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:324
 msgid "IPv4: Testing; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: テスト中; IPv6: ファイアーウォール有効"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:325
 msgid "IPv4: Disabled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: 無効; IPv6: テスト中"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:326
 msgid "IPv4: Disabled; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: 無効; IPv6: ファイアーウォール有効"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:327
 msgid "Disconnected"
-msgstr ""
+msgstr "切断"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:328
 msgid "Port Conflict"
-msgstr ""
+msgstr "ポート競合"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:329
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:155
@@ -272,42 +281,42 @@ msgstr "トンネルを拒否中: シャットダウン"
 msgid "Rejecting tunnels"
 msgstr "トンネルを拒否中"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
-msgstr ""
+msgstr "再シード中: ファイルからルータ情報を取得 ({0} 成功, {1} 個エラー)。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "リシード中"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "リシードは {0} ルーターのみ取得しました。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "リシード失敗。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "ヘルプについては  {0} をご覧ください。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "リシード設定ページ"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "リシード中: シード URL を取得中"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -343,11 +352,11 @@ msgstr "既知の高速なピア"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:41
 msgid "Known integrated (floodfill) peers"
-msgstr ""
+msgstr "基地の統合された (floodfill) ピア"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:42
 msgid "Size of tunnel acceptor backlog"
-msgstr ""
+msgstr "トンネル受け入れバックログのサイズ"
 
 #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:502
 msgid "NetDb entry"
@@ -365,7 +374,7 @@ msgstr "サポートされていない署名形式です"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:618
 msgid "No support for our signature type"
-msgstr ""
+msgstr "署名タイプに非対応"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:622
 msgid "Unreachable on any transport"
@@ -377,7 +386,7 @@ msgstr "すべてのトランスポートに到達不可"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "ステータス"
@@ -392,7 +401,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} は送信接続にのみ使用されます。"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP は有効ではありません"
 
@@ -415,13 +424,13 @@ msgid ""
 msgstr "これらの制限を上書きするには、高度な設定ページに設定 i2np.ntcp.maxConnections=nnn 及び i2np.udp.maxConnections=nnn を加えてください。"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "定義"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -436,7 +445,7 @@ msgstr "リモートピア、ルーターハッシュにより識別"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "ディレクトリ"
 
@@ -463,13 +472,13 @@ msgstr "パケットが受信/送信されてからの経過時間"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "アイドル"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "入出力"
@@ -484,14 +493,14 @@ msgstr "この接続が確立以後の経過時間"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "アップ"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "スキュー"
 
@@ -525,7 +534,7 @@ msgstr "スロースタートしきい値"
 msgid "The round trip time in milliseconds"
 msgstr "ミリ秒単位往復時間"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -540,7 +549,7 @@ msgstr "現在の最大送信パケットサイズ / 推定最大受信パケッ
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -550,7 +559,7 @@ msgstr "ピアに送信されたパケットの合計数"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -559,7 +568,7 @@ msgid "The total number of packets received from the peer"
 msgstr "ピアから受信したパケットの合計数"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -568,7 +577,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "ピアに再送されたパケットの合計数"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -607,8 +616,8 @@ msgstr "WAN PPP 接続"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "稼働時間"
 
@@ -703,17 +712,17 @@ msgid "NTCP connections"
 msgstr "NTCP 接続"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "制限"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "タイムアウト"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -726,125 +735,125 @@ msgid "Backlogged?"
 msgstr "バッグログされていますか?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "着信"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "送信"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} ピア"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP 接続"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "ピアハッシュでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "説明/指示"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "アイドルの受信でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "アイドルの送信でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "受信速度でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "送信速度でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "接続稼働時間でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "クロックスキューでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "輻輳ウィンドウでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "スロースタートしきい値でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "往復時間でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "再送信タイムアウトでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "送信最大伝送単位でソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "送信パケットでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "受信パケットでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "再送パケットでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "二度以上受信したパケットでソート"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "We offered to introduce them"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "They offered to introduce us"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "絞られました"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 回失敗"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} 回失敗"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "禁止されました"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "バッグログされました"
 
@@ -854,7 +863,7 @@ msgstr "トンネル要求ドロップ: 遅すぎます"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:260
 msgid "Dropping tunnel requests: High job lag"
-msgstr ""
+msgstr "トンネルリクエストを中断: 高いジョブラグ"
 
 #. don't even bother, since we are so overloaded locally
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:451
@@ -863,7 +872,7 @@ msgstr "トンネル要求ドロップ: 過負荷"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
 msgid "Rejecting tunnels: Hidden mode"
-msgstr ""
+msgstr "トンネルを拒否: Hidden モード"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
 msgid "Rejecting tunnels: Request overload"
@@ -882,66 +891,66 @@ msgstr "トンネル要求ドロップ: 高いロード"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "トンネル要求ドロップ: キュー時間"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "新しいプラグインのバージョン {0} が利用できます。"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "プラグイン {0} のアップデート確認に失敗"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "プラグイン {0} の新しいバージョンは利用できません。"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B 転送"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
-msgstr ""
+msgstr "{0} からのインストールに失敗"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "{0} からの転送に失敗しました"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "更新がダウンロードされました"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "再起動中"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "更新が確認されました"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "{0} から"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "{0} からの署名されていない更新ファイルは破損しています"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "{0} へのコピーに失敗"
@@ -954,10 +963,10 @@ msgstr "{0} へのコピーに失敗"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
-msgstr ""
+msgstr "HTTPクライアントプロキシトンネルが起動している必要があります"
 
 #. set status before thread to ensure UI feedback
 #: ../java/src/net/i2p/router/update/DevSU3UpdateHandler.java:91
@@ -968,20 +977,20 @@ msgstr ""
 msgid "Updating"
 msgstr "更新中"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "ネットワーク内アップデートが無効になりました。パッケージマネージャーを確認してください。"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "I2P のインストールディレクトリに対する書き込み権限がありません。"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "まずバージョン {0} にアップデートしなければなりません"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Java のバージョン {0} が必要ですが、インストールされている Java のバージョンは {1} です"
@@ -1171,16 +1180,20 @@ msgid "No new version found at {0}"
 msgstr "{0} に新しいバージョンが見つかりませんでした"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "永久的に禁止されました"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "{0} に期限切れとなる一時禁止"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "再起動か {0} まで禁止"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "今すぐ禁止解除"
 
@@ -1281,18 +1294,18 @@ msgstr "今すぐ禁止解除"
 msgid "I2P Router Console"
 msgstr "I2P ルーターコンソール"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "設定を更新する際にエラー - エラーログを確認してください"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "設定は正常に保存されました"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1331,7 +1344,7 @@ msgstr "プラグインをインストール"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:77
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:639
 msgid "Install Plugin from File"
-msgstr ""
+msgstr "ファイルからプラグインをインストール"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:86
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:650
@@ -1431,11 +1444,11 @@ msgstr "プラグインURLが指定されていません。"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:421
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:79
 msgid "You must enter a file"
-msgstr ""
+msgstr "ファイルを入力する必要があります"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:464
 msgid "Install from file failed"
-msgstr ""
+msgstr "ファイルからのインストール失敗"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:479
 #, java-format
@@ -1454,7 +1467,7 @@ msgstr "全てのプラグインをアップデート中"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:528
 #, java-format
 msgid "Installing plugin from {0}"
-msgstr ""
+msgstr "{0} からプラグインをインストール中"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:549
 #, java-format
@@ -1500,7 +1513,7 @@ msgid "Add Client"
 msgstr "クライアントを追加"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "クライアント"
@@ -1532,9 +1545,9 @@ msgid "Plugin"
 msgstr "プラグイン"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "バージョン"
 
@@ -1556,7 +1569,8 @@ msgstr "ライセンス"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "ウェブサイト"
 
@@ -1569,7 +1583,7 @@ msgid "Stop"
 msgstr "停止"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "アップデートを確認"
@@ -1591,7 +1605,7 @@ msgstr "削除"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1601,7 +1615,7 @@ msgstr "選択削除"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1620,7 +1634,7 @@ msgstr "デフォルトに戻す"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1749,8 +1763,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "削除"
 
@@ -1760,7 +1774,7 @@ msgstr "追加するクラスを選択"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "帯域幅"
 
@@ -1769,7 +1783,7 @@ msgid "Home Page"
 msgstr "ホームページ"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "ネットワーク"
 
@@ -1825,9 +1839,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "トンネル"
 
@@ -1845,15 +1859,15 @@ msgid "Logging"
 msgstr "ロギング"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "ピア"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "統計"
 
@@ -1865,8 +1879,8 @@ msgstr "詳細"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -1950,11 +1964,11 @@ msgstr "ラップトップモードを無効化中"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:359
 msgid "Disabling inbound IPv4"
-msgstr ""
+msgstr "着信 IPv4を無効化中"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:361
 msgid "Enabling inbound IPv4"
-msgstr ""
+msgstr "着信 IPv4を有効化中"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369
 msgid "Disabling UDP"
@@ -2067,35 +2081,35 @@ msgstr "リシードプロセスを開始"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:32
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:491
 msgid "Reseed from URL"
-msgstr ""
+msgstr "URLからリシード"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:37
 msgid "You must enter a URL"
-msgstr ""
+msgstr "URLを入力する必要があります"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66
 msgid "Reseed in progress, check summary bar for status"
-msgstr ""
+msgstr "リシード進行中、ステータスの概要バーをチェックしてください。"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:68
 msgid "Reseed complete, check summary bar for status"
-msgstr ""
+msgstr "リシード完了、ステータスの概要バーをチェックしてください"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:74
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503
 msgid "Reseed from file"
-msgstr ""
+msgstr "ファイルからリシード"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:84
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:91
 msgid "Reseed from file failed"
-msgstr ""
+msgstr "ファイルからのリシード失敗"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:86
 #, java-format
 msgid "Reseed successful, loaded {0} router info from file"
 msgid_plural "Reseed successful, loaded {0} router infos from file"
-msgstr[0] ""
+msgstr[0] "リシード成功、ファイルから {0} 件のルータ情報を読み込みました"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:149
 msgid "Configuration saved successfully."
@@ -2126,7 +2140,7 @@ msgstr "すぐに再起動"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "再起動"
 
@@ -2474,11 +2488,11 @@ msgstr "ユーザー {0} を削除しました"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:25
 msgid "Set theme universally across all apps"
-msgstr ""
+msgstr "全アプリにテーマを設定"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:37
 msgid "Force the mobile console to be used"
-msgstr ""
+msgstr "モバイルコンソールの使用を強制する"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:76
 msgid "Arabic"
@@ -2486,7 +2500,7 @@ msgstr "アラビア語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:77
 msgid "Czech"
-msgstr ""
+msgstr "チェコ語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:78
 msgid "Danish"
@@ -2502,7 +2516,7 @@ msgstr "エストニア語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:81
 msgid "Greek"
-msgstr ""
+msgstr "ギリシャ語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:82
 msgid "English"
@@ -2534,7 +2548,7 @@ msgstr "日本語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:89
 msgid "Malagasy"
-msgstr ""
+msgstr "マラガシ語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:90
 msgid "Dutch"
@@ -2563,7 +2577,7 @@ msgstr "ロシア語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:97
 msgid "Slovak"
-msgstr ""
+msgstr "スロバキア語"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:98
 msgid "Swedish"
@@ -2594,8 +2608,8 @@ msgid "User Name"
 msgstr "ユーザー名"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "追加"
 
@@ -2604,91 +2618,91 @@ msgstr "追加"
 msgid "Password"
 msgstr "パスワード"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "アップデートチェックは実行中です"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "アップデートが利用でき、現在ダウンロード試行中です"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "アップデートが利用でき、左のボタンをクリックするとダウンロードします"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "利用可能なアップデートなし"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
-msgstr ""
+msgstr "ニュース URL を  {0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "内部"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
-msgstr ""
+msgstr "プロキシホストを {0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
-msgstr ""
+msgstr "プロキシのポートを {0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
-msgstr ""
+msgstr "更新頻度を {0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
-msgstr ""
+msgstr "二度としない"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
-msgstr ""
+msgstr "アップデート設定を {0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "アップデート URL を更新中。"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "信頼されているキーを更新中。"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
-msgstr ""
+msgstr "未署名の更新 URL を {0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
-msgstr ""
+msgstr "署名された開発ビルドの URL を{0} に更新中"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "いつも"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "通知のみ"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "ダウンロードと検証のみ"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "ダウンロードと検証、再起動"
 
@@ -2698,7 +2712,7 @@ msgstr "実行を中止しました"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:35
 msgid "Enabled floodfill"
-msgstr ""
+msgstr "floodfill を有効化"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:36
 msgid "Changed IP"
@@ -2710,7 +2724,7 @@ msgstr "ポートが変更されました"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:38
 msgid "Clock shifted"
-msgstr ""
+msgstr "クロックがシフトされました"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:39
 msgid "Crashed"
@@ -2739,7 +2753,7 @@ msgstr "新しいルーターidentity"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:45
 msgid "Disabled floodfill"
-msgstr ""
+msgstr "floodfill が無効になりました"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:46
 msgid "Out of memory error"
@@ -2747,11 +2761,11 @@ msgstr "エラー:メモリ不足"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:47
 msgid "Reachability change"
-msgstr ""
+msgstr "到達可能性の変更"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:49
 msgid "Reseeded router"
-msgstr ""
+msgstr "ルーターをリシードしました"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:50
 msgid "Soft restart"
@@ -2779,7 +2793,7 @@ msgstr "イベント表示"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:106
 msgid "Events since"
-msgstr ""
+msgstr "以降のイベント"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:111
 msgid "Event type"
@@ -2801,20 +2815,20 @@ msgstr "イベントはありません"
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:171
 #, java-format
 msgid "No events found in previous {0}"
-msgstr ""
+msgstr "過去 {0} にイベントはありませんでした"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:174
 #, java-format
 msgid "No \"{0}\" events found"
-msgstr ""
+msgstr "\"{0} イベントはありませんでした"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:175
 #, java-format
 msgid "No \"{0}\" events found in previous {1}"
-msgstr ""
+msgstr "\"{0}\" イベントは過去 {1} にありませんでした"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "時間"
 
@@ -2836,7 +2850,7 @@ msgstr "無効なフォームからの送信、おそらくブラウザで「戻
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
-msgstr ""
+msgstr "問題が続く場合、クッキーがブラウザで有効になっているか確認してください。"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:162
 msgid "Combined bandwidth graph"
@@ -2847,7 +2861,7 @@ msgstr "複合帯域幅グラフ"
 #: ../java/src/net/i2p/router/web/GraphHelper.java:236
 #, java-format
 msgid "{0} for {1}"
-msgstr ""
+msgstr "{1} é–“ {0}"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:223
 #: ../java/src/net/i2p/router/web/StatSummarizer.java:332
@@ -2857,7 +2871,7 @@ msgstr "帯域幅使用率"
 #: ../java/src/net/i2p/router/web/GraphHelper.java:238
 #, java-format
 msgid "ending {0} ago"
-msgstr ""
+msgstr "{0} 前に終了"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:253
 msgid "Larger"
@@ -2885,19 +2899,19 @@ msgstr "より遅い"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:290
 msgid "Larger interval"
-msgstr ""
+msgstr "インターバルを大きく"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:296
 msgid "Smaller interval"
-msgstr ""
+msgstr "インターバルを小さく"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:303
 msgid "Previous interval"
-msgstr ""
+msgstr "過去のインターバル"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:314
 msgid "Next interval"
-msgstr ""
+msgstr "次のインターバル"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:321
 #: ../java/src/net/i2p/router/web/GraphHelper.java:361
@@ -2911,7 +2925,7 @@ msgstr "イベントを図示"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:324
 msgid "All times are UTC."
-msgstr ""
+msgstr "時間はすべて UTC です。"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:356
 msgid "Configure Graph Display"
@@ -2953,23 +2967,23 @@ msgstr "更新遅延"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:381
 msgid "Store graph data on disk?"
-msgstr ""
+msgstr "ディスク上にグラフデータを保存しますか?"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:387
 msgid "Save settings and redraw graphs"
-msgstr ""
+msgstr "設定を保温してグラフを再描画する"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:443
 msgid "Graph settings saved"
 msgstr "グラフ設定が保存されました"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "アドレスブック"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "ここで I2P の hosts ファイルを管理 (I2P のドメイン名解決)"
 
@@ -3000,17 +3014,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2Pのホームページカスタマイズ"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "匿名ウェブメールクライアント"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Eメール"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P ルーターヘルプ"
 
@@ -3020,17 +3034,17 @@ msgid "Router Console"
 msgstr "ルーターコンソール"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "内蔵匿名 BitTorrent クライアント"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "ローカルウェブサーバー"
 
@@ -3075,7 +3089,7 @@ msgstr "FAQ"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:47
 msgid "Frequently Asked Questions"
-msgstr ""
+msgstr "よくある質問"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:48
 msgid "Community forum"
@@ -3089,7 +3103,7 @@ msgstr "フォーラム"
 msgid ""
 "A public anonymous Git hosting site - supports pulling via Git and HTTP and "
 "pushing via SSH"
-msgstr ""
+msgstr "公開匿名 Git ホスティングサイト - Git および HTTP を通じた pull とSSH を通じた push をサポートします"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:49
 msgid "Anonymous Git Hosting"
@@ -3097,7 +3111,7 @@ msgstr "Anonymous Git Hosting"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:50
 msgid "HiddenGate"
-msgstr ""
+msgstr "HiddenGate"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:51
 msgid "Microblog"
@@ -3105,7 +3119,7 @@ msgstr "マイクロブログ"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:51
 msgid "Your premier microblogging service on I2P"
-msgstr ""
+msgstr "I2P で最もよく使う短文投稿サービス"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:52
 msgid "Javadocs"
@@ -3122,7 +3136,7 @@ msgstr "技術仕様"
 #. + I + "education.png" + S +
 #: ../java/src/net/i2p/router/web/HomeHelper.java:55
 msgid "Debian and Tahoe-LAFS repositories"
-msgstr ""
+msgstr "Debian と Tahoe-LAFS のレポジトリ"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:56
 msgid "Free Web Hosting"
@@ -3176,19 +3190,19 @@ msgstr "技術仕様"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:65
 msgid "Trac Wiki"
-msgstr ""
+msgstr "Trac Wiki"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:66
 msgid "Ugha's Wiki"
-msgstr ""
+msgstr "Ugha's Wiki"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:67
 msgid "Seedless and the Robert BitTorrent applications"
-msgstr ""
+msgstr "Seedless および Robert BitTorrent アプリケーション"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:67
 msgid "Sponge's main site"
-msgstr ""
+msgstr "Sponge のメインサイト"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:108
 msgid "The HTTP proxy is not up"
@@ -3197,101 +3211,101 @@ msgstr "HTTPプロキシは起動していません"
 #: ../java/src/net/i2p/router/web/HomeHelper.java:110
 #, java-format
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
-msgstr ""
+msgstr "あなたのブラウザは {0} で HTTP プロキシを使用するように正しく設定されていません"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "名前"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
-msgstr ""
+msgstr "I2P ジョブキュー"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
-msgstr ""
+msgstr "有効なジョブ"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "有効なジョブ"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
-msgstr ""
+msgstr "{0} 前に開始"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
-msgstr ""
+msgstr "たった今ジョブが終了しました"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
-msgstr ""
+msgstr "{0} 前に終了"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
-msgstr ""
+msgstr "準備完了/待機中のジョブ"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
-msgstr ""
+msgstr "スケジュールされたジョブ"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
-msgstr ""
+msgstr "{0} は {1} 後に開始します"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "合計ジョブ統計"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
-msgstr ""
+msgstr "ジョブ"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "キュー"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
-msgstr ""
+msgstr "有効"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
-msgstr ""
+msgstr "中断"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "平均"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "最大"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "最小"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "保留中"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
-msgstr ""
+msgstr "概要"
 
 #: ../java/src/net/i2p/router/web/LogsHelper.java:49
 #: ../java/src/net/i2p/router/web/LogsHelper.java:103
@@ -3307,281 +3321,281 @@ msgid "No log messages"
 msgstr "ログメッセージなし"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
-msgstr ""
+msgstr "ローカルルーター"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
-msgstr ""
+msgstr "ルーター調査"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
-msgstr ""
+msgstr "すべてのルーター"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
-msgstr ""
+msgstr "すべてのルーター(全ステータス)"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "リースセット"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "ルーター"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "ネットワークデータベース内に見つかりませんでした"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "リースセット"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "ローカル"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "未公開"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "宛先"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
-msgstr ""
+msgstr "ローカルのアドレス帳に追加"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "{0} に期限切れ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "{0} 前に期限切れ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "ゲートウェイ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "リース"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "トンネル"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "未初期化"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "ネットワークデータベースルーター統計"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "カウント"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "トランスポート"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "国"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "情報"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "次のピアの情報: "
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
-msgstr ""
+msgstr "フルエントリ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "非表示"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "æ›´æ–°"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} 前"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "公開済み"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
-msgstr ""
+msgstr "署名キー"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "アドレス"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "コスト"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "隠すか起動中"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "イントロデューサー付き SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP 及び SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP 及びイントロデューサー付き SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
-msgstr ""
+msgstr "IPv6 のみ SSU、イントロデューサー"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
-msgstr ""
+msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
-msgstr ""
+msgstr "IPv6 SSU、イントロデューサー"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
-msgstr ""
+msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
-msgstr ""
+msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
-msgstr ""
+msgstr "IPv6 NTCP, SSU, イントロデューサー"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
-msgstr ""
+msgstr "IPv6 のみ NTCP, SSU, イントロデューサー"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "ニュースは {0} に最終更新。"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "ニュースは {0} に最終確認。"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
-msgstr ""
+msgstr "ニュースを非表示"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
-msgstr ""
+msgstr "ニュースを表示"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:140
 msgid "Checking for plugin updates"
-msgstr ""
+msgstr "プラグインのアップデートをチェック中"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:155
 msgid "Plugin update check failed"
-msgstr ""
+msgstr "プラグインのアップデート確認失敗"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:193
 #, java-format
 msgid "1 plugin updated"
 msgid_plural "{0} plugins updated"
-msgstr[0] ""
+msgstr[0] "{0} 個のプラグインをアップデートしました"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:195
 msgid "Plugin update check complete"
-msgstr ""
+msgstr "プラグインのアップデート確認完了"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
 msgid_plural "Showing {0} recent profiles."
-msgstr[0] ""
+msgstr[0] "{0} 件の最近のプロファイルを表示"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:81
 #, java-format
 msgid "Hiding 1 older profile."
 msgid_plural "Hiding {0} older profiles."
-msgstr[0] ""
+msgstr[0] "{0} 件のもっと昔のプロファイルを非表示"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:83
 #, java-format
 msgid "Hiding 1 standard profile."
 msgid_plural "Hiding {0} standard profiles."
-msgstr[0] ""
+msgstr[0] "{0} 件の標準プロファイルを非表示"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:88
 msgid "Groups (Caps)"
 msgstr "グループ (大文字)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "速度"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "許容数"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "統合"
 
@@ -3604,7 +3618,7 @@ msgid "Failing"
 msgstr "失敗"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "統合済み"
 
@@ -3681,87 +3695,87 @@ msgstr "1時間失敗率"
 msgid "1d Fail Rate"
 msgstr "1日失敗率"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "しきい値"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "高速なピア"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "許容数の大きいピア"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "上手く統合されているピア"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "プロファイル管理ソフトで判断するように"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "グループ"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "netDb の許容数、プロファイルの判断には使用されません"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "大文字"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "ピアが1つのトンネルで維持した1分間での最大スループット (バイト毎秒)"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "速度"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "許容数"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "一時間でどれだけ多くのトンネルの参加を求められるか?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "最近どれだけ多くの新規ピアを伝えたか?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "統合"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "ピアが禁止されていたり、到達不可であったり、トンネルテストに失敗しているか?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "ステータス"
 
 #. 0
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:12
 msgid "Floodfill "
-msgstr ""
+msgstr "Floodfill "
 
 #. 2
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:14
 msgid "All"
-msgstr ""
+msgstr "すべて"
 
 #: ../java/src/net/i2p/router/web/SearchHelper.java:74
 msgid "Select search engine"
-msgstr ""
+msgstr "検索エンジンを選択"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:57
 msgid "GO"
@@ -3821,7 +3835,7 @@ msgstr "生涯平均頻度"
 #, java-format
 msgid "1 event"
 msgid_plural "{0} events"
-msgstr[0] ""
+msgstr[0] "{0}件のイベント"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:168
 msgid "rate"
@@ -3839,12 +3853,12 @@ msgstr "最大平均"
 #, java-format
 msgid "There was 1 event in this period."
 msgid_plural "There were {0} events in this period."
-msgstr[0] ""
+msgstr[0] "この期間中に {0} 件のイベントがありました。"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:202
 #, java-format
 msgid "The period ended {0} ago."
-msgstr ""
+msgstr "その期間は {0} 前に終了しました。"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:204
 msgid "No events"
@@ -3871,279 +3885,279 @@ msgstr "グラフイベントカウント"
 msgid "Lifetime average value"
 msgstr "生涯平均値"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P ルーターヘルプ &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "ヘルプと FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "クライアントとウェブアプリ (サービス) のスタートアップを構成。手動で休止サービスを開始"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P サービス"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "I2P ルーターを構成"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P 内部"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "既存のトンネルとトンネル作成ステータスを表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "現在のピア接続をすべて表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "最近のピアパフォーマンスプロファイルを表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "プロファイル"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "既存の全 I2P ルーターの一覧を表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "健全度報告"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "ログ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "ルーターパフォーマンスをグラフ化"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "グラフ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "テキストのルーターパフォーマンス統計"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
-msgstr ""
+msgstr "ローカルトンネル"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
-msgstr ""
+msgstr "Hidden サービスマネージャー"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "一般"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "ローカル識別子は一意な I2P ルーターの識別子であり、 IP アドレスに近いですが、 I2P に合わせています。"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
-msgstr ""
+msgstr "実際の IP がばれかねないので、誰にもこれを明かさないでください。"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "ローカル識別子"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "あなたの一意な I2P ルーター識別子は"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "誰にも決して明かさない"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "起動中の I2P ソフトウェアのバージョン"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "このセッションでどれだけの間起動しているか"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "最適な I2P パフォーマンスを得るためにファイアーウォールとルーターを構成するのに役立ちます"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
-msgstr ""
+msgstr "wiki 上で詳細を表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
-msgstr ""
+msgstr "警告: ECDSA が利用できません。 Java または OS を更新してください"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
-msgstr ""
+msgstr "I2P のアップデートを構成"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
-msgstr ""
+msgstr "I2P アップデート"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
-msgstr ""
+msgstr "過去数分/数時間内に通信したピア"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "アクティブ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
-msgstr ""
+msgstr "クライアントトンネルのビルドに利用できるピアノ数"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "高速"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "予備トンネルの形成に利用できるピアの数"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "高許容数"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "ネットワークデータベースに利用できるピアの数の照会"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "ネットワークデータベース内の合計ピア数"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "既知"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "ルーターの帯域幅割り当てを設定"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "帯域幅 入力/出力"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "合計"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "使用済み"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "トンネルの作成・テストと、floodfillピアとコミュニケーションを取るのに使用された"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "予備"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
-msgstr ""
+msgstr "ネットワーク上でサービスを提供またはアクセスするために使用しているトンネル"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr ""
+msgstr "参加していて、ネットワークの帯域幅に直接貢献しているトンネル"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "参加中"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
-msgstr ""
+msgstr "使用するトンネルホップに提供しているトンネルのホップ率 - 1000より大きな値はネットワークへのポジティブな貢献を示します"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "共有比率"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "ルーターのジョブキューに何があるか?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "混雑状態"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
-msgstr ""
+msgstr "ルーターパフォーマンスを表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "ジョブラグ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
-msgstr ""
+msgstr "ほかの I2P のルーターへの送信メッセージが送られた際の速さを表示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "メッセージ遅延"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
-msgstr ""
+msgstr "トンネルテストのラウンドトリップ時間"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "トンネルラグ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
-msgstr ""
+msgstr "トンネルに参加しているほかのルーターからのリクエストをキューに入れました"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "バックラグ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
-msgstr ""
+msgstr "ニュースとアップデート"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:143
 msgid "ERR-Client Manager I2CP Error - check logs"
@@ -4156,7 +4170,7 @@ msgstr "ERR-{0} のクロックスキュー"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:170
 msgid "ERR-Unresolved TCP Address"
-msgstr ""
+msgstr "エラー - 解決できない TCP アドレス"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:174
 msgid "ERR-Private TCP Address"
@@ -4202,7 +4216,7 @@ msgstr "クライアント及びサーバートンネルを追加・削除・編
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:450
 msgid "Hidden Service"
-msgstr ""
+msgstr "Hidden サービス"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:454
 msgid "Show tunnels"
@@ -4245,106 +4259,122 @@ msgstr "トンネルを構成中"
 msgid "shared clients"
 msgstr "共有されたクライアント"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "インストールするには再起動をクリック"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "インストールするにはシャットダウンをクリックして再起動"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "バージョン {0} "
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
-msgstr ""
+msgstr "アップデートが利用できます"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
-msgstr ""
+msgstr "{0} のアップデートをダウンロード"
 
 #. Note to translators: parameter is a router version, e.g. "0.9.19-16"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
-msgstr ""
+msgstr "署名されている<br>開発アップデートをダウンロード<br>{0}"
 
 #. Note to translators: parameter is a date and time, e.g. "02-Mar 20:34 UTC"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
-msgstr ""
+msgstr "署名されていない {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "ファイアーウォールの構成に役立ちます"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
-msgstr ""
+msgstr "ネットワーク接続および NAT/ファイアーウォールを確認してください"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "リシード"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
-msgstr ""
+msgstr "順序"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
-msgstr ""
+msgstr "上部"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "上部に移動"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "上に移動"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
-msgstr ""
+msgstr "下"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "下に移動"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
-msgstr ""
+msgstr "下部"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "下部に移動"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
-msgstr ""
+msgstr "追加するセクションを選択"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "{0} のイベント"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "{0} の平均"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "イベントと期間"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "平均"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "最大"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "現在"
 
@@ -4521,175 +4551,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "スタートアップ時にウェブブラウザでルーターコンソールを開く"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC プロキシ"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P ウェブブラウザ"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP プロキシ"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "クラシック"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "ダーク"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "ライト"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "ミッドナイト"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "帯域幅リミッター"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "クライアントメッセージ"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "暗号化"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "ネットワークデータベース"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr ""
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "トランスポート"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr ""
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr ""
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr ""
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "帯域幅を設定"
@@ -4858,7 +4840,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4899,7 +4881,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4938,27 +4920,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
@@ -5318,7 +5308,7 @@ msgstr "IPアドレスが変わった際の動作"
 msgid ""
 "Laptop mode - Change router identity and UDP port when IP changes for "
 "enhanced anonymity"
-msgstr "ノートパソコンモード - より良い匿名性のため、IPアドレスが変わった際にルータのIDとUDPポートを変更する"
+msgstr "ノートパソコンモード - 匿名性を向上させるため、IPアドレスが変わった際にルータのIDとUDPポートを変更する"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:530
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:560
diff --git a/apps/routerconsole/locale/messages_nb.po b/apps/routerconsole/locale/messages_nb.po
index ebb3940d73c05e6e8390a5dbd08007bd60715608..6eb9abad32cacac4f6f17789c5d497c806f5bd47 100644
--- a/apps/routerconsole/locale/messages_nb.po
+++ b/apps/routerconsole/locale/messages_nb.po
@@ -13,8 +13,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/I2P/language/nb/)\n"
 "MIME-Version: 1.0\n"
@@ -34,8 +34,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -44,8 +44,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -54,8 +54,8 @@ msgstr[1] "{0} sek"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -64,37 +64,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 time"
 msgstr[1] "{0} timer"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/a"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 dag"
 msgstr[1] "{0} dager"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/a"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -137,7 +146,7 @@ msgstr "Til"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr ""
@@ -276,43 +285,43 @@ msgstr "Avviser tunneler: Avslutter"
 msgid "Rejecting tunnels"
 msgstr "Avviser tunneler"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseeding"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Reseed mottok bare 1 ruter."
 msgstr[1] "Reseed mottok bare {0} rutere."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed feilet."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Se {0} for hjelp."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "reseed instillings side"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseeding: mottar seed URL."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -382,7 +391,7 @@ msgstr "Utilgjengelig på alle transporter"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Status"
@@ -397,7 +406,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} er brukt for bare utgående tilkoblinger"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr ""
 
@@ -420,13 +429,13 @@ msgid ""
 msgstr "For å overstyre de begrensningene, legg til instillingene  i2np.ntcp.maxConnections=nnn og i2np.udp.maxConnections=nnn på den avanserte konfigurasjon siden."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definisjoner"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -441,7 +450,7 @@ msgstr "Den eksterne peer, identifisert av ruter hash"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Mappe"
 
@@ -468,13 +477,13 @@ msgstr "Hvor lenge siden en pakke har blitt mottat / sendt"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Tomgang"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Inn/Ut"
@@ -489,14 +498,14 @@ msgstr "Hvor lenge siden denne tilkoblingen var etablert"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Opp"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "klokkeforskyvning"
 
@@ -530,7 +539,7 @@ msgstr ""
 msgid "The round trip time in milliseconds"
 msgstr "Rundtur i millisekunder"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -545,7 +554,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -555,7 +564,7 @@ msgstr "Totalt antall pakker sendt til peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -564,7 +573,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Det totale antall pakker mottatt fra peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -573,7 +582,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Det totale antallet pakker videresendes til peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -612,8 +621,8 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr ""
 
@@ -708,17 +717,17 @@ msgid "NTCP connections"
 msgstr "NTCP tilkoblinger"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Begrensing"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Timeout"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -731,126 +740,126 @@ msgid "Backlogged?"
 msgstr "Backlogged?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Inngående"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Utgående"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP tilkoblinger"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sorter ut ifra peer hash"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Rettning/Innledning"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sorter etter tomgang ingående"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sorter etter tomgang utgående"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sorter etter inngående hastighet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sorter etter utgående hastighet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sorter etter tilkobling oppetid"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sorter etter klokkeforskyvning"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sorter etter pakker sendt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sorter etter pakker mottatt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sorter etter videresendte pakker "
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sorter etter pakker som er mottatt mer enn én gang"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Vi tilbød å introdusere dem"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "De tilbød seg å introdusere oss"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Kvalt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 feil"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} feiler"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Bannet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -888,66 +897,66 @@ msgstr "Dropper tunnel forespørsler: Høy last"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Dropper tunneler forespørsler: Kø tid"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B overført"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Overføring fra {0} feilet"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Oppdatering nedlastet"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Starter om igjen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Oppdatering kontrollert"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "fra {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Usignert oppdateringsfil fra {0} er korrupt"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Klarte ikke å kopiere til {0}"
@@ -960,7 +969,7 @@ msgstr "Klarte ikke å kopiere til {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -974,20 +983,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Oppdaterer"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Krever Java-versjon {0}, installert versjon av java er {1}"
@@ -1177,16 +1186,20 @@ msgid "No new version found at {0}"
 msgstr "Ingen ny versjon funnet på {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr ""
 
@@ -1287,18 +1300,18 @@ msgstr ""
 msgid "I2P Router Console"
 msgstr "I2P Ruter Konsoll"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Innstillingene er lagret"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1506,7 +1519,7 @@ msgid "Add Client"
 msgstr "Legg til klient"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Klient"
@@ -1538,9 +1551,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versjon"
 
@@ -1562,7 +1575,8 @@ msgstr "Lisens"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Webside"
 
@@ -1575,7 +1589,7 @@ msgid "Stop"
 msgstr "Stopp"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Se etter oppdateringer"
@@ -1597,7 +1611,7 @@ msgstr "Slett"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1607,7 +1621,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1626,7 +1640,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1755,8 +1769,8 @@ msgstr "ADVARSEL"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Fjern"
 
@@ -1766,7 +1780,7 @@ msgstr "Velg klasse å legge til"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "BÃ¥ndbredde"
 
@@ -1775,7 +1789,7 @@ msgid "Home Page"
 msgstr "Startside"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Nettverk"
 
@@ -1831,9 +1845,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunneller"
 
@@ -1851,15 +1865,15 @@ msgid "Logging"
 msgstr "Logging"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Peers"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statestikk"
 
@@ -1871,8 +1885,8 @@ msgstr "Avansert"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2133,7 +2147,7 @@ msgstr "Omstart umiddelbart"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Omstart"
 
@@ -2604,8 +2618,8 @@ msgid "User Name"
 msgstr "Brukernavn"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Legg til"
 
@@ -2614,91 +2628,91 @@ msgstr "Legg til"
 msgid "Password"
 msgstr "Passord"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Oppdatering tilgjengelig, prøver å laste ned nå"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Oppdatering tilgjengelig, klikk knappen til venstre for å laste ned"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Ingen oppdatering tilgjengelig"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Aldri"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Hver"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Bare meld fra"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Bare last ned og verifiser"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Last ned, kontrollere og ta omstart"
 
@@ -2824,7 +2838,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tid"
 
@@ -2974,12 +2988,12 @@ msgid "Graph settings saved"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3010,17 +3024,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "E-post"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr ""
 
@@ -3030,17 +3044,17 @@ msgid "Router Console"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Lokal vev-tjener"
 
@@ -3209,97 +3223,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Navn"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Snitt"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Maks"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Utestående"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3317,223 +3331,223 @@ msgid "No log messages"
 msgstr ""
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr ""
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Lokal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Upublisert"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destinasjon"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Utløper om {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Utløp for {0} siden"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Antall"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Land"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "VÃ¥r informasjon"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Skjult"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Oppdatert"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} siden"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publisert"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adresse(r)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "kostnad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Skjult eller starter opp"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Gjem nyheter"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Vis nyheter"
 
@@ -3556,7 +3570,7 @@ msgstr[1] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3583,19 +3597,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Hastighet"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Kapasitet"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integrasjon"
 
@@ -3618,7 +3632,7 @@ msgid "Failing"
 msgstr "Mislyktes"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrert"
 
@@ -3695,71 +3709,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "status"
 
@@ -3887,277 +3901,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2P-oppdatering"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4261,26 +4275,26 @@ msgstr ""
 msgid "shared clients"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Trykk omstart for å installere"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Klikk Slå av og omstart for å installere"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versjon {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Oppdateringer tilgjengelig"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4289,7 +4303,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4298,69 +4312,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "maks"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr ""
 
@@ -4537,175 +4567,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
-msgid "IRC proxy"
+msgid "shared clients (DSA)"
 msgstr ""
 
 #: ../java/strings/Strings.java:38
-msgid "eepsite"
+msgid "IRC proxy"
 msgstr ""
 
 #: ../java/strings/Strings.java:39
-msgid "I2P webserver"
+msgid "eepsite"
 msgstr ""
 
 #: ../java/strings/Strings.java:40
+msgid "I2P webserver"
+msgstr ""
+
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr ""
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr ""
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr ""
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr ""
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klassisk"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr ""
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr ""
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr ""
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Kryptering"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr ""
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr ""
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr ""
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr ""
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr ""
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr ""
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4874,7 +4856,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4915,7 +4897,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4954,27 +4936,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_nl.po b/apps/routerconsole/locale/messages_nl.po
index 95a009cfb9e325c03497e98ea42698587010f9da..f77331c855cc02c9a203e5a24a5a939792487860 100644
--- a/apps/routerconsole/locale/messages_nl.po
+++ b/apps/routerconsole/locale/messages_nl.po
@@ -23,9 +23,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-17 20:55+0000\n"
-"Last-Translator: Nathan Follens\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Dutch (http://www.transifex.com/projects/p/I2P/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -44,8 +44,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -54,8 +54,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -64,8 +64,8 @@ msgstr[1] "{0} s"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -74,37 +74,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 uur"
 msgstr[1] "{0} uren"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "nvt"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 dag"
 msgstr[1] "{0} dagen"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "nvt"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -147,7 +156,7 @@ msgstr "Naar"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "geen"
@@ -286,43 +295,43 @@ msgstr "Tunnels geweigerd: Aan het afsluiten"
 msgid "Rejecting tunnels"
 msgstr "Tunnels geweigerd"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseeden"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Reseed heeft slechts 1 router opgehaald."
 msgstr[1] "Reseed heeft slechts {0} routers opgehaald."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed gefaald"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Zie {0} voor hulp."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "reseed configuratie pagina"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseed: opvragen seed URL."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -392,7 +401,7 @@ msgstr "Onbereikbaar op alle transports"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Status"
@@ -407,7 +416,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} is alleen gebruikt voor uitgaande connecties"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP is niet ingeschakeld."
 
@@ -430,13 +439,13 @@ msgid ""
 msgstr "Om deze limieten te overschrijven, voeg dan de instelling i2np.ntcp.maxConnections=nnn en i2np.udp.maxConnections=nnn toe aan de geavanceerde configuratie pagina."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definities"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -451,7 +460,7 @@ msgstr "De remote peer, geïdentificeerd door de router hash"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Richting"
 
@@ -478,13 +487,13 @@ msgstr "Hoe lang sinds een pakket ontvangen / verstuurd is"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Idle"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "In/Uit"
@@ -499,14 +508,14 @@ msgstr "Hoe lang sinds deze connectie is gemaakt"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Up"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Afwijking"
 
@@ -540,7 +549,7 @@ msgstr "De vertraagde-start drempel"
 msgid "The round trip time in milliseconds"
 msgstr "De rondgangstijd in milliseconden"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -555,7 +564,7 @@ msgstr "Huidige maximum verzonden pakket grootte / verwachte maximimum ontvangen
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -565,7 +574,7 @@ msgstr "Het totaal aantal pakketten verzonden aan de peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -574,7 +583,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Het totaal aantal ontvangen pakketten van de peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -583,7 +592,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Het totaal aantal pakketten dat opnieuw is verzonden aan de peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -622,8 +631,8 @@ msgstr "WAN PPP Verbinding"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Uptime"
 
@@ -718,17 +727,17 @@ msgid "NTCP connections"
 msgstr "NTCP connecties"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limiet"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Time-out"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -741,126 +750,126 @@ msgid "Backlogged?"
 msgstr "In achterstand?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Inkomend"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Uitgaand"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} peer"
 msgstr[1] "{0} peers"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP connecties"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Gesorteerd op peer hash"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Richting/Introductie"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Gesorteerd op idle inkomend"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Gesorteerd op idle uitgaand"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Gesorteerd op inkomende snelheid"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Gesorteerd op uitgaande snelheid"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Gesorteerd op uptime van de connectie"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Gesorteerd op klok afwijking"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Gesorteerd op congestion window"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Gesorteerd op vertraagde-start drempel"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Gesorteerd op rondgangstijd"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Gesorteerd op herzendings time-out"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Gesorteerd op uitgaande maximum verzend unit"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Gesorteerd op verzonden pakketten"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Gesorteerd op ontvangen pakketten"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Gesorteerd op herzonden pakketten"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Gesorteerd op meerdere keren ontvangen pakketten"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "We hebben aangeboden ze te introduceren"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Zij hebben aangeboden ons te introduceren"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Verstikt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 gefaald"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} gefaald"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Verbannen"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "achterstand"
 
@@ -898,66 +907,66 @@ msgstr "Negeer tunnel aanvragen: Hoge load"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Negeer tunnel aanvragen: Wachttijd"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Nieuwe plugin versie {0} is beschikbaar"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Update check voor plugin {0} gefaald"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Geen nieuwe versie beschikbaar voor plugin {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B ontvangen"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Overdracht gefaald van {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Update gedownload"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Herstarten"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Update geverifieerd"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "van {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Niet-ondertekende update bestand van {0} is corrupt"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Kopie naar {0} gefaald"
@@ -970,7 +979,7 @@ msgstr "Kopie naar {0} gefaald"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -984,20 +993,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Aan het updaten"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "In-netwerk updates uitgeschakeld. Controleer de pakket manager."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Geen schrijf toestemming voor de I2P installatie map."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Je moet eerst updaten naar versie {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Je hebt Java versie {0} nodig, maar hebt Java versie {1} geïnstalleerd"
@@ -1187,16 +1196,20 @@ msgid "No new version found at {0}"
 msgstr "Geen nieuwe versie gevonden op {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Tijdelijke verbanning verloopt in {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Verbanning tot volgende herstart of in {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "Hef verbanning nu op"
 
@@ -1297,18 +1310,18 @@ msgstr "Hef verbanning nu op"
 msgid "I2P Router Console"
 msgstr "I2P Router Console"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Fout bij updaten dan de configuratie - kijk in de fout logs"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configuratie succesvol opgeslagen"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1516,7 +1529,7 @@ msgid "Add Client"
 msgstr "Client Toevoegen"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Client"
@@ -1548,9 +1561,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versie"
 
@@ -1572,7 +1585,8 @@ msgstr "Licentie"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Website"
 
@@ -1585,7 +1599,7 @@ msgid "Stop"
 msgstr "Stop"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Controlleer op updates"
@@ -1607,7 +1621,7 @@ msgstr "Verwijder"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1617,7 +1631,7 @@ msgstr "Verwijderd selectie"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1636,7 +1650,7 @@ msgstr "Herstel standaard instellingen"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1765,8 +1779,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Verwijder"
 
@@ -1776,7 +1790,7 @@ msgstr "Selecteer een klasse om toe te voegen"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Bandwidth"
 
@@ -1785,7 +1799,7 @@ msgid "Home Page"
 msgstr "Home Page"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Netwerk"
 
@@ -1841,9 +1855,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnels"
 
@@ -1861,15 +1875,15 @@ msgid "Logging"
 msgstr "Logging"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Peers"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistieken"
 
@@ -1881,8 +1895,8 @@ msgstr "Geavanceerd"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2143,7 +2157,7 @@ msgstr "Herstart onmiddelijk"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Herstart"
 
@@ -2614,8 +2628,8 @@ msgid "User Name"
 msgstr "Gebruikersnaam"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Voeg toe"
 
@@ -2624,91 +2638,91 @@ msgstr "Voeg toe"
 msgid "Password"
 msgstr "Wachtwoord"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Bijwerken of controle reeds gestart"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Update beschikbaar, probeer nu te downloaden"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Update beschikbaar, klik op de linker knop om te downloaden"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Geen update beschikbaar"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Nieuws URL vernieuwen naar {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "intern"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Proxy host vernieuwen naar {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Proxy poort vernieuwen naar {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Ververs snelheid vernieuwen naar {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Nooit"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Update beleid vernieuwen naar {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Updaten update URLs."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Updaten vertrouwde sleutels."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Niet-ondertekende update URL vernieuwen naar {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Elke"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Alleen melden"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Download en alleen controlleren"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Download, controlleer en herstart"
 
@@ -2834,7 +2848,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Geen \"{0}\" gebeurtenissen gevonden in de vorige {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tijd"
 
@@ -2984,12 +2998,12 @@ msgid "Graph settings saved"
 msgstr "Grafiek instellingen opgeslagen"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Adresboek"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Beheer je I2P hosts bestand hier (I2P domeinnaam bepaling)"
 
@@ -3020,17 +3034,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2P Home Page Configuratie"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Anonieme webmail client"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P Router Hulp"
 
@@ -3040,17 +3054,17 @@ msgid "Router Console"
 msgstr "Router Console"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Ingebouwde anonieme BitTorrent Client"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrents"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Lokale webserver"
 
@@ -3219,97 +3233,97 @@ msgstr "De HTTP proxy is niet ingeschakeld"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Je browser is niet juist geconfigureerd om de HTTP proxy op {0} te gebruiken"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Naam"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "I2P Taak wachtrij"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Taak verwerkers"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Aktieve taken"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "{0} geleden gestart"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Net voltooide taken"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "{0} geleden voltooid"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Gereed/wachtende taken"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Geplande taken"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} start in {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Totale Taak Statistieken"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Taak"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "Geplanned"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Lopen"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Gmd"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Te doen"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Samenvatting"
 
@@ -3327,223 +3341,223 @@ msgid "No log messages"
 msgstr "Geen log berichten"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Lokale router"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Router Opzoeken"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Alle Routers"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Alle Routers met volledige statistieken"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSets"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "niet gevonden in netwerk database"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Lokaal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Niet-gepubliceerd"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Bestemming"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Toevoegen aan lokaal adresboek"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Verloopt in {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Verliep {0} geleden"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Gateway"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Niet geïnitialiseerd"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Netwerk Database Router Statistieken"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Aantal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transports"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Land"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Onze info"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Peer info voor"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Volledige item"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Verborgen"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Geupdate"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} geleden"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Gepubliceerd"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Handtekening sleutel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adres(sen)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "kosten"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Verborgen of aan het opstarten"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU met introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP en SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP en SSU met introducers"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 Only SSU, aanbieders"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, aanbieders"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, aanbieders"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 Only NTCP, SSU, aanbieders"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Nieuws {0} geleden voor het laatste geupdate."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Nieuws {0} geleden voor het laatste gecontrolleerd."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Verberg nieuws"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Toon nieuws"
 
@@ -3566,7 +3580,7 @@ msgstr[1] "{0} plugins geupdate"
 msgid "Plugin update check complete"
 msgstr "Plugin update check voltooid"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3593,19 +3607,19 @@ msgid "Groups (Caps)"
 msgstr "Groupen (Caps)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Snelheid"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capaciteit"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integratie"
 
@@ -3628,7 +3642,7 @@ msgid "Failing"
 msgstr "Gefaald"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Geïntegreerd"
 
@@ -3705,71 +3719,71 @@ msgstr "1u Fout Rato"
 msgid "1d Fail Rate"
 msgstr "1d Four Rato"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Drempelwaarden"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "snelle peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "hoge capaciteits peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr " goed geïntegreerde peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "zoals bepaald door de profiel organisator"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "groepen"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "capaciteiten in de netDb, niet gebruikt om profielen te bepalen"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "caps"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "piek doorvoer (bytes per seconde) over een 1 minuut periode zoals de peer heeft ondervonden in een enkele tunnel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "snelheid"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "capaciteit"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "hoeveel tunnels kunnen we ze vragen om zich in een uur bij aan te sluiten?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "hoeveel nieuwe peers hebben ze ons recentelijk over verteld?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integratie"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "is de peer verbannen, of onbereikbaar, of faalt het tunnel tests?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "status"
 
@@ -3897,277 +3911,277 @@ msgstr "Grafiek Aantal Gebeurtenissen"
 msgid "Lifetime average value"
 msgstr "Levenslange gemiddelde waarde"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P Router Hulp &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Hulp &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Configureer de opstart van clients en webapps (services); start sluimerende services handmatig"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P Services"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Configureer I2P Router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P Intern"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Bekijk bestaande tunnels en tunnel opbouw status"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Toon alle huidige peer connecties"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Toon recente peer prestatie profielen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profielen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Toon lijst met alle bekende I2P routers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Gezondheids Rapport"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Logs"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Grafieken router prestatie"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Grafieken"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Tekstuele router prestatie statistieken"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Lokale tunnels"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Verborgen diensten-beheerder"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Algemeen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Jouw Local Identity is jouw unieke I2P router identiteit, vergelijkbaar met een IP-adres, maar dan voor I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Laat anderen dit nooit weten, aangezien het je echte IP kan openbaren."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Lokale Identiteit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Je unique I2P router identiteit is"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "vertel dit aan niemand"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "toon"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "De in gebruik zijnde versie van de I2P software"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Hoe lang draaien we al voor deze sessie"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Hulp bij het configureren van je firewall en router voor optimale I2P prestatie"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Bekijk de wiki voor meer informatie"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Waarschuwing: ECDSA is niet beschikbaar. Werk Java of je besturingssysteem bij"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Configureer I2P Updates"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2P Update"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Peers waarmee wij in de laatste minuten/het laatste uur gecommuniceerd hebben."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Actief"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Het aantal peers beschikbaar voor het bouwen van client tunnels."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Snel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Het aantal peers beschikbaar voor het bouwen van exploratory tunnels."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Grote capaciteit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Het aantal peers beschikbaar voor netwerk database aanvragen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Het totaal aantal peers in onze netwerkdatabase"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Bekend"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Configureer router bandbreedte toewijzing"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Bandbreedte in/uit"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Totaal"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Gebruikt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Gebruikt voor het bouwen en testen van tunnels, en om te communiceren met floodfill peers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Onderzoekend"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tunnels die we gebruiken om diensten in het netwerk te voorzien of om toegang toe te hebben"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Tunnels waarvan we deel uitmaken door rechtstreeks brandbreedte tot het netwerk te voorzien"
+msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Deelnemend"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "De verhouding van tunnel hops die we leveren en tunnel hops die we gebruiken - een waarde groter dan 1.00 geeft aan dat je positief bijdraagt aan het netwerk"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Share rato"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Wat is er in de taken wachtrij van de router?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Verstopping"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Geeft aan hoe de router presteert"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Taak vertraging"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Geeft aan hoe snel uitgaande berichten naar andere I2P routers verstuurd worden"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Bericht vertraging"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Heen en weer tijd voor een tunnel test"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Tunnel vertraging"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Wachtrij van verzoeken van andere routers om deel te nemen in tunnels"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Achterstand"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Nieuws &amp; Updates"
 
@@ -4271,26 +4285,26 @@ msgstr "Tunnels aan het bouwen"
 msgid "shared clients"
 msgstr "gedeelde clients"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Klik Herstart om te installeren"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Klik Afsluiten and herstart om te installeren"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versie {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Update beschikbaar"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Download {0} Update"
@@ -4299,7 +4313,7 @@ msgstr "Download {0} Update"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4308,69 +4322,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Download Niet-ondertekende <br> Update {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Hulp met firewall configuratie"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Controleer netwerk connectie en NAT/firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Reseed"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Volgorde"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Bovenaan"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Onder"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Onderaan"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Selecteer een sectie om toe te voegen"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "gebeurtenissen in {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "gemiddeld voor {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Gebeurtenissen per periode"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "gemiddeld"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "max"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "nu"
 
@@ -4547,175 +4577,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Open Router Console in web browser bij opstarten"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P webserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klassiek"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "donker"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "licht"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "middernacht"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "BandwidthLimiter"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "ClientMessages"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Encryption"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "JobQueue"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "NetworkDatabase"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Stream"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Throttle"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "key"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "stel bandbreedte in"
@@ -4884,7 +4866,7 @@ msgid "Share"
 msgstr "Share"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "OPMERKING"
@@ -4925,7 +4907,7 @@ msgid "Advanced network configuration page"
 msgstr " network configuratie pagina"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4964,27 +4946,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Geavanceerde I2P Configuratie"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Voor de toepassing van sommige wijzigingen is een herstart nodig."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "Om te veranderen, wijzig het bestand {0}."
diff --git a/apps/routerconsole/locale/messages_pl.po b/apps/routerconsole/locale/messages_pl.po
index be18a1880049693a675c025b61f2008a03ce49ed..edc8c64214c6f8d292875b211a6957537d008c4e 100644
--- a/apps/routerconsole/locale/messages_pl.po
+++ b/apps/routerconsole/locale/messages_pl.po
@@ -12,7 +12,8 @@
 # polacco <polacco@i2pmail.org>, 2012,2015
 # PolishAnon <b790979@klzlk.com>, 2011-2012
 # seb, 2014
-# seb, 2014
+# seb, 2014-2015
+# Taporpo Ne <taporpone@gmail.com>, 2015
 # Tracerneo <ziolkoneo@gmail.com>, 2013
 # Warton <businesshehe@yahoo.com>, 2011-2012
 # Tracerneo <ziolkoneo@gmail.com>, 2013
@@ -20,10 +21,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-08-30 21:53+0000\n"
+"Last-Translator: Taporpo Ne <taporpone@gmail.com>\n"
+"Language-Team: Polish (http://www.transifex.com/otf/I2P/language/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -41,8 +42,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -52,8 +53,8 @@ msgstr[2] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -63,8 +64,8 @@ msgstr[2] "{0} sek"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -74,8 +75,8 @@ msgstr[2] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
@@ -83,15 +84,9 @@ msgstr[0] "1 godz"
 msgstr[1] "{0} godz"
 msgstr[2] "{0} godz"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/d"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
@@ -99,21 +94,37 @@ msgstr[0] "1 dzień"
 msgstr[1] "{0} dni"
 msgstr[2] "{0} dni"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 rok"
+msgstr[1] "{0} lata"
+msgstr[2] "{0} lat"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/d"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "1 ns"
+msgstr[1] "{0,number,###} ns"
+msgstr[2] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "1 μs"
+msgstr[1] "{0,number,###} μs"
+msgstr[2] "{0,number,###} μs"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:201
 #, java-format
@@ -151,7 +162,7 @@ msgstr "Do"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "brak"
@@ -164,40 +175,40 @@ msgstr "OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:312
 msgid "IPv4: OK; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: OK; IPv6: TestujÄ™"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:313
 msgid "IPv4: OK; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: OK; IPv6: Za zaporÄ…"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:314
 msgid "IPv4: Testing; IPv6: OK"
-msgstr ""
+msgstr "IPv4: TestujÄ™; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:315
 msgid "IPv4: Firewalled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Za zaporÄ…; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:316
 msgid "IPv4: Disabled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Wyłączone; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:317
 msgid "IPv4: Symmetric NAT; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Symetryczny NAT; IPv6: OK"
 
 #. * IPv4 symmetric NAT, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:319
 msgid "Symmetric NAT"
-msgstr ""
+msgstr "Symetryczny NAT"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:320
 msgid "IPv4: Symmetric NAT; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Symetryczny NAT; IPv6: TestujÄ™"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:321
 msgid "IPv4: Firewalled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Za zaporÄ…; IPv6: TestujÄ™"
 
 #. * IPv4 firewalled, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:323
@@ -207,29 +218,29 @@ msgstr "Za zaporÄ…"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:324
 msgid "IPv4: Testing; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: TestujÄ™; IPv6: Za zaporÄ…"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:325
 msgid "IPv4: Disabled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Wyłączone; IPv6: Testuję"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:326
 msgid "IPv4: Disabled; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Wyłączone; IPv6: Za zaporą"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:327
 msgid "Disconnected"
-msgstr ""
+msgstr "Rozłączono"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:328
 msgid "Port Conflict"
-msgstr ""
+msgstr "Konflikt portów"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:329
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:155
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:722
 msgid "Testing"
-msgstr "Testuje"
+msgstr "TestujÄ™"
 
 #. NPE, too early
 #. if (_context.router().getRouterInfo().getBandwidthTier().equals("K"))
@@ -290,17 +301,17 @@ msgstr "Odrzucanie tuneli: Zamykanie"
 msgid "Rejecting tunnels"
 msgstr "Odrzucanie tuneli"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
-msgstr ""
+msgstr "Ponowne seedowanie: pobrano informacje o węźle z pliku ({0} udane, {1} błędów)"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Ponowne seedowanie"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
@@ -308,26 +319,26 @@ msgstr[0] "Ponowny seed pobrał tylko 1 węzeł."
 msgstr[1] "Ponowny seed pobrał tylko {0} węzły."
 msgstr[2] "Ponowny seed pobrał tylko {0} węzłów."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Ponowne seedowanie nie udane"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Zobacz {0} w celu uzyskania pomocy."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "strona ustawień ponownego seedowania"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Ponowne seedowanie: pobieranie URL seeda"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -385,7 +396,7 @@ msgstr "Nieobsługiwany typ podpisu"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:618
 msgid "No support for our signature type"
-msgstr ""
+msgstr "Nieobsługiwany typ naszego podpisu"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:622
 msgid "Unreachable on any transport"
@@ -397,7 +408,7 @@ msgstr "Nieosiągalne na każdym transporcie"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Stan"
@@ -412,7 +423,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} jest używane tylko do połączeń wychodzących"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP nie jest włączone"
 
@@ -435,13 +446,13 @@ msgid ""
 msgstr "Aby zmienić te limity, dodaj ustawienia i2np.ntcp.maxConnections=nnn i i2np.udp.maxConnections=nnn na stronie zaawansowanych ustawień."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definicje"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -456,7 +467,7 @@ msgstr "Zdalny uczestnik, zidentifikowany przez hash węzła"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Kier."
 
@@ -483,13 +494,13 @@ msgstr "Jak długo od czasu, gdy pakiet został odebrany / wysłany"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Bezczynny"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Wejście / Wyjście"
@@ -504,14 +515,14 @@ msgstr "Jak długo od czasu, gdy połączenie zostało ustanowione"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "W górę"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Odchylenie"
 
@@ -545,7 +556,7 @@ msgstr "Próg powolnego startu"
 msgid "The round trip time in milliseconds"
 msgstr "Czas podróży w obie strony w milisekundach"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -560,7 +571,7 @@ msgstr "Obecny maksymalny rozmiar pakietu wysyłania / szacowany maksymalny rozm
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -570,7 +581,7 @@ msgstr "Całkowita liczba pakietów wysłanych do uczestnika"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -579,7 +590,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Całkowita liczba pakietów otrzymanych od uczestnika"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -588,7 +599,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Całkowita liczba pakietów retransmitowanych do uczestnika"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -627,8 +638,8 @@ msgstr "Połączenie WAN PPP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Czas działania"
 
@@ -723,17 +734,17 @@ msgid "NTCP connections"
 msgstr "Połączenia NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limit"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Limit czasu"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -746,19 +757,19 @@ msgid "Backlogged?"
 msgstr "Zaległości?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "PrzychodzÄ…ce"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "WychodzÄ…ce"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
@@ -766,107 +777,107 @@ msgstr[0] "{0} uczestnik"
 msgstr[1] "{0} uczestnicy"
 msgstr[2] "{0} uczestników"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Połączenia UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sortuj według hashu uczestnika"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Kierunek/Wprowadzenie"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sortuj według bezczynnych przychodzących"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sortuj według bezczynnych wychodzących"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sortuj według prędkości przychodzących"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sortuj według prędkości wychodzących"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sortuj według czasu działania połączenia"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sortuj według odchylenia zegara"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sortuj według okna zatłoczenia"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sortuj według  progu powolnego startu"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sortuj według czasu podróży w obie strony"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sortuj według limitu czasu retransmisji"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sortuj według maksymalnej wychodzących jednostki transmisji"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sortuj według pakietów wysłanych"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sortuj według pakietów otrzymanych"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sortuj według pakietów retransmitowanych"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sortuj według pakietów otrzymanych więcej niż jeden raz"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Zaproponowaliśmy, że ich wprowadzimy"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Zaproponowali, że nas wprowadzą"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Zdławiony"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 porażka"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} nieudanych"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Zbanowany"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "zalogowano"
 
@@ -904,66 +915,66 @@ msgstr "Odrzucanie żądań o tunele: Wysokie obciążenie"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Odrzucanie żądań o tunele: Czas kolejki"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Nowa wersja {0} wtyczki jest dostępna"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Nieudane sprawdzanie aktualizacji dla wtyczki {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Brak nowych wersji dla wtyczki {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0} bajtów przesłano"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
-msgstr ""
+msgstr "Nieudana instalacja z {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Nieudany transfer z {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Uaktualnienie ściągnięte"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "RestartujÄ™"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Zweryfikowano aktualizacjÄ™"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "z {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Niepodpisana aktualizacja z pliku {0} jest uszkodzona"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Nie udało się skopiować do {0}"
@@ -976,7 +987,7 @@ msgstr "Nie udało się skopiować do {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -990,20 +1001,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Uaktualniam"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Aktualizacje wewnątrz sieciowe wyłączone. Sprawdź managera pakietów."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Brak praw do zapisu w katalogu instalacyjnym I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Najpierw musisz aktualizować do wersji {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Wymagana jest Java w wersji {0}. Obecna zainstalowana wersja to {1}"
@@ -1193,16 +1204,20 @@ msgid "No new version found at {0}"
 msgstr "Nie znaleziono nowej wersji w {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Zbanowany permanentnie"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Tymczasowy ban wygasa w {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Zbanowany aż do restartu lub przez {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "odbanuj teraz"
 
@@ -1303,18 +1318,18 @@ msgstr "odbanuj teraz"
 msgid "I2P Router Console"
 msgstr "Konsola Węzła I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Błąd podczas aktualizowania ustawień – zobacz logi błędów"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Konfiguracja zapisana pomyślnie"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1353,7 +1368,7 @@ msgstr "Zainstaluj wtyczkÄ™"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:77
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:639
 msgid "Install Plugin from File"
-msgstr ""
+msgstr "Zainstaluj wtyczkÄ™ z pliku"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:86
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:650
@@ -1453,11 +1468,11 @@ msgstr "Brak wskazanego URL wtyczki."
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:421
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:79
 msgid "You must enter a file"
-msgstr ""
+msgstr "Musisz podać plik"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:464
 msgid "Install from file failed"
-msgstr ""
+msgstr "Instalacja z pliku nie powiodła się"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:479
 #, java-format
@@ -1476,7 +1491,7 @@ msgstr "Aktualizowanie wszystkich wtyczek"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:528
 #, java-format
 msgid "Installing plugin from {0}"
-msgstr ""
+msgstr "Instalowanie wtyczki z {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:549
 #, java-format
@@ -1522,10 +1537,10 @@ msgid "Add Client"
 msgstr "Dodaj klienta"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
-msgstr "Klient"
+msgstr "Klienckie"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:117
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:203
@@ -1554,9 +1569,9 @@ msgid "Plugin"
 msgstr "Wtyczka"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Wersja"
 
@@ -1578,7 +1593,8 @@ msgstr "Licencja"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Strona internetowa"
 
@@ -1591,7 +1607,7 @@ msgid "Stop"
 msgstr "Zatrzymaj"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Sprawdź aktualizacje"
@@ -1613,7 +1629,7 @@ msgstr "Usuń"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1623,7 +1639,7 @@ msgstr "Usuń zaznaczone"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1642,7 +1658,7 @@ msgstr "Przywróć domyślne"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1771,8 +1787,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Usuń"
 
@@ -1782,7 +1798,7 @@ msgstr "Wybierz klasÄ™ do dodania"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Przepustowość"
 
@@ -1791,7 +1807,7 @@ msgid "Home Page"
 msgstr "Strona Główna"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Sieć"
 
@@ -1847,9 +1863,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunele"
 
@@ -1867,15 +1883,15 @@ msgid "Logging"
 msgstr "Zapisywanie do loga"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Uczestnicy"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statystyki"
 
@@ -1887,8 +1903,8 @@ msgstr "Zaawansowane"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -1972,11 +1988,11 @@ msgstr "Wyłączenie trybu laptopa"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:359
 msgid "Disabling inbound IPv4"
-msgstr ""
+msgstr "Wyłączenie przychodzących IPv4"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:361
 msgid "Enabling inbound IPv4"
-msgstr ""
+msgstr "WÅ‚Ä…czenie przychodzÄ…cych IPv4"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369
 msgid "Disabling UDP"
@@ -2093,7 +2109,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:37
 msgid "You must enter a URL"
-msgstr ""
+msgstr "Musisz podać URL"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66
 msgid "Reseed in progress, check summary bar for status"
@@ -2106,12 +2122,12 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:74
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503
 msgid "Reseed from file"
-msgstr ""
+msgstr "Ponownie udostępnij z pliku"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:84
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:91
 msgid "Reseed from file failed"
-msgstr ""
+msgstr "Ponowne udostępnienie z pliku zakończone niepowodzeniem"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:86
 #, java-format
@@ -2150,7 +2166,7 @@ msgstr "Natychmiast uruchom ponownie"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Restart"
 
@@ -2593,7 +2609,7 @@ msgstr "Rosyjski"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:97
 msgid "Slovak"
-msgstr ""
+msgstr "SÅ‚owacki"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:98
 msgid "Swedish"
@@ -2624,8 +2640,8 @@ msgid "User Name"
 msgstr "Nazwa użytkownika"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Dodaj"
 
@@ -2634,91 +2650,91 @@ msgstr "Dodaj"
 msgid "Password"
 msgstr "Hasło"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Trwa już aktualizacja lub sprawdzanie"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Dostępne uaktualnienie , próba ściągnięcia"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Dostępna aktualizacja, kliknij przycisk po lewej, aby pobrać"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Brak dostepnych aktualizacji"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Aktualizowanie URL-a wiadomości do {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "wewnętrzny"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Aktualizacja hosta proxy do {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Aktualizacja portu proxy do {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Aktualizacja częstotliwości odświeżania do {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Nigdy"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Aktualizacja polityki aktualizacji do {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Aktualizaowanie zaktualizowanych adresów URL."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Uaktualnianie zaufanych kluczy"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Co"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Powiadom tylko"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "ÅšciÄ…gnij i tylko zweryfikuj"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "ÅšciÄ…gnij, zweryfikuj i zrestartuj"
 
@@ -2844,7 +2860,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Nie znaleziono żadnych \"{0}\" wydarzeń w poprzednim {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Czas"
 
@@ -2994,12 +3010,12 @@ msgid "Graph settings saved"
 msgstr "Zapisano ustawienia rysowania wykresów"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Książka adresowa"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "ZarzÄ…dzaj swoim plikiem hosta I2P tutaj (nazwa domeny I2P)"
 
@@ -3030,17 +3046,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Konfiguracja strony domowej I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Anonimowy klient pocztowy"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Pomoc węzła I2P"
 
@@ -3050,17 +3066,17 @@ msgid "Router Console"
 msgstr "Konsola węzła"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Wbudowany anonimowy klient sieci BitTorrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrenty"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Serwer lokalnej sieci"
 
@@ -3229,97 +3245,97 @@ msgstr "HTTP proxy nie działa"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Twoja przeglądarka nie jest poprawnie skonfigurowana, aby używać HTTP proxy na {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nazwa"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "Kolejka zadań I2P"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "BierzÄ…ce zadania"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Aktywne zadania"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "rozpoczęto {0} temu"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Niedawno zakończone zadania"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "zakończono {0} temu"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Gotowe/czekajÄ…ce zadania"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Zaplanowane zadania"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} zacznie siÄ™ za {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Statystyka ogólu zadań"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Zadanie"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "W kolejce"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Uruchomiony"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Åšredia"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Maksimum"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Minimum"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Czeka"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Podsumowanie"
 
@@ -3337,223 +3353,223 @@ msgid "No log messages"
 msgstr "Brak logów"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Węzeł lokalny"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Sprawdź węzeł"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Wszytkie węzły"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Wszytkie węzły z pełnymi statystykami"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Węzeł"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "nie znaleziono w bazie danych sieci"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Lokalny"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Nieopublikowany"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Miejsce przeznaczenia"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Dodaj do lokalnej książki adresowej"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Wygasa {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Wygasło {0} temu"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Brama"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Nie zainicjalizowany"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Statystyka Sieciowej Bazy Danych Węzła"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Policz"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transporty"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Kraj"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Nasze informacje"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Info dla uczestnika"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Pełny wpis"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Ukryte"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Uaktualnione"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} temu"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Opublikowane"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Klucz podpisujÄ…cy"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adres(y)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "koszt"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Ukryte lub uruchamia siÄ™"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU z przedstawicielami"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP i SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP i SSU z przedstawicielami"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 tylko SSU, przedstawiciele"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, przedstawiciele"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, przedstawiciele"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 tylko NTCP, SSU, przedstawicieli"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Wiadomości uaktualnione {0} temu."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Wiadomości ostatnio sprawdzono {0} temu."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Ukryj wiadomości"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Pokaż wiadomości"
 
@@ -3577,7 +3593,7 @@ msgstr[2] "{0} wtyczek zaktualizowanych"
 msgid "Plugin update check complete"
 msgstr "Sprawdzanie dostępności aktualizacji dla wtyczek zakończone"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3607,19 +3623,19 @@ msgid "Groups (Caps)"
 msgstr "Grupy"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Prędkość"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Wydajność"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integracja"
 
@@ -3642,7 +3658,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Zintegrowani"
 
@@ -3719,71 +3735,71 @@ msgstr "Godzinny Wskaźnik Niepowodzeń"
 msgid "1d Fail Rate"
 msgstr "Dniowy Wskaźnik Niepowodzeń"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Progi"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "szybcy uczestnicy"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "uczestnicy o wysokiej wydajności"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "uczestnicy dobrze zintegrowani"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "jak określono przez organizatora profilu"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupy"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "ograniczenia"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "szybkość"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "pojemność"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "do ilu tuneli możemy się zwrócić z prośbą o dołączenie w ciągu godziny?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "o ilu nowych uczestnikach powiadomili nas ostatnio?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integracja"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "czy uczestnik jest zbanowany, nieosiągalny lub nie zalicza testów tunelu?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "stan"
 
@@ -3913,277 +3929,277 @@ msgstr "Wykresu częstotliwości wydarzeń"
 msgid "Lifetime average value"
 msgstr "liczba życiowej średniej"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Pomoc węzła I2P oraz Najczęściej zadawane pytania"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Pomoc i FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Konfiguruj rozruch klientów i aplikacji sieciowych (usług); ręcznie uruchom uśpione usługi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Usługi I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Skonfiguruj węzeł I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Wnętrzności I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Wyświetl istniejące tunele i status budowy tunelu"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Pokaż wszystkie aktualne połączenia z uczestnikami"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Pokaż ostatnie profile wydajności uczestników"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profile"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Pokaż listę wszystkich znanych węzłów I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Raport zdrowotny"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Logi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Wykres wydajności węzła"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Wykresy"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Lokalne tunele"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
-msgstr "Zarządzanie ukrytymi usługami"
+msgstr "Zarządzaj ukrytymi usługami"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Ogólne"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Twoja Lokalna Tożsamość jest unikalną tożsamością węzła I2P podobną do adresu IP, lecz zgodną z I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Nigdy jej nikomu nie ujawniaj, gdyż może ona doprowadzić do odkrycia Twojego rzeczywistego ip."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Lokalna Tożsamość"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Twoja unikatowa tożsamość węzłą I2P to"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "nigdy nie pokazuj nikomu"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "pokaż"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Wersja używanego softwaru I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Jak długo trwa aktualna sesja"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Pomóż nam optymalizować wydajność I2P konfigurując zaporę i węzeł"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Więcej informacji zobacz na wiki"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Uwaga: ECDSA niedostępne. Zaktualizuj Javę lub system operacyjny."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Konfiguracja aktualizacji I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Aktualizacja I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Uczestnicy, z którymi komunikowaliśmy się przez ostatnie parę minut/ostatnią godzinę"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
-msgstr "Aktywne"
+msgstr "Aktywni"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Liczba uczestników dostępnych do budowania tuneli klienta"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Szybcy"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Liczba uczestników dostępna do budowania tuneli rozpoznawczych"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Wysokiej przepustowości"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Ilość uczestników dostępnych do zapytań bazy danych sieci"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Całkowita liczba uczestników w naszej sieciowej bazie danych"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Znani"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Ustaw przydzielanie przepustowości"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
-msgstr "Przepustowość przychodząca/wychodząca"
+msgstr "Przepustowość przychodząca / wychodząca"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Razem"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Użyte"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Rozpoznawcze"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Używamy tuneli dla zabezpieczenia lub uzyskania dostępu do usług w sieci"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Uczestnictwo"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Co znajduje się w kolejce zadań węzła?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Zatłoczenie"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Pokazuje wydajność węzła"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Opóźnienie zadań"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Wskazuje, z jaką prędkością wysyłane są wiadomości do innych węzłów I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Opóźnienie wiadomości"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Opóźnienie tunelu"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Zakolejkowane zapytania z innych węzłów dot. uczestnictwa w tunelach"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Wiadomości i aktualizacje"
 
@@ -4287,26 +4303,26 @@ msgstr "Tworzenie tuneli"
 msgid "shared clients"
 msgstr "Współdzielone klienty"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Kliknij Restart by zainstalować"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Kliknij Zamknięcie i zrestartuj, by zainstalować"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Wersja {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Aktualizacja jest dostępna"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Pobierz {0} Uaktualnień"
@@ -4315,7 +4331,7 @@ msgstr "Pobierz {0} Uaktualnień"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4324,69 +4340,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Pomoc w konfiguracji zapory"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Sprawdź połączenie sieciowe oraz NAT/zaporę"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Ponownie seeduj"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Kolejność"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Góra"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Przenieś na górę"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Przenieś w górę"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "W dół"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "Przenieś w dół"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Dół"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "Przenieś na dół"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Wybierz sekcję, którą chcesz dodać"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "zdarzenia w {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "uśrednione dla {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Zdarzenia przez okres czasu"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "średnia"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "maksimum"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "teraz"
 
@@ -4563,175 +4595,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Przy uruchamianiu węzła otwieraj konsolę w przeglądarce internetowej"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "proxy IRC"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "Serwer internetowy I2P"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klasyczny"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "ciemny"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "jasny"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "północ"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "OgraniczeniePrzepustowości"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "WiadomościKlienta"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Szyfrowanie"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "Tunel I2P"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "KolejkaZadań"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "SieciowaBazaDanych "
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Strumień"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "klucz"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "konfiguruj przepustowość"
@@ -4900,7 +4884,7 @@ msgid "Share"
 msgstr "Udostępnij"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "UWAGA"
@@ -4941,7 +4925,7 @@ msgid "Advanced network configuration page"
 msgstr "Strona zaawansowanych ustawień sieciowych"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4980,27 +4964,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
-msgid "Automatic"
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
-msgid "Force On"
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
-msgid "Disable"
+msgid "Automatic"
+msgstr "Automatycznie"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
+msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
+msgid "Disable"
+msgstr "Wyłącz"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Zaawansowana konfiguracja I2P"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Niektóre zmiany mogą wymagać restartu, aby zmiany były widoczne."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "By poczynić zmiany, edytuj plik {0}."
@@ -5126,7 +5118,7 @@ msgstr "Wtyczki podane poniżej są uruchamiane przez klienta webConsole."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:616
 msgid "Plugin Installation from URL"
-msgstr ""
+msgstr "Zainstaluj wtyczkÄ™ z adresu www"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:618
 #, java-format
@@ -5139,19 +5131,19 @@ msgstr "Aby zainstalować wtyczkę, proszę wprowadzić adres URL:"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:631
 msgid "Plugin Installation from File"
-msgstr ""
+msgstr "Zainstaluj wtyczkÄ™ z pliku"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:635
 msgid "Install plugin from file."
-msgstr ""
+msgstr "Zainstaluj wtyczkÄ™ z pliku"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:637
 msgid "Select xpi2p or su3 file"
-msgstr ""
+msgstr "Wypierz plik xpi2p lub su3"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:646
 msgid "Update All Plugins"
-msgstr ""
+msgstr "Aktualizuj wszystkie wtyczki"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:150
 msgid "config home"
@@ -5369,7 +5361,7 @@ msgstr "Eksperymentalny"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:532
 msgid "IPv4 Configuration"
-msgstr ""
+msgstr "Ustawienia IPv4"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:536
 msgid "Disable inbound (Firewalled by Carrier-grade NAT or DS-Lite)"
@@ -5684,7 +5676,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:744
 msgid "WARN - Firewalled with Inbound TCP Enabled"
-msgstr ""
+msgstr "OSTRZEŻENIE - Włączona zapora akceptująca przychodzące pakiety TCP"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:746
 msgid ""
@@ -5903,7 +5895,7 @@ msgstr "FAQ"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:483
 msgid "Manual Reseed from URL"
-msgstr ""
+msgstr "Ręczne seedowanie z adresu URL"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:485
 msgid "Enter zip or su3 URL"
@@ -5925,11 +5917,11 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:495
 msgid "Manual Reseed from File"
-msgstr ""
+msgstr "Ręczne seedowanie z pliku"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:497
 msgid "Select zip or su3 file"
-msgstr ""
+msgstr "Wybierz plik zip lub su3"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:505
 msgid "Create Reseed File"
diff --git a/apps/routerconsole/locale/messages_pt.po b/apps/routerconsole/locale/messages_pt.po
index b90db0c5be3a8bfcb09fc6d1cd4f6f7b7aa62058..4348fff98bcd33d76ecb41acd516193840301b3d 100644
--- a/apps/routerconsole/locale/messages_pt.po
+++ b/apps/routerconsole/locale/messages_pt.po
@@ -33,8 +33,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/pt/)\n"
 "MIME-Version: 1.0\n"
@@ -54,8 +54,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -64,8 +64,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -74,8 +74,8 @@ msgstr[1] "{0} seg"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -84,37 +84,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 hora"
 msgstr[1] "{0} horas"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "indisponível"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 dia"
 msgstr[1] "{0} dias"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "indisponível"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -157,7 +166,7 @@ msgstr "Para"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "nenhum"
@@ -296,43 +305,43 @@ msgstr "A rejeitar túneis: A Desligar"
 msgid "Rejecting tunnels"
 msgstr "A rejeitar túneis"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "Ressemeando: dados obtidos ({0} com sucesso, {1} erros)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Ressemeando"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "A propagação encontrou apenas 1 Roteador."
 msgstr[1] "A propagação encontrou {0} Roteadores."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "A propagação falhou."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Ver {0} para ajuda."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "página de configuração de propagação"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Propagação: procurar semente de URL"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -402,7 +411,7 @@ msgstr "Inalcançável em qualquer transporte"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Estado"
@@ -417,7 +426,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} é usado para conexões de saída apenas"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP não está habilitado"
 
@@ -440,13 +449,13 @@ msgid ""
 msgstr "Para substituir esses limites, adiciona as definições i2np.ntcp.maxConnections=nnn e i2np.udp.maxConnections=nnn na página de configuração avançada."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definições"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -461,7 +470,7 @@ msgstr "O Par/Vizinho remoto, identificado pelo hash de roteador"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Dir"
 
@@ -488,13 +497,13 @@ msgstr "Quanto tempo desde que o ultimo pacote foi recebido / enviado"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Inativo"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Entrada/Saída"
@@ -509,14 +518,14 @@ msgstr "A quanto tempo foi estabelecida esta conexão"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Cima"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Skew"
 
@@ -550,7 +559,7 @@ msgstr "O limitador de inicio lento "
 msgid "The round trip time in milliseconds"
 msgstr "O tempo de ida e volta em milisegundos"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -565,7 +574,7 @@ msgstr "Limite máximo actual de tamanho de pacotes / máximo estimado de tamanh
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -575,7 +584,7 @@ msgstr "O numero total de pacotes enviados pelo par"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -584,7 +593,7 @@ msgid "The total number of packets received from the peer"
 msgstr "O numero total de pacotes recebidos pelo par"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -593,7 +602,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "O numero total de pacotes retransmitidos para o par"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -632,8 +641,8 @@ msgstr "Conexão PPP na WAN"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Tempo em funcionamento"
 
@@ -728,17 +737,17 @@ msgid "NTCP connections"
 msgstr "Conexões NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Tempo Limite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -751,126 +760,126 @@ msgid "Backlogged?"
 msgstr "Voltar Logado?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Entrada"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Saída"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} par"
 msgstr[1] "{0} pares"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Conexões UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Ordenar por tipos de Pares"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Direcção/Introdução"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Ordenar por entrada inactiva"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Ordenar por saída inactiva"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Ordenar por taxa de entrada"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Ordenar por taxa de saída"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Ordenar por tempo de conexão ligada"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Ordenar por desajustamento do relógio"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Ordenar por janela de congestionamento"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Ordenar por limitador de inicio lento "
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Ordenar por tempo de ida e volta"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Ordenar por tempo limite de retransmissão"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Ordenar por unidade de transmissão de saída máxima"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Ordenar por envio de pacotes"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Ordenar por pacotes recebidos"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Ordenar por pacotes retransmitidos"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Ordenar por pacotes recebidos mais que uma vez"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Oferecemos-nos para os apresentar"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Eles oferecem-se para nos apresentar"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Sufocada"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 falha"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} falhas"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Banido"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "backlogged"
 
@@ -908,66 +917,66 @@ msgstr "A rejeitar pedidos de túneis: Carga elevada"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "A descartar pedidos de túneis: Tempo de fila"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Nova versão para a extensão {0} está disponível"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Não foi possível verificar por atualizações {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Nenhuma versão nova disponível para extrensão {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0} bytes transferidos"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Instalação falhada de {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Falha na transferência de {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Atualização baixada"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Reiniciando"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Atualização verificada"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "de {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Arquivo de atualização sem assinatura {0} está corrompido"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Cópia para {0} falhou"
@@ -980,7 +989,7 @@ msgstr "Cópia para {0} falhou"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -994,20 +1003,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Atualizando"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Actualizações na rede desactivadas. Verifique o gestor de pacotes."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Não possui permissões de escrita no directório de instalação do I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Necessita primeiro de actualizar para a versão {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Java na versão {0} é requerido, no entanto a versão {1} é a actualmente instalada"
@@ -1197,16 +1206,20 @@ msgid "No new version found at {0}"
 msgstr "Nenhuma versão nova encontrada em {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Banimento temporário termina em {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Banido até reiniciar ou em {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "desbanir agora"
 
@@ -1307,18 +1320,18 @@ msgstr "desbanir agora"
 msgid "I2P Router Console"
 msgstr "Painel do Roteador I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Erro ao atualizar a configuração - consulte os logs de erros"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configuração salva com sucesso"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1526,7 +1539,7 @@ msgid "Add Client"
 msgstr "Adicionar cliente"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Cliente"
@@ -1558,9 +1571,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versão"
 
@@ -1582,7 +1595,8 @@ msgstr "Licença"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Website"
 
@@ -1595,7 +1609,7 @@ msgid "Stop"
 msgstr "Stop"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Verificar por actualizações "
@@ -1617,7 +1631,7 @@ msgstr "Apagar"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1627,7 +1641,7 @@ msgstr "Apagar selecionados"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1646,7 +1660,7 @@ msgstr "Voltar ao padrão"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1775,8 +1789,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Remover"
 
@@ -1786,7 +1800,7 @@ msgstr "Selecione uma classe para adicionar"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Velocidade"
 
@@ -1795,7 +1809,7 @@ msgid "Home Page"
 msgstr "Página inicial"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Network"
 
@@ -1851,9 +1865,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnels"
 
@@ -1871,15 +1885,15 @@ msgid "Logging"
 msgstr "Logging"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Pares"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Stats"
 
@@ -1891,8 +1905,8 @@ msgstr "Advanced "
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2153,7 +2167,7 @@ msgstr "reiniciar imediatamente"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "reiniciar"
 
@@ -2624,8 +2638,8 @@ msgid "User Name"
 msgstr "Nome de usuário"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Adicionar"
 
@@ -2634,91 +2648,91 @@ msgstr "Adicionar"
 msgid "Password"
 msgstr "Palavra-passe"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Atualização ou verificação já em andamento"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Atualização disponível, tentando baixar agora"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Atualização disponível, clique no botão à esquerda para baixar"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Nenhuma atualização disponível"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Atualizando a URL de notícias para {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "interno"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Alterando servidor proxy para {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Alterando porta do proxy para {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Alterando período de atualização para {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Nunca"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Alterando política de atualização para {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Actualizando actualização de URL ."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Atualizando chaves confiadas."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Alterando URL de atualizações não assinadas para {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Sempre"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Avisar apenas"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Descarregar e verificar apenas"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Descarregar, verificar e reiniciar"
 
@@ -2844,7 +2858,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tempo"
 
@@ -2994,12 +3008,12 @@ msgid "Graph settings saved"
 msgstr "Configurações de gráfico salvas"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Livro de endereços"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Gerenciar o seu arquivo de hosts I2P aqui (resolução de nomes de domínio I2P)"
 
@@ -3030,17 +3044,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Configuração da página inicial do I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Cliente do webmail anônimo"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Ajuda do Roteador I2P"
 
@@ -3050,17 +3064,17 @@ msgid "Router Console"
 msgstr "Painel do Roteador"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Cliente BitTorrent anônimo embutido"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrentes"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Servidor web local"
 
@@ -3229,97 +3243,97 @@ msgstr "O proxy HTTP não está alcançável"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "O navegador não está configurado adequadamente para usar o proxy HTTP em {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nome"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "Lista Tarefas I2P"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Executador de tarefas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Tarefas activas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "iniciado à {0}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Tarefas completadas recentemente"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "finalizado à {0}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Tarefas finalizadas/espera"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Tarefas agendadas"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} será iniciado em {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Estatísticas das tarefas"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Tarefa"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "Em espera"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Em execução"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Média"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Máximo"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Mínimo"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Em espera"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Resumo"
 
@@ -3337,223 +3351,223 @@ msgid "No log messages"
 msgstr "Sem registro de mensagens"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Roteador Local"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Pesquisa de Roteador"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Todos os roteadores"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Todos os roteadores com status completo"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSets"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Roteador"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "não encontrado no banco de dados da rede"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Não publicado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destino"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Expira em {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Expirado {0} atrás"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Gateway"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Concessão"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Túnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Não iniciado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Estatísticas do roteador I2P"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Contagem"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transportes"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "País"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Nossas informações"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Informações do Par para"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Informação completa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Escondido"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Atualizado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} atrás"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publicado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Endereço(s)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "custo"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Invisível ou iniciando"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU com intermediadores"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP e SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP e SSU com intermediadores"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "Apenas IPv6 com introdutores SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "SSU IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "SSU introdutores com IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "NTCP IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "NTCP e SSU com IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "NTCP e SSU introdutores com IPv6"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "Apenas NTCP e SSU introdutores com IPv6"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Notícias atualizadas {0} atrás."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Notícias verificadas {0} atrás."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Esconder notícias"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Mostrar notícias"
 
@@ -3576,7 +3590,7 @@ msgstr[1] "{0} extensões atualizadas"
 msgid "Plugin update check complete"
 msgstr "Verificação de atualização para extensões completada"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3603,19 +3617,19 @@ msgid "Groups (Caps)"
 msgstr "Grupos (Caps)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Velocidade"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capacidade"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integração"
 
@@ -3638,7 +3652,7 @@ msgid "Failing"
 msgstr "Falhando"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrado"
 
@@ -3715,71 +3729,71 @@ msgstr "1h taxa de falha"
 msgid "1d Fail Rate"
 msgstr "1d taxa de falha"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Limiares"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "pares rápidos"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "pares com alta capacidade"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "pares bem integrados"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "como determinado pelo organizador de perfil"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupos"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "capacidades do netDb, não usadas para determinar perfil"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "caps"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "pico transferência (bytes/s) por 1 minuto que o par permaneceu em um túnel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "velocidade"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "capacidade"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "quantos túneis podemos convidar para participar em uma hora?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "quantos novos pares nos foram apresentados recentemente?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integração"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "o Par está banido, ou não alcançável ou com problemas para o teste de túnel?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "estado"
 
@@ -3907,277 +3921,277 @@ msgstr "Contador de Eventos do Gráfico"
 msgid "Lifetime average value"
 msgstr "Valor médio total"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Ajuda do Roteador I2P &amp; Perguntas Frequentes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Ajuda &amp; Perguntas Freqüentes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Configurar o inicio de clientes e webapps (serviços); iniciar manualmente os serviços parados"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Serviços I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Configurar Roteador I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Detalhes I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Ver túneis estabelecidos e estado da construção de túneis"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Mostrar todas conexões atuais com os pares"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Mostrar perfis de performance recentes dos pares"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Perfis"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Mostrar lista de todos os roteadores I2P conhecidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "Banco de dados da rede"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Relatório de Saúde"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Registros"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Gráfico de performance do roteador"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Gráficos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Estatísticas textuais de performance do roteador"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Geral"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Tua identidade local é a identificação do roteador I2P, parecido com um endereço IP mas para a rede I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Não reveles isso a ninguém, pois isso pode revelar teu endereço IP externo."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Identidade local"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Seu identificador I2P único é"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "nunca mostre-o para alguém"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "mostrar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Versão do I2P sendo usada agora"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Tempo de duração desta sessão"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Ajuda na configuração do seu firewall e roteador para o melhor desempenho I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Configurar atualizações I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Atualizações do I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Pares que estivemos conversando nos últimos minutos ou na última hora"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Ativos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Número de pares disponíveis para construir túneis cliente"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Rápidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Número de pares disponíveis para construir túneis exploradores"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Alta capacidade"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "O número de pares disponíveis para as consultas ao banco de dados da rede"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Número total de pares em nosso banco de dados da rede"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Conhecidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Configurar limites de velocidade"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Velocidade entr/sai"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Total"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Usados"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Usado para criar e testar túneis, e comunicar com pares de floodfill"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Exploradores"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Túneis usados para prover ou acessar serviços na rede"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Túneis com nossa participação, contribuindo diretamente para a transmissão de dados da rede"
+msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Participantes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "A proporção de Saltos de Túnel que oferecemos para Saltos de Túnel que usamos - um valor acima de 1.00 indica uma contribuição positiva para a rede"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Razão de compartilhamento"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "O quê está na fila de tarefas do roteador?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Congestionamento"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indica o desempenho do roteador"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Atraso tarefa"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indica quão rapidamente mensagens saindo para outros roteadores I2P são enviadas"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Atraso de mensagem"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Tempo de retorno da mensagem para um teste de túnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Atraso túnel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Pedidos enfileirados vindos de outros roteadores para participar em túneis"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Backlog"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Notícias &amp; Atualizações"
 
@@ -4281,26 +4295,26 @@ msgstr "Construindo túneis"
 msgid "shared clients"
 msgstr "clientes compartilhados"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Clique Reiniciar para instalar"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Clique Desligar e reiniciar para instalar"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versão {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Actualização disponível."
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Download {0} Atualização"
@@ -4309,7 +4323,7 @@ msgstr "Download {0} Atualização"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4318,69 +4332,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Download Atualização<br>Não assinada {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Ajuda com a configuração do firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Verificar as conexões de rede e o firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Ressemear"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Ordem"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Topo"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Baixo"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Baixo"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Selecione uma seção a ser adicionada"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "eventos em {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "média para {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Eventos por período"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "média"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "máximo"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "agora"
 
@@ -4557,175 +4587,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Abrir Painel do Roteador na janela do navegador ao iniciar"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "Proxy IRC"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "Webserver I2P"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "clássico"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "escuro"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "iluminado"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "meia-noite"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Limitador de velocidade"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "ClientMessages"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Criptografia"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "Túnel I2P"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "JobQueue"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "NetworkDatabase"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Fluxo"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Limite"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transporte"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "chave"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "porta"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "configurar banda larga"
@@ -4894,7 +4876,7 @@ msgid "Share"
 msgstr "Compartilhar"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTA"
@@ -4935,7 +4917,7 @@ msgid "Advanced network configuration page"
 msgstr "Configuração avançada de rede"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4974,27 +4956,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Configuração Avançada do I2P"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Algumas alterações podem precisar de um reinício para fazerem efeito."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_pt_BR.po b/apps/routerconsole/locale/messages_pt_BR.po
index 538d2fd2146a5d12442c6c9f63e581bca719aaa5..cc050e7c30064a57190daf748629300982b4913d 100644
--- a/apps/routerconsole/locale/messages_pt_BR.po
+++ b/apps/routerconsole/locale/messages_pt_BR.po
@@ -13,9 +13,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-20 21:47+0000\n"
-"Last-Translator: Guteemebrg Nunes <gutemhc@gmail.com>\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
+"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -34,8 +34,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -44,18 +44,18 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
-msgstr[0] "{0} seg"
+msgstr[0] "1 seg"
 msgstr[1] "{0} seg"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -64,37 +64,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "{0} horas"
 msgstr[1] "{0} horas"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/a"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "{0} dias"
 msgstr[1] "{0} dias"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/a"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -137,7 +146,7 @@ msgstr "Para"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "nenhum"
@@ -276,43 +285,43 @@ msgstr "Rejeitando túneis: desligando"
 msgid "Rejecting tunnels"
 msgstr "Rejeitando túneis"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reenviando"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reenvio falhou."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Ver {0} para obter ajuda."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -382,7 +391,7 @@ msgstr ""
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr ""
@@ -397,7 +406,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} é usado somente por conexões de saída"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr ""
 
@@ -420,13 +429,13 @@ msgid ""
 msgstr "Para sobrescrever estes limites, adicione as espeficações i2np.ntcp.maxConnections=nnn e i2np.udp.maxConnections=nnn na página de configurações avançadas."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definições"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -441,7 +450,7 @@ msgstr "Par remoto, identificado pela hash do roteador"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Dir"
 
@@ -468,13 +477,13 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Ocioso"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Entrada/Saída"
@@ -489,14 +498,14 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Acima"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Defasagem"
 
@@ -530,7 +539,7 @@ msgstr ""
 msgid "The round trip time in milliseconds"
 msgstr ""
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -545,7 +554,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -555,7 +564,7 @@ msgstr "Número total de pacotes enviados ao par"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -564,7 +573,7 @@ msgid "The total number of packets received from the peer"
 msgstr "O número total de pacotes recebidos do par"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -573,7 +582,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "O número total de pacotes retransmitidos ao par"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -612,8 +621,8 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Ligado a"
 
@@ -708,17 +717,17 @@ msgid "NTCP connections"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Tempo limite"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -731,126 +740,126 @@ msgid "Backlogged?"
 msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Entrante"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Saída"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} nó"
 msgstr[1] "{0} pares"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Ordenar pela hash do par"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Direção/Introdução"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Ofereceram-se para nos introduzir"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Obstruído"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 falha"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} falhas"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Banido"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -888,66 +897,66 @@ msgstr ""
 msgid "Dropping tunnel requests: Queue time"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Um nova versão da extensão {0} está disponível"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Não há nenhuma nova versão da extensão {0} disponível"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B transferidos"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Atualização baixada"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Reinicializando"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Atualização verificada"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "de {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "A cópia para {0} falhou"
@@ -960,7 +969,7 @@ msgstr "A cópia para {0} falhou"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -974,20 +983,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Atualizando"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1177,16 +1186,20 @@ msgid "No new version found at {0}"
 msgstr "Nenhuma nova versão de {0} foi encontrada"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr ""
 
@@ -1287,18 +1300,18 @@ msgstr ""
 msgid "I2P Router Console"
 msgstr "Painel do roteador I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configuração salva com sucesso"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1506,7 +1519,7 @@ msgid "Add Client"
 msgstr "Adicionar cliente"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Cliente"
@@ -1538,9 +1551,9 @@ msgid "Plugin"
 msgstr "Extensão"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versão"
 
@@ -1562,7 +1575,8 @@ msgstr "Licença"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Website"
 
@@ -1575,7 +1589,7 @@ msgid "Stop"
 msgstr "Parar"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Verificar se há atualizações"
@@ -1597,7 +1611,7 @@ msgstr "Deletar"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1607,7 +1621,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1626,7 +1640,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1755,8 +1769,8 @@ msgstr "AVISO"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Remover"
 
@@ -1766,7 +1780,7 @@ msgstr "Selecione uma classe para adicionar"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Largura de banda"
 
@@ -1775,7 +1789,7 @@ msgid "Home Page"
 msgstr "Página Inicial"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Rede"
 
@@ -1831,9 +1845,9 @@ msgid "UI"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Túneis"
 
@@ -1851,15 +1865,15 @@ msgid "Logging"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Pares"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Estatísticas"
 
@@ -1871,8 +1885,8 @@ msgstr "Avançado"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2133,7 +2147,7 @@ msgstr "Reinicializar imediatamente"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Reiniciar"
 
@@ -2604,8 +2618,8 @@ msgid "User Name"
 msgstr "Nome de Usuário"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Adicionar"
 
@@ -2614,91 +2628,91 @@ msgstr "Adicionar"
 msgid "Password"
 msgstr "Senha"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Atualização disponível, tentando baixar agora"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Atualização disponível, clique no botão a esquerda para baixar"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Nenhuma atualização disponível"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Nunca"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Sempre"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Informar apenas"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Baixar e verificar apenas"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Baixar, verificar e reinicializar"
 
@@ -2824,7 +2838,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tempo"
 
@@ -2974,12 +2988,12 @@ msgid "Graph settings saved"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Livro de endereços"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3010,17 +3024,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Cliente de webmail anônimo"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Ajuda do roteador I2P"
 
@@ -3030,17 +3044,17 @@ msgid "Router Console"
 msgstr "Painel do roteador"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrentes"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr ""
 
@@ -3209,97 +3223,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nome"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Processos ativos"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "iniciado {0} atrás"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "finalizado {0} atrás"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Média"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Máx"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Pendente"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Índice"
 
@@ -3317,223 +3331,223 @@ msgid "No log messages"
 msgstr "Nenhuma mensagem de registro"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Todos Roteadores"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Roteador"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "não encontrado no banco de dados da rede"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Não publicado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destino"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Expira em {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Expirou a {0} atrás"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Túnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Não inicializado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Contagem"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Trasportes"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "País"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Informação nossa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Entrada completa"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Oculto"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Atualizado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} atrás"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publicado"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Endereço(s)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "custo"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Oculto ou inicializando"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP e SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Ocultar notícias"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Mostrar notícias"
 
@@ -3556,7 +3570,7 @@ msgstr[1] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3583,19 +3597,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Velocidade"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capacidade"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integração"
 
@@ -3618,7 +3632,7 @@ msgid "Failing"
 msgstr "Falhando"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrado"
 
@@ -3695,71 +3709,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "pares rápidos"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "pares de alta capacidade"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "pares bem integrados"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupos"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "velocidade"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "capacidade"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "status"
 
@@ -3887,277 +3901,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Ajuda &amp; Perguntas Frequentes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Serviços I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Configurar o roteador I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Perfis"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Mostrar uma lista com todos os roteadores I2P conhecidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Registros"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Túneis Locais"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Informações gerais"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Identidade local"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "O identificador, único, do seu roteador I2P é"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "nunca revele-o para alguém"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "mostrar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Aviso: ECDSA não disponível. Atualize seu Java ou SO"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Ativos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Rápidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Com alta capacidade"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "O número total de pares em nosso banco de dados da rede"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Conhecidos"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Largura de banda: Entrada/Saída"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Total"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Usados"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Exploratórios"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Participantes"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Taxa de compartilhamento"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "O que está na fila de tarefas do roteador?"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Congestionamento"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Notícias &amp; Atualizações"
 
@@ -4261,26 +4275,26 @@ msgstr ""
 msgid "shared clients"
 msgstr "clientes compartilhados"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versão {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Atualização disponível"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4289,7 +4303,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4298,69 +4312,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Ajuda com a configuração do Firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Reenvio"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "eventos em {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Eventos por período"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "média"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "máx"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "agora"
 
@@ -4537,175 +4567,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "Proxy IRC"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr ""
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "Proxy HTTP"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "proxyIrc"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "clássico"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "escuro"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "luminoso"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "meia-noite"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Criptografia"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "Túnel I2P"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transporte"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "chave"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "porta"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "configuração de banda"
@@ -4874,7 +4856,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4915,7 +4897,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4954,27 +4936,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Automático"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Desativar"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Configuração avançada da I2P"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_ro.po b/apps/routerconsole/locale/messages_ro.po
index c4a6f2389cd612ea2eca8fe2b88d1ea6270c7596..37f8dae46300982ff832bddf345c3ef002bc25d3 100644
--- a/apps/routerconsole/locale/messages_ro.po
+++ b/apps/routerconsole/locale/messages_ro.po
@@ -7,15 +7,17 @@
 # CimpianAlin <inactive+CimpianAlin@transifex.com>, 2013
 # CimpianAlin <inactive+CimpianAlin@transifex.com>, 2013
 # Predator <Predator@windowslive.com>, 2013
+# Di N., 2015
 # Petre Catalin Alexandru <cosmoreddog@gmail.com>, 2014
 # Predator <Predator@windowslive.com>, 2013
+# titus <titus0818@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-19 20:06+0000\n"
+"Last-Translator: titus <titus0818@gmail.com>\n"
 "Language-Team: Romanian (http://www.transifex.com/projects/p/I2P/language/ro/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -34,8 +36,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -45,8 +47,8 @@ msgstr[2] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -56,8 +58,8 @@ msgstr[2] "{0} sec"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -67,8 +69,8 @@ msgstr[2] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
@@ -76,15 +78,9 @@ msgstr[0] "1 hour"
 msgstr[1] "{0} hours"
 msgstr[2] "{0} hours"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/a"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
@@ -92,7 +88,23 @@ msgstr[0] "1 zi"
 msgstr[1] "{0} zile"
 msgstr[2] "{0} zile"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+msgstr[1] ""
+msgstr[2] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/a"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
@@ -100,7 +112,7 @@ msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -144,7 +156,7 @@ msgstr "Pentru"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "nici unul"
@@ -157,40 +169,40 @@ msgstr "OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:312
 msgid "IPv4: OK; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: OK; IPv6: ÃŽn curs de testare"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:313
 msgid "IPv4: OK; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: OK; IPv6: Firewall"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:314
 msgid "IPv4: Testing; IPv6: OK"
-msgstr ""
+msgstr "IPv4: ÃŽn curs de testare; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:315
 msgid "IPv4: Firewalled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Firewall; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:316
 msgid "IPv4: Disabled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Dezactivat; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:317
 msgid "IPv4: Symmetric NAT; IPv6: OK"
-msgstr ""
+msgstr "IPv4: NAT simetric; IPv6: OK"
 
 #. * IPv4 symmetric NAT, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:319
 msgid "Symmetric NAT"
-msgstr ""
+msgstr "NAT simetric"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:320
 msgid "IPv4: Symmetric NAT; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: NAT simetric; IPv6: ÃŽn curs de testare"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:321
 msgid "IPv4: Firewalled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Firewall; IPv6: ÃŽn curs de testare"
 
 #. * IPv4 firewalled, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:323
@@ -200,23 +212,23 @@ msgstr "Firewall"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:324
 msgid "IPv4: Testing; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: ÃŽn curs de testare; IPv6: Firewall"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:325
 msgid "IPv4: Disabled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Dezactivat; IPv6: ÃŽn curs de testare"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:326
 msgid "IPv4: Disabled; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Dezactivat; IPv6: Firewall"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:327
 msgid "Disconnected"
-msgstr ""
+msgstr "Deconectat"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:328
 msgid "Port Conflict"
-msgstr ""
+msgstr "Conflict Port"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:329
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:155
@@ -283,17 +295,17 @@ msgstr "Respingere tuneluri: Oprire"
 msgid "Rejecting tunnels"
 msgstr "Refuza tuneluri"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
-msgstr ""
+msgstr "Reseeding: preluare informații din router de la fișierul ({0} reuşit, {1} erori)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseeding"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
@@ -301,26 +313,26 @@ msgstr[0] "Însământarea a adus doar 1 router."
 msgstr[1] "Însământarea a preluat doar {0} routere."
 msgstr[2] "Reseed a preluat doar {0} routere."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed a eșuat."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Vezi {0} pentru ajutor."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "Pagina de configurare pentru reseed"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseeding: preluare a URL-ului de seed."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -356,11 +368,11 @@ msgstr "Colegii rapizi cunoscute"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:41
 msgid "Known integrated (floodfill) peers"
-msgstr ""
+msgstr "Colegi integrați cunoscuți (floodfill)"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:42
 msgid "Size of tunnel acceptor backlog"
-msgstr ""
+msgstr "Dimensiune log de tunnel acceptor nesoluționate "
 
 #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:502
 msgid "NetDb entry"
@@ -374,11 +386,11 @@ msgstr "Nici un transport (ascunse sau în pornire?)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:601
 msgid "Unsupported signature type"
-msgstr ""
+msgstr "Tip semnătură nesuportat"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:618
 msgid "No support for our signature type"
-msgstr ""
+msgstr "Nu există suport pentru tipul nostru de semnătură"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:622
 msgid "Unreachable on any transport"
@@ -390,7 +402,7 @@ msgstr "Inaccesibil pe orice transport"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Stare"
@@ -405,7 +417,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} conexiuni de ieșire sunt folosite"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP nu este activat"
 
@@ -428,13 +440,13 @@ msgid ""
 msgstr "Pentru a trece peste aceste limite, se adaugă i2np.tcp.maxConnections setările = nnn n i2np.udp.maxConnections = nnn pe pagina de configurare avansată."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definiții"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -449,7 +461,7 @@ msgstr "Peer de la distanța, identificat de hash router"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Dir"
 
@@ -476,13 +488,13 @@ msgstr "Cât de mult timp a trecut de când un pachet a fost primit / trimis"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Inactiv"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "In/Out"
@@ -497,14 +509,14 @@ msgstr "Acum cât de mult timp în urmă a fost stabilită acestă conexiune"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "ÃŽn sus"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Oblic"
 
@@ -538,7 +550,7 @@ msgstr "Start lent"
 msgid "The round trip time in milliseconds"
 msgstr "Timpul de călătorie dus-întors în milisecunde"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -553,7 +565,7 @@ msgstr "Curent maxim trimite dimensiunea pachetului / maxima estimată pentru pr
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -563,7 +575,7 @@ msgstr "Numărul total de pachete trimise la peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -572,7 +584,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Numărul total de pachete primite de la peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
@@ -581,7 +593,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Numărul total de pachete retransmise la peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
@@ -620,8 +632,8 @@ msgstr "Conexiune WAN PPP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Disponibilitate"
 
@@ -660,7 +672,7 @@ msgstr "Stare UPnP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:668
 msgid "Disabled UPnP Devices"
-msgstr ""
+msgstr "Dispozitive UPnP dezactivate"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:682
 msgid ""
@@ -716,17 +728,17 @@ msgid "NTCP connections"
 msgstr "Conexiune NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Limită"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Timeout"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -739,19 +751,19 @@ msgid "Backlogged?"
 msgstr "Conectat înapoi?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "De intrare"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "De ieșire"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
@@ -759,107 +771,107 @@ msgstr[0] "{0} utilizator"
 msgstr[1] "{0} utilizatori"
 msgstr[2] "{0} utilizatori"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Conexiuni UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sortat după hash-ul peer-ului"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Direcție / Introducere"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sortează după intrare inactivă"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sortează după ieșire inactivă"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sortează după rata de intrare"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sortează după rata de de ieșire"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sortează după timpul de conectare"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sortează după fus orar"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sorteaza dupa fereastra de congestie"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sortează dupa pragul de start lent"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sortează după timpul dus-intors"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sortează după timpul de retransmisie"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sortează după unitățiile maxime de ieșire transmise"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sortează după pachetele trimise"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sortează după pachetele primite"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sortează după pachetele retransmise"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sortează după pachetele primite mai mult decât o dată"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Ne oferim să îi introducem"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Ei sau oferit să ne introducă"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Asfixiat"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 eșuare"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} eșuări"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Banat"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "restante"
 
@@ -869,7 +881,7 @@ msgstr "Arunc cererile tunelului: Prea lent"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:260
 msgid "Dropping tunnel requests: High job lag"
-msgstr ""
+msgstr "Arunc cererile de tunel: Decalaj job-uri ridicat"
 
 #. don't even bother, since we are so overloaded locally
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:451
@@ -878,7 +890,7 @@ msgstr "Arunc cererile tunelului: Supraîncărcat"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
 msgid "Rejecting tunnels: Hidden mode"
-msgstr ""
+msgstr "Respingere tuneluri: Mod ascuns"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
 msgid "Rejecting tunnels: Request overload"
@@ -897,66 +909,66 @@ msgstr "Arunc cererile de tunel: Încărcătura mare"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Arunc cererile de tunel: Timp așteptare"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Noua versiune plug-in {0} este disponibil"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Verificarea actualizarii a eșuat pentru plug-inul {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Nici un versiune nouă este disponibilă pentru plugin-ul {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0} B transferat"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
-msgstr ""
+msgstr "Instalare eșuată din {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Transferul nu a reușit din {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Actualizare descarcata"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "restartare"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Actualizari verificate"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "din {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Fișierul de actualizare nesemnat din {0} este corupt"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Copierea a eșuat {0}"
@@ -969,10 +981,10 @@ msgstr "Copierea a eșuat {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
-msgstr ""
+msgstr "Tunelul proxy client HTTP trebuie să ruleze"
 
 #. set status before thread to ensure UI feedback
 #: ../java/src/net/i2p/router/update/DevSU3UpdateHandler.java:91
@@ -983,20 +995,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Actualizare"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
-msgstr ""
+msgstr "Actualizările din rețea sunt dezactivate. Verifică managerul de pachete."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
-msgstr ""
+msgstr "Nu există permisiune de scriere pentru directorul de instalare I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Trebuie intai sa actualizati la versiunea {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Necesita versiunea Java {0} dar vrersiunea Java instalata este {1}"
@@ -1060,7 +1072,7 @@ msgstr "Verificarea semnăturii plugin-ului {0} a esuat"
 #. don't display signer, we're really checking the key not the signer name
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:280
 msgid "Plugin not installed - signer is untrusted"
-msgstr ""
+msgstr "Plugin-ul nu a fost instalat - semnatarul nu este de încredere"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:345
 #, java-format
@@ -1186,16 +1198,20 @@ msgid "No new version found at {0}"
 msgstr "Nu s-a găsit versiune noua {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Interzis permanent"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Interzicerea temporară expiră în {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Banat până la repornire sau în {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "unban acum"
 
@@ -1296,18 +1312,18 @@ msgstr "unban acum"
 msgid "I2P Router Console"
 msgstr "Consola de Router I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Eroare la actualizarea de configurare - vă rugăm să consultați jurnalele de eroare"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Configurație salvată cu succes"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1346,7 +1362,7 @@ msgstr "Instalează plugin"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:77
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:639
 msgid "Install Plugin from File"
-msgstr ""
+msgstr "Instalează Plugin din FIşier"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:86
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:650
@@ -1377,7 +1393,7 @@ msgstr "Plugin oprit {0}"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:180
 #, java-format
 msgid "Stopped webapp {0}"
-msgstr ""
+msgstr "Webapp oprit {0}"
 
 #. label (IE)
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:209
@@ -1446,11 +1462,11 @@ msgstr "Nici un URL pentru plugin specificat."
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:421
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:79
 msgid "You must enter a file"
-msgstr ""
+msgstr "Trebuie să introduceți un fişier"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:464
 msgid "Install from file failed"
-msgstr ""
+msgstr "Instalarea din fișier a eşuat"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:479
 #, java-format
@@ -1469,7 +1485,7 @@ msgstr "Actualizarea tuturor plugin-uri"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:528
 #, java-format
 msgid "Installing plugin from {0}"
-msgstr ""
+msgstr "Se instalează plugin de la {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:549
 #, java-format
@@ -1515,7 +1531,7 @@ msgid "Add Client"
 msgstr "Adaugă client"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Client"
@@ -1547,9 +1563,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Versiune"
 
@@ -1571,7 +1587,8 @@ msgstr "Licență"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Website"
 
@@ -1584,7 +1601,7 @@ msgid "Stop"
 msgstr "Stop"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Verificați după actualizări"
@@ -1606,7 +1623,7 @@ msgstr "Șterge"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1616,7 +1633,7 @@ msgstr "Șterge pe cel ales"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1635,7 +1652,7 @@ msgstr "RestabileÅŸte implicitele"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1764,8 +1781,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Elimina"
 
@@ -1775,7 +1792,7 @@ msgstr "Selectați o categorie pentru a adăuga"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Lățime de bandă"
 
@@ -1784,7 +1801,7 @@ msgid "Home Page"
 msgstr "Pagina de pornire"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Rețeaua"
 
@@ -1840,9 +1857,9 @@ msgid "UI"
 msgstr "UI"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tuneluri"
 
@@ -1860,15 +1877,15 @@ msgid "Logging"
 msgstr "Logare"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Peers"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistici"
 
@@ -1880,8 +1897,8 @@ msgstr "Avansat"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -1965,11 +1982,11 @@ msgstr "Dezactivează modul pentru laptop"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:359
 msgid "Disabling inbound IPv4"
-msgstr ""
+msgstr "Dezactivare intrare IPv4"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:361
 msgid "Enabling inbound IPv4"
-msgstr ""
+msgstr "Activare intrare IPv4"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369
 msgid "Disabling UDP"
@@ -2082,37 +2099,37 @@ msgstr "Pornește procesul de reseed"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:32
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:491
 msgid "Reseed from URL"
-msgstr ""
+msgstr "Reseed de la URL"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:37
 msgid "You must enter a URL"
-msgstr ""
+msgstr "Trebuie să introduceți un URL"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66
 msgid "Reseed in progress, check summary bar for status"
-msgstr ""
+msgstr "Reseed în derulare, verifică bara de sumar pentru stadiu"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:68
 msgid "Reseed complete, check summary bar for status"
-msgstr ""
+msgstr "Reseed finalizat, verifică bara de sumar pentru stadiu"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:74
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503
 msgid "Reseed from file"
-msgstr ""
+msgstr "Reseed de la fiÅŸier"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:84
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:91
 msgid "Reseed from file failed"
-msgstr ""
+msgstr "Reseed de la fișier eşuat"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:86
 #, java-format
 msgid "Reseed successful, loaded {0} router info from file"
 msgid_plural "Reseed successful, loaded {0} router infos from file"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Reseed încheiat cu succes, s-a încărcat {0} informație router din fișier "
+msgstr[1] "Reseed încheiat cu succes, s-au încărcat {0} informații router din fișier "
+msgstr[2] "Reseed încheiat cu succes, s-au încărcat {0} informații router din fișier "
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:149
 msgid "Configuration saved successfully."
@@ -2143,7 +2160,7 @@ msgstr "Reporniți imediat"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Reporniți"
 
@@ -2169,9 +2186,9 @@ msgstr "Oprire in {0}"
 #, java-format
 msgid "Please wait for routing commitment to expire for {0} tunnel"
 msgid_plural "Please wait for routing commitments to expire for {0} tunnels"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "Așteaptă ca toate angajamentele de rutare să expire pentru {0} tunel"
+msgstr[1] "Așteaptă ca toate angajamentele de rutare să expire pentru {0} tuneluri"
+msgstr[2] "Așteaptă ca toate angajamentele de rutare să expire pentru {0} tuneluri"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:82
 #, java-format
@@ -2310,7 +2327,7 @@ msgstr "Statistici complete dezactivata"
 msgid ""
 "Graph list updated, may take up to 60s to be reflected on the {0}Graphs "
 "Page{1}"
-msgstr ""
+msgstr "Listă grafic actualizată, poate dura până la 60 secunde să se reflecte pe {0}Pagina Graficelor{1}"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:24
 msgid "Save order"
@@ -2553,11 +2570,11 @@ msgstr "Italiană"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:88
 msgid "Japanese"
-msgstr ""
+msgstr "Japoneză"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:89
 msgid "Malagasy"
-msgstr ""
+msgstr "Malgaşă"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:90
 msgid "Dutch"
@@ -2565,7 +2582,7 @@ msgstr "Olandeză"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:91
 msgid "Norwegian Bokmaal"
-msgstr ""
+msgstr "Norvegiană Bokmål"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:92
 msgid "Polish"
@@ -2586,7 +2603,7 @@ msgstr "Rusă"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:97
 msgid "Slovak"
-msgstr ""
+msgstr "Slovacă"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:98
 msgid "Swedish"
@@ -2617,8 +2634,8 @@ msgid "User Name"
 msgstr "Nume utilizator"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Adaugă"
 
@@ -2627,209 +2644,209 @@ msgstr "Adaugă"
 msgid "Password"
 msgstr "Parolă"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Actualizarea sau verificarea deja în curs de desfășurare"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Actualizare disponibilă, încercarea de a descărca acum"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Actualizare disponibilă, faceți clic pentru a descărca"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Nicio actualizare disponibilă"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Actualizarea URL-ul de noutăți la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "Intern"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Actualizarea proxy la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Actualizarea portului proxy la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Actualizarea frecventei reinnoirii la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Niciodată"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Actualizarea reinnoirii politicii la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Actualizarea URL-uri de actualizare."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Actualizarea cheiei de încredere."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Actualizarea politicii de actualizare la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
-msgstr ""
+msgstr "Se actualizează URL-urile de build-uri de dezvoltare semnate la {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Fiecare"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Numai anuntare"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Descarcă și verifică numai"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Descărca, verifică, și repornește"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:34
 msgid "Aborted startup"
-msgstr ""
+msgstr "Pornire abandonată"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:35
 msgid "Enabled floodfill"
-msgstr ""
+msgstr "Floodfill activat"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:36
 msgid "Changed IP"
-msgstr ""
+msgstr "IP schimbat"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:37
 msgid "Changed port"
-msgstr ""
+msgstr "Port schimbat"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:38
 msgid "Clock shifted"
-msgstr ""
+msgstr "Ora modificată"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:39
 msgid "Crashed"
-msgstr ""
+msgstr "Prăbuşit"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:40
 msgid "Critical error"
-msgstr ""
+msgstr "Eroare critică"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:41
 msgid "Installed new version"
-msgstr ""
+msgstr "Versiunea nouă instalată"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:42
 msgid "Install failed"
-msgstr ""
+msgstr "Instalare eşuată"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:43
 msgid "Network error"
-msgstr ""
+msgstr "Eroare reţea"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:44
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:48
 msgid "New router identity"
-msgstr ""
+msgstr "Nouă identitate router"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:45
 msgid "Disabled floodfill"
-msgstr ""
+msgstr "Floodfill dezactivat"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:46
 msgid "Out of memory error"
-msgstr ""
+msgstr "Eroare memorie epuizată"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:47
 msgid "Reachability change"
-msgstr ""
+msgstr "Schimbare accesibilitate"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:49
 msgid "Reseeded router"
-msgstr ""
+msgstr "Router reseed"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:50
 msgid "Soft restart"
-msgstr ""
+msgstr "Repornire soft"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:51
 msgid "Started router"
-msgstr ""
+msgstr "Router pornit"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:52
 msgid "Stopped router"
-msgstr ""
+msgstr "Router oprit"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:53
 msgid "Updated router"
-msgstr ""
+msgstr "Router actualizat"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:54
 msgid "Watchdog warning"
-msgstr ""
+msgstr "Avertisment program watchdog"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:102
 msgid "Display Events"
-msgstr ""
+msgstr "Afișează Evenimente"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:106
 msgid "Events since"
-msgstr ""
+msgstr "Evenimente din"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:111
 msgid "Event type"
-msgstr ""
+msgstr "Tip eveniment"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:117
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:148
 msgid "All events"
-msgstr ""
+msgstr "Toate evenimentele"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:122
 msgid "Filter events"
-msgstr ""
+msgstr "Evenimente filtru"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:170
 msgid "No events found"
-msgstr ""
+msgstr "Niciun eveniment găsit"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:171
 #, java-format
 msgid "No events found in previous {0}"
-msgstr ""
+msgstr "Niciun eveniment găsit în {0} anterior"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:174
 #, java-format
 msgid "No \"{0}\" events found"
-msgstr ""
+msgstr "Niciun eveniment \"{0}\" găsit"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:175
 #, java-format
@@ -2837,17 +2854,17 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Timp"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:182
 msgid "Event"
-msgstr ""
+msgstr "Eveniment"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:184
 msgid "Details"
-msgstr ""
+msgstr "Detalii"
 
 #: ../java/src/net/i2p/router/web/FormHandler.java:251
 msgid ""
@@ -2987,12 +3004,12 @@ msgid "Graph settings saved"
 msgstr "Setări grafice salvate"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Agendă"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Gestionați fisierul I2P hosts aici (I2P DNS) "
 
@@ -3023,17 +3040,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Configurarea paginii de pornire I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Client webmail anonim"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Email"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P router ajutor "
 
@@ -3043,23 +3060,23 @@ msgid "Router Console"
 msgstr "consola router"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Construiti  clientul BitTorrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torente"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Server web local"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:41
 msgid "The Anoncoin project"
-msgstr ""
+msgstr "Proiectul Anoncoin"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:42
 msgid "Bug Reports"
@@ -3120,7 +3137,7 @@ msgstr "Git hosting anonim "
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:50
 msgid "HiddenGate"
-msgstr ""
+msgstr "HiddenGate"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:51
 msgid "Microblog"
@@ -3222,97 +3239,97 @@ msgstr "Proxy HTTP nu este pornit"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Browser-ul dvs. nu este corect configurat să utilizeze proxy HTTP la {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Nume"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Joburi active"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "inceput {0} in urma"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Functie tocmai terminata"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "terminat {0} in urma"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
-msgstr ""
+msgstr "Sarcini programate"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} va incepe in {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
-msgstr ""
+msgstr "Sarcină"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
-msgstr ""
+msgstr "În coadă"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
-msgstr ""
+msgstr "Aruncat"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
-msgstr ""
+msgstr "medie"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "In asteptare"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Sumar"
 
@@ -3330,223 +3347,223 @@ msgid "No log messages"
 msgstr "Fără mesaje de jurnalizare"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Router local "
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Router Lookup"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Toate routere"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Toate routerele cu statisticile complete"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSets"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "nu a fost găsit în rețeaua bazei de date"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Local"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Nepublicat"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destinație"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Expiră in {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Expirat în urmă cu {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Gateway"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Nu este inițializat"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Statisticile Router-ului in rețeaua bazei de date"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Număra"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transporturi"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Regiune"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Informațiile noastre"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Informațile despre peer"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Intrare completă"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Ascuns"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Actualizat"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} în urmă"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publicat"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
-msgstr ""
+msgstr "Cheie de semnare "
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adresă(se)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "cost"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Ascuns sau pentru pornire"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU cu introducere"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP si SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
-msgstr ""
+msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
-msgstr ""
+msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
-msgstr ""
+msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Ultima actualizarea noutății a fost {0} în urmă."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Ultima verificarea noutății a fost {0} în urmă."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Ascunde noutati"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Afișează noutati"
 
@@ -3570,7 +3587,7 @@ msgstr[2] "{0} plug-inuri actualizate"
 msgid "Plugin update check complete"
 msgstr "Verificarea actualizarii plugin-urilor s-a terminat"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3600,19 +3617,19 @@ msgid "Groups (Caps)"
 msgstr "Grupuri (Caps)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Viteză"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Capacitate"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integrare "
 
@@ -3635,7 +3652,7 @@ msgid "Failing"
 msgstr "Eșuat"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrat"
 
@@ -3712,71 +3729,71 @@ msgstr "1 ora rata nereușita "
 msgid "1d Fail Rate"
 msgstr "1 ora rata nereușita"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Limite"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "Utilizatori rapizi"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "colegii de mare capacitate"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "colegii bine integrați"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "determinat de organizator profil"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupuri"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "capacitățile în netDb nu sunt utilizate pentru a determinarea profilurilor"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "majuscule"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "transfer de vârf (bytes pe secundă), pe o perioada de la 1 minut pe care utilizatorul a susținut într-un singur tunel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "Viteză"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "Capacitate"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "cât de multe tunele le putem întreba să se alăture într-o oră?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "Citi utilizatori au povestit despre noi in ultima vreme ?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integrare"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "este oare peer interzis, sau inaccesibil, sau a esuat teste tunelului?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "stare"
 
@@ -3906,277 +3923,277 @@ msgstr "Numar de evenimente grafic"
 msgid "Lifetime average value"
 msgstr "Valoarea medie pe durata de pornire"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P router-ajutor &amp;FAQ  "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Ajutor &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Configurarea pornirii clienților și aplicațiilor web (servicii); porniti manual servicii latente"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Servicii I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Configurarea I2P Router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P Internals"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Vezi tuneluri existente și statutul construirii tunelului  "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Arată toate conexiunile actuale ale utilizatorilor "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Afișare profilului de performanță recent"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profiluri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Afișează lista tuturor router-urilor I2P cunoscute"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Health Raport"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Înregistrări"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Grafic performantei router-ului "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Grafice"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Statisticile textuale de performanță router-ului"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
-msgstr ""
+msgstr "Administrator servicii ascunse"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "General"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Identitatea locală este identitatea dvs. unica router I2P, similar cu o adresă IP, dar adaptate la I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Nu dezvălui acest lucru pentru oricine, așa cum se poate descoperi IP real."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "identitatea locală"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Identitatea unică a router-ului I2P este"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "nu-l descoperi nimănui"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "Afișează"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Versiunea programului I2p pe care o rulam"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Cât timp am fost porniți  pentru această sesiune"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Ajutor cu configurarea firewall-ul și router-ul pentru performanțe optime I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
-msgstr ""
+msgstr "Vedeți mai multe informații pe wiki"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Configurarea Actualizări I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Actualizare I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Utilizatorii ce au convorbit în ultimele câteva minute / ultima ora"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Activ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Numărul de colegii disponibile pentru construirea de tuneluri client"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Rapid"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Numărul de colegii disponibile pentru construirea de tuneluri de explorare"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "De mare capacitate"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Numărul de utilizatori disponibili pentru anchete de baze de date din rețea"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Numărul total de utilizatori în baza de date rețea"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Cunoscute"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Configurarea alocării benzii de router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Lățime de bandă în / out"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Total"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Utilizat"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Utilizate pentru construirea și testarea tuneluri, și de a comunica cu colegii floodfill"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Explorare"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tuneluri pe care le folosim pentru a furniza sau accesa la serviciile din rețea"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Participare"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "Raportul tunelului hamei oferite la  tunele hamei folosite - o valoare mai mare de 1.00 indică o contribuție pozitivă la rețea"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Rată partajare:"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "congestie"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indicare performantei router-ului"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indică cât de repede se trimit mesaje de ieșire la alte routere I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "întârziere mesajului"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Timpul dus-intors pentru un test de tunel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Intirziere tunelului"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Cereri din coada de așteptare din alte routere pentru a participa în tuneluri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Noutati &amp; Actualizari "
 
@@ -4237,7 +4254,7 @@ msgstr "Adauga / sterge / editeaza &amp; controleaza clientul și tunelurile ser
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:450
 msgid "Hidden Service"
-msgstr ""
+msgstr "Serviciu ascuns"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:454
 msgid "Show tunnels"
@@ -4280,26 +4297,26 @@ msgstr "Construire tunelelor"
 msgid "shared clients"
 msgstr "clientii comune"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Faceți restart pentru a instala"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Faceți clic pe Oprire și reporniți pentru a instala"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Versiune {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "actualizare disponibila"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Descarcă {0} actualizari"
@@ -4308,7 +4325,7 @@ msgstr "Descarcă {0} actualizari"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4317,69 +4334,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Descarca actualizare <br> nesemnata{0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Ajutor cu configurarea firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Verificați conexiunea la rețea și NAT / firewall"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "reseed"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Comandă"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Sus"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Mută în vârf"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Mută în sus"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Jos"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Jos"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Selectați o secțiune pentru adăugare"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "evenimente in {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "medie pentru {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Evenimente în perioada "
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "medie"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "max"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "acum"
 
@@ -4556,175 +4589,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Deschideți consola router în browser-ul web in timpul pornirii"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P webserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "Proxy HTTP"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "Clasic"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "ÃŽntunecat"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "Luminos"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "Miezul nopții"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "BandwidthLimiter"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "Mesaje client "
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Criptare"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "Tunelul I2P"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "JobQueue"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "Baza de date rețelei"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Flux"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Regulator"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "gazdă"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "Cheie"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "configurarea traficului"
@@ -4893,7 +4878,7 @@ msgid "Share"
 msgstr "Partajare"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTÄ‚"
@@ -4934,7 +4919,7 @@ msgid "Advanced network configuration page"
 msgstr "Pagina de configurare avansată a rețelei"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4973,27 +4958,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Configurare avansată I2P"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Unele modificări pot necesita o repornire pentru a avea efect"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_ru.po b/apps/routerconsole/locale/messages_ru.po
index ba45d3cbcb217f3b5808587ae236b1ad61ac2d6e..dd6f3a303b25f8186a51da76664db9d784b3d033 100644
--- a/apps/routerconsole/locale/messages_ru.po
+++ b/apps/routerconsole/locale/messages_ru.po
@@ -7,37 +7,40 @@
 # Aleksey Orekhov <opexob@yandex.ru>, 2013
 # Alexey Solomin <a.rainman@gmail.com>, 2013
 # Andrey Lukyanenko <operru32@yandex.ru>, 2013
+# brianhopes <voganc-12@live.ru>, 2015
 # dimi <zhopa@mita.pp.ru>, 2013
 # ducki2p <ducki2p@gmail.com>, 2011
 # Eugene, 2013
 # Eugene, 2013
 # foo <foo@bar>, 2009
+# Foster Snowhill, 2015
 # gmind, 2012-2013
 # gmind, 2013
 # gmind, 2012
 # Aleksey Orekhov <opexob@yandex.ru>, 2013
 # dimi <zhopa@mita.pp.ru>, 2013
 # Maxym Mykhalchuk, 2015
+# Maxym Mykhalchuk, 2015
 # Nikolay Parukhin <parukhin@gmail.com>, 2014
 # Petr Polyakov, 2014
 # Petr Polyakov, 2014
 # rineri, 2014
-# Roman A. <transifex@basicxp.ru>, 2013
-# Roman A. <transifex@basicxp.ru>, 2013
+# Foster Snowhill, 2013
+# Foster Snowhill, 2013
 # varnav, 2013
 # brianhopes <voganc-12@live.ru>, 2015
-# Roman A. <transifex@basicxp.ru>, 2013
+# Foster Snowhill, 2013
 # yume, 2014-2015
 # Andrey Lukyanenko <operru32@yandex.ru>, 2013
-# Roman A. <transifex@basicxp.ru>, 2013
+# Foster Snowhill, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-15 14:49+0000\n"
-"Last-Translator: Maxym Mykhalchuk\n"
-"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-22 18:26+0000\n"
+"Last-Translator: Foster Snowhill\n"
+"Language-Team: Russian (Russia) (http://www.transifex.com/otf/I2P/language/ru_RU/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -55,8 +58,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -67,8 +70,8 @@ msgstr[3] "{0,number,####} мс"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -79,8 +82,8 @@ msgstr[3] "{0} с"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -91,8 +94,8 @@ msgstr[3] "{0} мин."
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
@@ -101,15 +104,9 @@ msgstr[1] "{0} часа"
 msgstr[2] "{0} часов"
 msgstr[3] "{0} часов"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "н/д"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
@@ -118,7 +115,24 @@ msgstr[1] "{0} дня"
 msgstr[2] "{0} дней"
 msgstr[3] "{0} дней"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "{0} год"
+msgstr[1] "{0} года"
+msgstr[2] "{0} лет"
+msgstr[3] "{0} лет"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "н/д"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
@@ -127,7 +141,7 @@ msgstr[1] "{0,number,###} нс"
 msgstr[2] "{0,number,###} нс"
 msgstr[3] "{0,number,###} нс"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -172,7 +186,7 @@ msgstr "Кому"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "нет"
@@ -311,17 +325,17 @@ msgstr "Не принимаем туннели: маршрутизатор в п
 msgid "Rejecting tunnels"
 msgstr "Не принимаем туннели"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "Начальная загрузка: получены данные маршрутизатора из файла ({0} успешно, {1} с ошибкой)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Начальная загрузка"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
@@ -330,26 +344,26 @@ msgstr[1] "При начальной загрузке получены данн
 msgstr[2] "При начальной загрузке получены данные только о {0} маршрутизаторах."
 msgstr[3] "При начальной загрузке получены данные только о {0} маршрутизаторах."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Начальная загрузка не удалась."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Смотрите {0} для получения помощи."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "страница настройки начальной загрузки"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Производится начальная загрузка: загружается URL каталога маршрутизаторов."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -419,7 +433,7 @@ msgstr "Недоступен по всем транспортным проток
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Состояние"
@@ -434,7 +448,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} используется только для исходящих соединений"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP не включен"
 
@@ -457,13 +471,13 @@ msgid ""
 msgstr "Для переопределения этих пределов добавьте параметры i2np.ntcp.maxConnections=nnn и i2np.udp.maxConnections=nnn на странице расширенных настроек."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Обозначения"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -478,7 +492,7 @@ msgstr "Удаленный узел, идентифицируемый хешем
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Направление"
 
@@ -505,13 +519,13 @@ msgstr "Сколько прошло времени после приема/пе
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Неактивен"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Прием/передача"
@@ -526,14 +540,14 @@ msgstr "Время жизни соединения"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Подключен"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Сдвиг"
 
@@ -567,7 +581,7 @@ msgstr "<i>Slow Start Threshold</i>. Порог медленного старт
 msgid "The round trip time in milliseconds"
 msgstr "<i>Round-Trip Time</i>. Время между отправкой запроса и получением ответа (в миллисекундах)"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -582,7 +596,7 @@ msgstr "<i>Maximum Transfer Unit</i>. Текущий максимальный р
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "Передано"
 
@@ -592,7 +606,7 @@ msgstr "Общее количество отправленных узлу пак
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "Принято"
 
@@ -601,7 +615,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Общее количество принятых от узла пакетов"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Повт. отправлено"
 
@@ -610,7 +624,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Общее количество повторно отправленных узлу пакетов"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Повт. принято"
 
@@ -649,8 +663,8 @@ msgstr "PPP WAN-соединение"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Время работы"
 
@@ -745,17 +759,17 @@ msgid "NTCP connections"
 msgstr "NTCP-соединения"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Предел"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Тайм-аут"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -768,19 +782,19 @@ msgid "Backlogged?"
 msgstr "В очереди?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Входящие"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Исходящие"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
@@ -789,107 +803,107 @@ msgstr[1] "{0} пира"
 msgstr[2] "{0} пиров"
 msgstr[3] "{0} пиров"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP-соединения"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Сортировать по хешу узла"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Направление/посредничество"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Сортировать по неактивности приема"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Сортировать по неактивности передачи"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Сортировать по скорости приема"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Сортировать по скорости передачи"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Сортировать по времени жизни соединения"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Сортировать по сдвигу часов"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Сортировать по размеру окна перегрузки"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Сортировать по порогу медленного старта"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Сортировать по времени прохождения сигнала"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Сортировать по тайм-ауту повторной передачи"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Сортировать по размеру исходящего MTU"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Сортировать по количеству отправленных пакетов"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Сортировать по количеству принятых пакетов"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Сортировать по количеству повторно отправленных пакетов"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Сортировать по количеству повторно принятых пакетов"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Мы предлагаем себя в качестве посредника для этого узла"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Этот узел предлагает себя в качестве нашего посредника"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Дросселирован"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 сбой"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} сбоя(-ев)"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Заблокирован"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "перегружен"
 
@@ -927,66 +941,66 @@ msgstr "Игнорируем запросы туннелей: высокая н
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Игнорируем запросы туннелей: слишком большое время пребывания в очереди"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Доступна новая версия {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Ошибка при проверке наличия обновлений для модуля {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Для модуля {0} нет обновлений"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0} байт загружено"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Не удалось установить из {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Не удалось произвести передачу файлов из {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Обновление загружено"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Производится перезапуск"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Подлинность обновления проверена"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "из {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Обнаружено повреждение в неподписанном обновлении, загруженном из {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Не удалось скопировать в {0}"
@@ -999,7 +1013,7 @@ msgstr "Не удалось скопировать в {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "Клиентский прокси туннель должен быть запущен"
@@ -1013,20 +1027,20 @@ msgstr "Клиентский прокси туннель должен быть 
 msgid "Updating"
 msgstr "Загружается обновление"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Внутрисетевые обновления отключены. Проверьте менеджер пакетов."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Отсутствует разрешение на запись в директорию установки I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Сначала вы должны обновить до версии {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Требуется Java версии {0} но установлена Java версии {1}"
@@ -1216,16 +1230,20 @@ msgid "No new version found at {0}"
 msgstr "Новая версия не обнаружена на {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Заблокирован навсегда"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Временная блокировка истекает через {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Заблокирован до перезапуска или истечения {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "разблокировать сейчас"
 
@@ -1326,18 +1344,18 @@ msgstr "разблокировать сейчас"
 msgid "I2P Router Console"
 msgstr "Консоль маршрутизатора I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Ошибка обновления конфигурации — смотрите журналы ошибок"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Конфигурация успешно сохранена"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1545,7 +1563,7 @@ msgid "Add Client"
 msgstr "Добавить клиент"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Клиентские"
@@ -1577,9 +1595,9 @@ msgid "Plugin"
 msgstr "Модуль"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Версия"
 
@@ -1601,7 +1619,8 @@ msgstr "Лицензия"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Веб-сайт"
 
@@ -1614,7 +1633,7 @@ msgid "Stop"
 msgstr "Остановить"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Проверить наличие обновлений"
@@ -1636,7 +1655,7 @@ msgstr "Удалить"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1646,7 +1665,7 @@ msgstr "Удалить выбранные"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1665,7 +1684,7 @@ msgstr "Восстановить умолчания"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1794,8 +1813,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Удалить"
 
@@ -1805,7 +1824,7 @@ msgstr "Выберите класс для добавления"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Трафик"
 
@@ -1814,7 +1833,7 @@ msgid "Home Page"
 msgstr "Домашняя страница"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Сеть"
 
@@ -1870,9 +1889,9 @@ msgid "UI"
 msgstr "Интерфейс"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Туннели"
 
@@ -1890,15 +1909,15 @@ msgid "Logging"
 msgstr "Журналирование"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Узлы"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Статистика"
 
@@ -1910,8 +1929,8 @@ msgstr "Расширенные"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2174,7 +2193,7 @@ msgstr "Перезапустить немедленно"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Перезапуск"
 
@@ -2651,8 +2670,8 @@ msgid "User Name"
 msgstr "Имя пользователя"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Добавить"
 
@@ -2661,91 +2680,91 @@ msgstr "Добавить"
 msgid "Password"
 msgstr "Пароль"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Обновление или проверка уже в процессе"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Доступно обновление, идет попытка загрузки"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Доступно обновление, нажмите кнопку слева для загрузки"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Нет доступных обновлений"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Изменение URL новостей на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "внутренний"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Изменение узла прокси на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Изменение порта прокси на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Изменение частоты обновлений на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Никогда"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Изменение политики обновлений на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Обновление URL обновлений."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Обновление доверенных ключей."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Изменение адреса неподписанных обновлений на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr "Изменение адреса подписанных тестовых сборок на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Каждые"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Только уведомлять"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Только скачивать и проверять целостность"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Скачивать, проверять целостность и перезапускать"
 
@@ -2871,7 +2890,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "События \"{0}\" не найдены в предыдущих  {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Время"
 
@@ -3021,12 +3040,12 @@ msgid "Graph settings saved"
 msgstr "Настройки графиков сохранены"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Адресная книга"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Управление файлами hosts (единственный механизм, используемый I2P для разрешения доменных имен)"
 
@@ -3057,17 +3076,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Конфигурация домашней страницы маршрутизатора I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Анонимный почтовый клиент с веб-интерфейсом"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Эл. почта"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Справка маршрутизатора I2P"
 
@@ -3077,17 +3096,17 @@ msgid "Router Console"
 msgstr "Консоль маршрутизатора I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Встроенный анонимный BitTorrent-клиент"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Торренты"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Локальный веб-сервер"
 
@@ -3256,97 +3275,97 @@ msgstr "HTTP-прокси не запущен"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Ваш браузер не настроен должным образом для использования HTTP-прокси {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Название"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "Очередь задач I2P"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Пускатели задач"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Активные задачи"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "запущен {0} назад"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Только что завершенные задачи "
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "завершено {0} назад"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Готовые/ожидающие задачи"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Запланированные задачи"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} запустится через {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Общая статистика задач"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Задача"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "В очереди"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Запуски"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "Отклонено"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Среднее"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Макс."
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Мин."
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "В ожидании"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Сводка"
 
@@ -3364,223 +3383,223 @@ msgid "No log messages"
 msgstr "Нет сообщений"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Локальный маршрутизатор"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Просмотр маршрутизатора"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Все маршрутизаторы"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Все маршрутизаторы с полной статистикой"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "Список LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Маршрутизатор"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "не найден в сетевой базе данных"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "локальный"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "неопубликованный"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "адрес назначения"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Добавить в локальную адресную книгу"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "Истекает через {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Истек {0} назад"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Шлюз"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Туннель"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "База не инициализирована"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Статистика маршрутизаторов"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Количество"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Транспортный протокол"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Страна"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "Информация о нас"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Информация об узле"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Полная запись"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Скрытый"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Обновленный"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} назад"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Опубликовано"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Подписывающий ключ"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Адрес(а)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "cost"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "В скрытом режиме или недавно запущен"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU через посредников"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP и SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP и SSU через посредников"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "Только IPv6 SSU, представители"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, представители"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, представители"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "Только IPv6 NTCP, SSU, представители"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Новости последний раз обновлялись {0} назад."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Новости последний раз проверялись {0} назад."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Скрыть новости"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Показать новости"
 
@@ -3605,7 +3624,7 @@ msgstr[3] "{0} модулей обновлено"
 msgid "Plugin update check complete"
 msgstr "Проверка обновления модуля завершена"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3638,19 +3657,19 @@ msgid "Groups (Caps)"
 msgstr "Входит в группы (возможности)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Скорость"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Емкость"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Интеграция"
 
@@ -3673,7 +3692,7 @@ msgid "Failing"
 msgstr "Сбоящие"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "интегрированные"
 
@@ -3750,71 +3769,71 @@ msgstr "Уровень отказов за 1 час"
 msgid "1d Fail Rate"
 msgstr "Уровень отказов за 1 день"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Пороговые значения"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "быстрые узлы"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "высокоемкие узлы"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "хорошо интегрированные узлы"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "определяется автоматически модулем ProfileOrganizer на основании собранной информации о производительности узла"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "Входит в группы"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "информация об узле, предоставленная сетевой БД; для профилирования не используется"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "caps"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "пиковая скорость (байт/с) узла на одном туннеле за 1-минутый период"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "Скорость"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "емкость"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "ко скольким туннелям мы можем попросить этот узел присоединиться за час?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "о скольких новых узлах этот узел сообщил нам в последнее время?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "Интеграция"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "заблокирован ли этот узел, недоступен, дает ошибки на тестах?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "Состояние"
 
@@ -3946,277 +3965,277 @@ msgstr "График количества событий"
 msgid "Lifetime average value"
 msgstr "Среднее значение за время работы"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "Справка и FAQ маршрутизатора I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Справка и FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Настройка автозапуска клиентов и веб-приложений (служб), ручной запуск неактивных приложений"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "Службы I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Настройка маршрутизатора I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "Настройки I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Отобразить существующие туннели и состояние строящихся"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Просмотр списка текущих соединений с узлами"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Просмотр недавних профилей производительности узлов"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Профили"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Показать список всех известных I2P-маршрутизаторов"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "Сетевая БД"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Отчет о состоянии маршрутизатора"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Журналы"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "График производительности маршрутизатора"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Графики"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Статистика производительности маршрутизатора в текстовом виде"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Локальные туннели"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Управление скрытыми сервисами"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Общая информация"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Ваш локальный идентификатор — это уникальный идентификатор Вашего I2P-маршрутизатора, как IP-адрес, но применительно к I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "Никогда не сообщайте его кому-либо, это может раскрыть Ваш IP-адрес."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Локальный идентификатор"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Уникальный идентификатор Вашего I2P-маршрутизатора:"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "никому его не показывайте"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "показать"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Версия запущенного ПО I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Время работы маршрутизатора с последнего запуска"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Помощь в настройке брандмауэра и маршрутизатора для обеспечения оптимальной производительности I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Подробнее в wiki"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Внимание: ECDSA недоступно. Обновите Java или ОС."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Настройка обновления I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "Обновление I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Узлы, с которыми была связь за последние минуты/часы"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Активные"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Число узлов, доступных для создания клиентских туннелей"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Быстрые"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Число узлов, доступных для создания зондирующих туннелей"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Высокоемкие"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Число узлов, доступных для запросов к сетевой БД"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Общее число узлов в нашей сетевой БД"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Известные"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Настройка ограничений скорости"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Трафик (вх./исх.)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Всего"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Объем"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Используются для создания и тестирования туннелей и соединения с floodfill-узлами"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Зондирующие"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Туннели, используемые для доступа к службам сети или их публикации"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "Туннели, в которых мы принимаем участие, непосредственно способствующие пропускной способнсти сети"
+msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Транзитные"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "Доля транзита отображает соотношение предоставляемой нами пропускной способности для транзитных туннелей по отношению к потребляемой нами скорости. Соотношение 1.00 означает положительный вклад в сеть"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Доля транзита"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Просмотр очереди заданий маршрутизатора"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Занятость"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Отражает производительность маршрутизатора"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Задержка задач"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Показывает, как быстро исходящие сообщения отправляются другим I2P-маршрутизаторам"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Задежка сообщений"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Тест времени прохождения туннеля"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Задержка туннелей"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Очередь запросов от других маршрутизаторов, принимающих участие в туннелях"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Очередь"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Новости и обновления"
 
@@ -4320,26 +4339,26 @@ msgstr "Построение туннелей"
 msgid "shared clients"
 msgstr "коллективных клиентов"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Перезапустите I2P-маршрутизатор для установки"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Остановите и снова запустите I2P-маршрутизатор для установки"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Версия {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Доступно обновление"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Скачать обновление {0}"
@@ -4348,7 +4367,7 @@ msgstr "Скачать обновление {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr "Загрузка подписанного<br>тестового обновления<br>{0}"
@@ -4357,69 +4376,85 @@ msgstr "Загрузка подписанного<br>тестового обно
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Скачать неподписанное<br>обновление {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Помощь в настройке брандмауэра"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Проверьте сетевое соединение и настройки NAT/брандмауэра"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Повторить начальную загрузку"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Порядок"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Верх"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Переместить в начало"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Переместить вверх"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Вниз"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "Переместить вниз"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Низ"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "Переместить в конец"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Выберите секцию для добавления"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "событий за {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "усредненное за {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Событий за период"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "сред."
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "макс."
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "текущ."
 
@@ -4596,175 +4631,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Открывать консоль маршрутизатора в веб-браузере при старте I2P"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC-прокси"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P-веб-сервер"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP-прокси"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "I2P-прокси"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "IRC-прокси"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "Классическая"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "Темная"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "Светлая"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "Полночь"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Ограничитель скорости"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "Клиентские сообщения"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Шифрование"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "I2CP"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "Менеджер туннелей"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "Сетевой пул"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "Очередь заданий"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "Сетевая БД"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "NTCP"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Потоки"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Регуляция"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Транспортные протоколы"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "UDP"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "key"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "настройка полосы пропускания"
@@ -4933,7 +4920,7 @@ msgid "Share"
 msgstr "Доля транзитного трафика"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "ПРИМЕЧАНИЕ"
@@ -4974,7 +4961,7 @@ msgid "Advanced network configuration page"
 msgstr "Расширенные сетевые настройки"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -5013,27 +5000,35 @@ msgid ""
 "computer's resources."
 msgstr "Участие в качестве Floodill-узла помогает сети, но может использовать больше ресурсов вашего компьютера."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Автоматически"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "Включить принудительно"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Отключить"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Дополнительные настройки I2P"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Для вступления некоторых изменений в силу может потребоваться перезапуск I2P-маршрутизатора."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "Для внесения изменений отредактируйте файл {0}."
diff --git a/apps/routerconsole/locale/messages_sv.po b/apps/routerconsole/locale/messages_sv.po
index 0ca124fc4118fab2b95e9642516b69ae4a8f7510..e8bdf6f49a4f79c5c0a150ce88bb44954882688a 100644
--- a/apps/routerconsole/locale/messages_sv.po
+++ b/apps/routerconsole/locale/messages_sv.po
@@ -20,8 +20,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 17:51+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-19 09:57+0000\n"
 "Last-Translator: cacapo <handelsehorisont@gmail.com>\n"
 "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/language/sv_SE/)\n"
 "MIME-Version: 1.0\n"
@@ -41,8 +41,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -51,8 +51,8 @@ msgstr[1] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -61,8 +61,8 @@ msgstr[1] "{0} sek"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -71,37 +71,46 @@ msgstr[1] "{0} min"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "1 timme"
 msgstr[1] "{0} timmar"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "n/a"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "1 dag"
 msgstr[1] "{0} dagar"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "1 år"
+msgstr[1] "{0} år"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "n/a"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "1 ns"
 msgstr[1] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -144,7 +153,7 @@ msgstr "Till"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "ingen"
@@ -283,43 +292,43 @@ msgstr "Avvisar tunnlar: Stänger ner"
 msgid "Rejecting tunnels"
 msgstr "Avvisar tunnlar"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "Reseedar: fick info från fil({0} lyckades, {1} fel)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Reseedar"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Reseed hämtad endast en router."
 msgstr[1] "Reseed hämtad endast {0} routrar."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Reseed misslyckades."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Se {0} för hjälp"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "sida för konfiguration av omseedning"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Reseed: hämtar seed URL."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -389,7 +398,7 @@ msgstr "Onåbar på varje transport"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Status"
@@ -404,7 +413,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} används för utgående anslutningar enbart"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP är inte aktiverat"
 
@@ -427,13 +436,13 @@ msgid ""
 msgstr "För att åsidosätta dessa gränser, lägg till inställningarna i2np.ntcp.maxConnections = nnn och i2np.udp.maxConnections = nnn på den avancerade inställningarsidan."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Definitioner"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -448,7 +457,7 @@ msgstr "Fjärr peeren, identifierad med routerhash"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Mapp"
 
@@ -475,13 +484,13 @@ msgstr "Tiden sedan ett paket har mottagits / sänts"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Stillastående"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "In/Ut"
@@ -496,14 +505,14 @@ msgstr "Tiden sedan denna anslutning etablerades"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Uppe"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Tidsförvridning"
 
@@ -537,7 +546,7 @@ msgstr "Den tröskel för långsam start"
 msgid "The round trip time in milliseconds"
 msgstr "Tur och returtid i millisekunder"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -552,7 +561,7 @@ msgstr "Nuvarande maximala försändningsstorlek för paket / uppskattad maximal
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -562,7 +571,7 @@ msgstr "Det totala antalet paket som skickats till denna peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -571,7 +580,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Det totala antalet paket som har mottagits från denna peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "DUP TX"
 
@@ -580,7 +589,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Det totala antalet paket som återutsänds till peer"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "DUP RX"
 
@@ -619,8 +628,8 @@ msgstr "WAN PPP anslutning"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Upptid"
 
@@ -715,17 +724,17 @@ msgid "NTCP connections"
 msgstr "NTCPanslutningar"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Gräns"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Timeout"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -738,126 +747,126 @@ msgid "Backlogged?"
 msgstr "Släpar efter?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Inkommande"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Utgående"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} peer"
 msgstr[1] "{0} peers"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP-anslutningar"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sortera efter peer hash"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Riktning/Inledning"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sortera efter stillastående inkommande"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sortera efter utgående utgående"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sortera efter inkommande hastighet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sortera efter utgående hastighet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sortera efter anslutningsupptid"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sortera efter klockanvridning"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sortera efter överbelastningfönster"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sortera efter långsam starttröskel"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sortera efter tur och returtid"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sortera efter omsändningstimeout"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sortera efter utgående maximal överföringsenhet"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sortera efter paket som skickats"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sortera efter paket som mottagits"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sortera efter paket som återutsänds"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sortera efter paket som mottagits fler än en gång"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Vi erbjöd oss att introducera dem"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "De erbjöd sig att introducera oss"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "Strypt"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 misslyckande"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} misslyckande"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Förbjudna"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "backlogged"
 
@@ -895,66 +904,66 @@ msgstr "Släpper tunnelförfrågningar: Hög belastning"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Släpper tunnelförfrågningar: Kötid"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Ny version för plugin {0} finns tillgänglig"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Uppdateringskontroll misslyckades för plugin {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Ingen ny version tillgänglig för plugin {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B överfört"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Installation misslyckades från {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Överföring misslyckades från {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Uppdatering hämtad"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Startar om"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Update verifierad"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "från {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Osignerad uppdateringsfil från {0} är korrumperad"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Misslyckades med att kopiera till {0}"
@@ -967,7 +976,7 @@ msgstr "Misslyckades med att kopiera till {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "HTTP klientproxytunnel måste köra"
@@ -981,20 +990,20 @@ msgstr "HTTP klientproxytunnel måste köra"
 msgid "Updating"
 msgstr "Uppdaterar"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Nätverks-uppdateringar inaktiverade. Kontrollera pakethanteraren."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Inga skrivrättigheter för I2P installations-katalogen."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Uppdatera först till version {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Kräver Java version {0} installerad Java version är {1}"
@@ -1184,16 +1193,20 @@ msgid "No new version found at {0}"
 msgstr "Ingen ny version hittad på {0}"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Permanent förbjuden"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Tillfälligt förbud utgår om {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "Förbjuden till omstart eller {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "unban nu"
 
@@ -1294,18 +1307,18 @@ msgstr "unban nu"
 msgid "I2P Router Console"
 msgstr "I2P Routerkonsol"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Fel vid uppdatering av konfiguration - se felloggar"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Konfigurationen sparades utan problem"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1513,7 +1526,7 @@ msgid "Add Client"
 msgstr "Lägg till Klient"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Klient"
@@ -1545,9 +1558,9 @@ msgid "Plugin"
 msgstr "Plugin"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Version"
 
@@ -1569,7 +1582,8 @@ msgstr "Licens"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Webbplats"
 
@@ -1582,7 +1596,7 @@ msgid "Stop"
 msgstr "Stoppa"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Kontrollera efter uppdateringar"
@@ -1604,7 +1618,7 @@ msgstr "Ta bort"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1614,7 +1628,7 @@ msgstr "Ta bort valda"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1633,7 +1647,7 @@ msgstr "Återställ standardvärden"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1762,8 +1776,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Ta bort"
 
@@ -1773,7 +1787,7 @@ msgstr "Välj en klass att lägga till"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Bandbredd"
 
@@ -1782,7 +1796,7 @@ msgid "Home Page"
 msgstr "Startsida "
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Nätverk"
 
@@ -1838,9 +1852,9 @@ msgid "UI"
 msgstr "Användargränssnitt"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tunnlar"
 
@@ -1858,15 +1872,15 @@ msgid "Logging"
 msgstr "Logging"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Peers"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Statistik"
 
@@ -1878,8 +1892,8 @@ msgstr "Avancerad"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2140,7 +2154,7 @@ msgstr "Starta om omedelbart"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Omstart"
 
@@ -2611,8 +2625,8 @@ msgid "User Name"
 msgstr "Användarnamn"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Lägg till "
 
@@ -2621,91 +2635,91 @@ msgstr "Lägg till "
 msgid "Password"
 msgstr "Lösenord"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "Uppdatering eller kontroll pågår"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "Uppdatering tillgänglig, försöker ladda ner nu"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "Uppdatering tillgänglig, klicka på knappen till vänster för att ladda ner"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Ingen uppdatering tillgänglig"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Uppdaterar nyhets URLer till {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "intern"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Uppdaterar poxyvärd till {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Uppdaterar proxyport yill {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Uppdaterar uppdateringsfrekvensen till {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Aldrig"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "Uppdaterar uppdaterings policy till {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Uppdaterar uppdaterings URL:er."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Uppdaterar nycklar med tillit till."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Uppdaterar osignerad uppdaterings URL till {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr "Uppdaterar signerad utvecklingsbuild URL till {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Alltid"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Berätta endast"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Ladda ner och kontrollera endast"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Ladda ner, kontrollera och starta om"
 
@@ -2831,7 +2845,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Inga \"{0}\" händelser funna i föregående {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Tid"
 
@@ -2981,12 +2995,12 @@ msgid "Graph settings saved"
 msgstr "Grafinställningar sparade"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Adressbok"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "Hantera din I2P host-fil här (I2P domännamns uppslag)"
 
@@ -3017,17 +3031,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Konfiguration av I2P startsida"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Anonym webbmailklient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "E-post"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P Router Hjälp"
 
@@ -3037,17 +3051,17 @@ msgid "Router Console"
 msgstr "Router Konsol"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Inbyggd anonym Bittorrentklient"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrents"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Lokal webserver"
 
@@ -3216,97 +3230,97 @@ msgstr "HTTP proxyn är inte uppe"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "Din webbläsare är inte korrekt konfigurerad för att använda HTTP-proxy på {0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Namn"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "I2P arbetskö"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "Uppgifts körningar"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "Aktiva uppgifter"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "startade {0} sedan"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "Nyligen slutförda uppgifter"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "slutförd {0} sedan"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "Redo/väntande uppgifter"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "Schemalagda uppgifter"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} kommer starta om {1}"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "Statistik över alla uppgifter"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "Uppgift"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "Köade"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "Körningar"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "Släppt"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Genomsnitt"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Max"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Min"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "Väntande"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Sammanfattning"
 
@@ -3324,223 +3338,223 @@ msgid "No log messages"
 msgstr "Inga logmeddelande"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Lokal router"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "Router uppslag"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Alla routers"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "'Alla routers med fulla stats"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "Router"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "hittades inte i nätverksdatabasen"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "LeaseSet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Lokal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Opubliserad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Destination"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "Lägg till lokal adressbok"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "GÃ¥r ut om {0}"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "Gick ut {0} sedan"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Gateway"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "Lease"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tunnel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "Inte intierad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "Nätverksdatabas Routerstatistik"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "Antal"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "Transporter"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Land"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "VÃ¥r information"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "Peer information för"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "Full post"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Dold"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Uppdaterad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} sedan"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Publicerad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "Signeringsnyckel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adress(er)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "kostnad"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "Dold eller startande"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU med introducerare"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP och SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP och SSU med introducerare"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "Endast IPv6 SSU, introducerade"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, introducerade"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, introducerade"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "Endast IPv6 NTCP, SSU, introducerade"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Nyheter senast uppdaterade för {0} sedan."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Nyheter senast kontrollerade för {0} sedan."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "Dölj nyheter"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "Visa nyheter"
 
@@ -3563,7 +3577,7 @@ msgstr[1] "{0} insticksprogram uppdaterade"
 msgid "Plugin update check complete"
 msgstr "Sökning efter uppdateringar för insticksprogram slutförd"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3590,19 +3604,19 @@ msgid "Groups (Caps)"
 msgstr "Grupper (Kap.)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Hastighet"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Kapacitet"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Integration"
 
@@ -3625,7 +3639,7 @@ msgid "Failing"
 msgstr "Misslyckas"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Integrerad"
 
@@ -3702,71 +3716,71 @@ msgstr "1h felfrekvens"
 msgid "1d Fail Rate"
 msgstr "1d felfrekvens"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "Trösklar"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "snabba peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "högkapacitets peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "väintegrerade peers"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "som bestämd av profilorganiseraren"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "grupper"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "kapaciteten i netDb, används inte för att fastställa profiler"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "kap."
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "topp genomströmning (bytes per sekund) under en period av1 minut  som klienten har upprätthållit i en tunnel"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "hastighet"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "kapacitet"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "hur många tunnlar kan vi be dem att gå med i på en timme?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "hur många nya peers har de berättat för oss om nyligen?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "integration"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "är peeren bannad, eller inte kan nås, eller en misslyckas tunnel test?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "status"
 
@@ -3894,277 +3908,277 @@ msgstr "Diagram över antal händelser"
 msgid "Lifetime average value"
 msgstr "Livstids medelvärde"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P Router Hjälp &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Hjälp &amp; FAQ"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "Konfigurera start av klienter och webbappar (tjänster), starta vilande tjänster manuellt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P tjänster"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "Konfigurera I2P Router"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P internt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "Visa existerande tunnlar och status för tunnlar som byggs"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "Visa alla aktuella peeranslutningar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "Visa de senaste peer prestanda profiler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profiler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "Visa lista över alla kända I2P routrar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Hälsorapport"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Loggar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "Diagram över router prestanda"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Grafer"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "resultatstatistik för router i textform"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "Lokala Tunnlar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr "Hanterare för dolda tjänster"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Allmänt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "Din lokala identitet är din unika I2P routers identitet, liknande en ip-adress men anpassad för I2P."
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "avslöja aldrig den för någon eftersom det kan avslöja din  ip-adress "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Lokal identitet"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Din unika I2P router identitet är"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "avslöja det aldrig till någon"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "visa"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "Den version av I2P vi kör "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Hur länge vi har kört för denna session"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "Hjälp med att konfigurera din brandvägg och router för optimal prestanda för I2P"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "Se mer information på wikin"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "Varning: ECDSA inte tillgänglig. Uppdatera Java eller OS"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "Konfigurera I2P uppdateringar "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2P uppdatering"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "Peers vi har pratat med de senaste minuterna/timmarna"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Aktiv"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "Antal peers tillgängliga för att bygga klient tunnlar "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Snabb"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "Antal peers tillgängliga för att bygga undersökande tunnlar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Hög kapacitet"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "Anta tillgängliga för  nätverksdatabasförfrågningar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "Totala antalet peers i vår nätverksdatabas"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Kända"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Ställ in routerns bandbreddsallokering"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Bandbredd in/ut"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Totalt"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Använda"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "Används för att bygga och testa tunnlar och kommunicera med floodfill peers"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "Utforskande"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "Tunnlar vi använder för att tillhandahålla eller få tillgång till tjänster i nätverket"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr "Tunnlar vi deltar i och direkt bidrar med bandbredd till nätverket"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Deltagande"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "Förhållandet mellan tunneln hopp ger vi tillhandahåller och använder - ett värde större än 1,00 indikerar ett positivt bidrag till nätverket"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Delningsratio"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Vad är i routerns arbeteskö"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Trängsel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "Indikerar routern prestanda"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Arbetsfördröjning"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "Indikerar hur snabbt utåtgåendemeddelanden till andra I2P routers sänds "
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Meddelandefördröjning"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "Tur och retur tid för ett tunnel test"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Tunnelfördröjning"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "Köade förfrågningar från andra routrar att delta i tunnlar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Eftersläpning"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Nyheter &amp; Uppdateringar "
 
@@ -4268,26 +4282,26 @@ msgstr "Bygger tunnlar"
 msgid "shared clients"
 msgstr "delade klienter"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Klicka på Omstart för att installera"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "Klicka Stäng av och starta om för att installera"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Version {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Uppdateringar tillgängliga"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Hämtat {0} uppdateringar"
@@ -4296,7 +4310,7 @@ msgstr "Hämtat {0} uppdateringar"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr "Ladda ner signerad <br>Utvecklingsuppdatering</br>{0}"
@@ -4305,69 +4319,85 @@ msgstr "Ladda ner signerad <br>Utvecklingsuppdatering</br>{0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Hämta osignerade <br> uppdateringar {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Hjälp med brandväggskonfigurationen"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "Kontrollera nätverksanslutningen och NAT/brandvägg "
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "Reseed"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "Ordning"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "Top"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "Flytta längst upp"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "Flytta upp"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "Ner"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "Flytta ner"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "Botten"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "Flytta längst ner"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "Välj ett avsnitt för att lägga till det"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "händelser i {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "genomsnittlig för {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Händelser per period"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "genomsnitt"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "max"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "nu"
 
@@ -4544,175 +4574,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "Öppna router konsolen i browser vid start"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr "delade klienter (DSA)"
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC proxy"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P webbserver"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP-proxy"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klassisk"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "mörk"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "ljus"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "midnatt"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Bandbreddsbegränsare"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "KlientMeddelande"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Kryptering"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTunnel"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "JobbKö"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "NätverksDatabas"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Ström"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Reglera"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Transport"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "värd"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "nyckel"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "konfigurera bandbredd "
@@ -4881,7 +4863,7 @@ msgid "Share"
 msgstr "Dela"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOTERA"
@@ -4922,7 +4904,7 @@ msgid "Advanced network configuration page"
 msgstr "Sida för avancerade nätverksinställningar "
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4961,27 +4943,35 @@ msgid ""
 "computer's resources."
 msgstr "Att delta som floodfill hjälper nätverket, men använder mer av din dators resurser."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr "Denna router är för närvarande floodfill."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr "Denna router är för närvarande inte floodfill."
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "Automatisk"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "Tvingande PÃ¥"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "Avaktivera"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "Avancerad I2P Konfiguration"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "Vissa ändringar kan kräva en omstart för att börja gälla."
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "För att göra ändringar, redigera fil {0}"
diff --git a/apps/routerconsole/locale/messages_tr.po b/apps/routerconsole/locale/messages_tr.po
index 161547db59804acbb5dfa72158fbc1cee09d926a..0c8ab171d714481db82ca1e2c7b2c71251ef4104 100644
--- a/apps/routerconsole/locale/messages_tr.po
+++ b/apps/routerconsole/locale/messages_tr.po
@@ -8,17 +8,17 @@
 # Erkin Batu AltunbaÅŸ <erkinbatu@gmail.com>, 2013
 # gelomichelan, 2015
 # gelomichelan, 2015
-# Kaya Zeren <kayazeren@gmail.com>, 2013
+# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
 # Trans Lator <kqzwypgi@sharklasers.com>, 2013
 # Trans Lator <kqzwypgi@sharklasers.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-08-08 07:10+0000\n"
+"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
+"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -36,8 +36,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -45,8 +45,8 @@ msgstr[0] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -54,8 +54,8 @@ msgstr[0] "{0} sn"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -63,38 +63,46 @@ msgstr[0] "{0} dk"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "{0} saat"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "kullanılamaz"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "{0} gün"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "{0} yıl"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "kullanılamaz"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
-msgstr[0] ""
+msgstr[0] "{0,number,####} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
-msgstr[0] ""
+msgstr[0] "{0,number,###} μs"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:201
 #, java-format
@@ -114,11 +122,11 @@ msgstr "IP blocklist.txt dosyasındaki {0} kayıdıyla engellendi"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:920
 msgid "IPs Banned Until Restart"
-msgstr ""
+msgstr "Yeniden Başlatılana Kadar Yasaklanmış IP Adresleri"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:957
 msgid "IPs Permanently Banned"
-msgstr ""
+msgstr "Kalıcı Olarak Yasaklanmış IP Adresleri"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:959
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:71
@@ -132,7 +140,7 @@ msgstr "Kime"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "yok"
@@ -145,66 +153,66 @@ msgstr "Tamam"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:312
 msgid "IPv4: OK; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Tamam; IPv6: Sınanıyor"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:313
 msgid "IPv4: OK; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Tamam; IPv6: Güvenlik duvarlı"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:314
 msgid "IPv4: Testing; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Sınanıyor; IPv6: Tamam"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:315
 msgid "IPv4: Firewalled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Güvenlik duvarlı; IPv6: Tamam"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:316
 msgid "IPv4: Disabled; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Devre dışı; IPv6: Tamam"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:317
 msgid "IPv4: Symmetric NAT; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Simetrik NAT; IPv6: Tamam"
 
 #. * IPv4 symmetric NAT, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:319
 msgid "Symmetric NAT"
-msgstr ""
+msgstr "Simetrik NAT"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:320
 msgid "IPv4: Symmetric NAT; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Simetrik NAT; IPv6: Sınanıyor"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:321
 msgid "IPv4: Firewalled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Güvenlik duvarlı; IPv6: Sınanıyor"
 
 #. * IPv4 firewalled, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:323
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:706
 msgid "Firewalled"
-msgstr "Güvenlik duvarı engellemesi"
+msgstr "Güvenlik duvarlı"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:324
 msgid "IPv4: Testing; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Sınanıyor; IPv6: Güvenlik duvarlı"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:325
 msgid "IPv4: Disabled; IPv6: Testing"
-msgstr ""
+msgstr "IPv4: Devre dışı; IPv6: Sınanıyor"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:326
 msgid "IPv4: Disabled; IPv6: Firewalled"
-msgstr ""
+msgstr "IPv4: Devre dışı; IPv6: Güvenlik duvarlı"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:327
 msgid "Disconnected"
-msgstr ""
+msgstr "Bağlantı kesildi"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:328
 msgid "Port Conflict"
-msgstr ""
+msgstr "Kapı Çakışması"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:329
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:155
@@ -221,7 +229,7 @@ msgstr "Sınanıyor"
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:135
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:523
 msgid "Rejecting tunnels: Starting up"
-msgstr ""
+msgstr "Tünelleme red ediliyor: Başlatılıyor"
 
 #: ../../../router/java/src/net/i2p/router/RouterThrottleImpl.java:182
 msgid "Rejecting tunnels: High message delay"
@@ -271,46 +279,46 @@ msgstr "Tünelleme red ediliyor: Kapatılıyor"
 msgid "Rejecting tunnels"
 msgstr "Tünelleme red ediliyor"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
-msgstr ""
+msgstr "Yeniden tohumlanıyor: dosyadan yöneltici bilgileri alındı ({0} başarılı, {1} hata)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
-msgstr "Tekrar düğümleniyor"
+msgstr "Yeniden tohumlanıyor"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
-msgstr[0] "Tekrar düğümleme sadece {0} yönlendirici aldı."
+msgstr[0] "Yeniden tohumlama yalnız {0} yöneltici aldı."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
-msgstr "Tekrar düğümleme başarısız oldu."
+msgstr "Yeniden tohumlama yapılamadı."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
-msgstr "Yardım için {0}'a bakınız."
+msgstr "Yardım için {0} bölümüne bakın."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
-msgstr "tekrar düğümleme düzenleşim sayfası"
+msgstr "yeniden tohumlama ayarları sayfası"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
-msgstr "Tekrar düğümleniyor: düğüm URL'sini alıyor."
+msgstr "Yeniden tohumlanıyor: tohum İnternet adresi alınıyor."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
-msgstr "Tekrar düğümleniyor: yönlendirici bilgilerini düğümleme URL''sinden alıyor ({0} başarılı, {1} hatalı)."
+msgstr "Yeniden tohumlanıyor: Tohum İnternet adresinden yöneltici bilgileri alınıyor ({0} başarılı, {1} hata)."
 
 #. NOTE TO TRANSLATORS - each of these phrases is a description for a
 #. statistic
@@ -318,19 +326,19 @@ msgstr "Tekrar düğümleniyor: yönlendirici bilgilerini düğümleme URL''sind
 #. Please keep relatively short so it will fit on the graphs.
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:33
 msgid "Message receive rate (bytes/sec)"
-msgstr ""
+msgstr "İleti alma hızı (bayt/saniye)"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:34
 msgid "Message send rate (bytes/sec)"
-msgstr ""
+msgstr "İleti gönderme hızı (bayt/saniye)"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:35
 msgid "Low-level send rate (bytes/sec)"
-msgstr ""
+msgstr "Düşük düzey gönderme hızı (bayt/saniye)"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:36
 msgid "Low-level receive rate (bytes/sec)"
-msgstr ""
+msgstr "Düşük düzey alma hızı (bayt/saniye)"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:37
 msgid "How many peers we are actively talking with"
@@ -338,25 +346,25 @@ msgstr "Etkin olarak görüşülen eş sayısı"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:40
 msgid "Known fast peers"
-msgstr ""
+msgstr "Bilinen hızlı eşler"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:41
 msgid "Known integrated (floodfill) peers"
-msgstr ""
+msgstr "Bilinen tümleştirilmiş (floodfill) eşler"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:42
 msgid "Size of tunnel acceptor backlog"
-msgstr ""
+msgstr "Tünel onaylayıcı geri günlüğünün boyutu"
 
 #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:502
 msgid "NetDb entry"
-msgstr "NetDb giriÅŸi"
+msgstr "NetDb kaydı"
 
 #. This used to be "no common transports" but it is almost always no
 #. transports at all
 #: ../../../router/java/src/net/i2p/router/transport/GetBidsJob.java:73
 msgid "No transports (hidden or starting up?)"
-msgstr "Taşıma yok (gizli mi, yeni mi başlıyor?)"
+msgstr "Aktarım yok (gizli ya da yeni mi başlıyor)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:601
 msgid "Unsupported signature type"
@@ -364,11 +372,11 @@ msgstr "Desteklenmeyen imza tipi"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:618
 msgid "No support for our signature type"
-msgstr ""
+msgstr "Ä°mza tipimiz desteklenmiyor"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:622
 msgid "Unreachable on any transport"
-msgstr "Hiçbir taşımada erişilebilir değil"
+msgstr "Hiçbir aktarım için erişilebilir değil"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:674
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:565
@@ -376,24 +384,24 @@ msgstr "Hiçbir taşımada erişilebilir değil"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Durum"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:692
 msgid "Router Transport Addresses"
-msgstr "Yönlendirici Taşıma Adresleri"
+msgstr "Yöneltici Aktarım Adresleri"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:700
 #, java-format
 msgid "{0} is used for outbound connections only"
-msgstr "{0} yalnızca giden bağlantılar içindir."
+msgstr "{0} yalnız giden bağlantılar için kullanılır"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
-msgstr "UPnp etkin deÄŸil"
+msgstr "UPnP etkin deÄŸil"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:720
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
@@ -405,22 +413,22 @@ msgstr "Yardım"
 msgid ""
 "Your transport connection limits are automatically set based on your "
 "configured bandwidth."
-msgstr "Taşıma bağlantı sınırlarınız ayarlı kuşak genişliğiniz taban alınarak otomatikman belirlenmiştir."
+msgstr "Aktarım bağlantı sınırlarınız ayarlanmış bant genişliğinize göre kendiliğinden belirlenmiştir."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:723
 msgid ""
 "To override these limits, add the settings i2np.ntcp.maxConnections=nnn and "
 "i2np.udp.maxConnections=nnn on the advanced configuration page."
-msgstr "Bu sınırları geçersiz kılmak için i2np.ntcp.maxConnections=nnn ve i2np.udp.maxConnections=nnn ayarlarını gelişmiş ayarlar sayfasında ekleyin."
+msgstr "Bu sınırları değiştirmek için gelişmiş ayarlar bölümünden i2np.ntcp.maxConnections=nnn ve i2np.udp.maxConnections=nnn ayarlarını ekleyin."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Tanımlar"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -435,9 +443,9 @@ msgstr "Uzak eş, yönlendirici hash'i tarafından tespit edilmiş"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
-msgstr "Dizin"
+msgstr "Klasör"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:728
 msgid "Inbound connection"
@@ -462,37 +470,37 @@ msgstr "Bir paketin alınması / gönderilmesi üzerinden geçen zaman"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "BoÅŸta"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
-msgstr "Girdi/Çıktı"
+msgstr "Giriş/Çıkış"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
-msgstr "Düzleştirilmiş gelen / giden aktarım oranı (saniyede KBayt)"
+msgstr "Düzeltilmiş gelen / giden aktarım hızı (KBayt/saniye)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 msgid "How long ago this connection was established"
-msgstr ""
+msgstr "Bu bağlantının ne kadar zaman önce kurulduğu"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Yukarı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
-msgstr "Kayma"
+msgstr "Sapma"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 msgid "The difference between the peer's clock and your own"
@@ -502,7 +510,7 @@ msgstr "Eşin ve sizin saatleriniz arasındaki ayrım"
 msgid ""
 "The congestion window, which is how many bytes can be sent without an "
 "acknowledgement"
-msgstr "Tıkanıklık penceresi, yani bir onay olmadan kaç bayt gönderilebileceği"
+msgstr "Tıkanma eşiği, bir onay olmadan kaç bayt gönderilebileceğini belirler"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:740
 msgid "The number of sent messages awaiting acknowledgement"
@@ -510,11 +518,11 @@ msgstr "Onay bekleyen gönderilmiş ileti sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:741
 msgid "The maximum number of concurrent messages to send"
-msgstr ""
+msgstr "Aynı gönderilebilecek en fazla ileti sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:742
 msgid "The number of pending sends which exceed congestion window"
-msgstr "Tıkanıklık penceresini aşan ve gönderilmeyi bekleyen ileti sayısı"
+msgstr "Tıkanma eşiğini aşan ve gönderilmeyi bekleyen ileti sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:743
 msgid "The slow start threshold"
@@ -522,24 +530,24 @@ msgstr "Yavaş başlangıç eşiği"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:744
 msgid "The round trip time in milliseconds"
-msgstr "Milisaniyelerle gidiş-dönüş"
+msgstr "Milisaniye cinsinden gidiş-dönüş süresi"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
 msgid "The retransmit timeout in milliseconds"
-msgstr "Milisaniylerle yeniden iletim zaman aşımı"
+msgstr "Milisaniye cinsinden yeniden aktarım zaman aşımı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:747
 msgid ""
 "Current maximum send packet size / estimated maximum receive packet size "
 "(bytes)"
-msgstr "Mevcut azami gönderilen paket boyu / tahmini azami alınan paket boyu (bayt)"
+msgstr "Geçerli en büyük gönderilen paket boyutu / öngörülen en büyük alınan paket boyutu (bayt)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -549,7 +557,7 @@ msgstr "Eşe gönderilen toplam paket sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -558,22 +566,22 @@ msgid "The total number of packets received from the peer"
 msgstr "Eşten alınan toplam paket sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Dup TX"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
 msgid "The total number of packets retransmitted to the peer"
-msgstr "Eşe yeniden iletilen paket sayısı"
+msgstr "Eşe yeniden aktarılan toplam paket sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Dup RX"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
 msgid "The total number of duplicate packets received from the peer"
-msgstr "Eşten alınan çifte paket sayısı"
+msgstr "Eşten alınan toplam çift paket sayısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:560
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
@@ -582,63 +590,63 @@ msgstr "Hizmet"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:564
 msgid "WAN Common Interface Configuration"
-msgstr ""
+msgstr "Ortak WAN Arabirimi Ayarları"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:567
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:587
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:614
 msgid "Type"
-msgstr ""
+msgstr "Tip"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:569
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:589
 msgid "Upstream"
-msgstr ""
+msgstr "Yükleme"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:571
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:591
 msgid "Downstream"
-msgstr ""
+msgstr "Ä°ndirme"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:575
 msgid "WAN PPP Connection"
-msgstr ""
+msgstr "WAN PPP Bağlantısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Çalışma süresi"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:593
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:616
 msgid "External IP"
-msgstr ""
+msgstr "Dış IP Adresi"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:597
 msgid "Layer 3 Forwarding"
-msgstr ""
+msgstr "Layer 3 Ä°letme"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:598
 msgid "Default Connection Service"
-msgstr ""
+msgstr "Varsayılan Bağlantı Hizmeti"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:602
 msgid "WAN IP Connection"
-msgstr ""
+msgstr "WAN IP Bağlantısı"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:620
 msgid "WAN Ethernet Link Configuration"
-msgstr ""
+msgstr "WAN Ethernet Bağlantısı Ayarı"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:641
 msgid "Found Device"
-msgstr ""
+msgstr "Aygıt Bulundu"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:643
 msgid "Subdevice"
-msgstr ""
+msgstr "Alt aygıt"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:664
 msgid "UPnP Status"
@@ -646,13 +654,13 @@ msgstr "UPnP Durumu"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:668
 msgid "Disabled UPnP Devices"
-msgstr ""
+msgstr "UPnP Aygıtlarını Devre Dışı Bırak"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:682
 msgid ""
 "UPnP has been disabled; Do you have more than one UPnP Internet Gateway "
 "Device on your LAN ?"
-msgstr ""
+msgstr "UPnP devre dışı bırakıldı. yerel ağınızda birden fazla UPnP İnternet geçidi olabilir mi?"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:685
 msgid "UPnP has not found any UPnP-aware, compatible device on your LAN."
@@ -665,7 +673,7 @@ msgstr ""
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:695
 msgid "The current external IP address is not available."
-msgstr ""
+msgstr "Geçerli dış IP adresi kullanılamıyor."
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:699
 #, java-format
@@ -684,12 +692,12 @@ msgstr ""
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:709
 #, java-format
 msgid "{0} port {1,number,#####} was successfully forwarded by UPnP."
-msgstr ""
+msgstr "{0} kapısı {1,number,#####} UPnP tarafından yönlendirildi."
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:711
 #, java-format
 msgid "{0} port {1,number,#####} was not forwarded by UPnP."
-msgstr ""
+msgstr "{0} kapısı {1,number,#####} UPnP tarafından yönlendirilmedi."
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:561
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:877
@@ -702,17 +710,17 @@ msgid "NTCP connections"
 msgstr "NTCP bağlantıları"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Sınır"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Zaman aşımı"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -725,125 +733,125 @@ msgid "Backlogged?"
 msgstr "Biriken?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Gelen"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Giden"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
-msgstr[0] ""
+msgstr[0] "{0} eÅŸ"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP bağlantılari"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
-msgstr "Eş hash'lerine göre sırala"
+msgstr "Eş karmasına göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Yönerge/Giriş"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
-msgstr "Boşta gelenlere göre sırala"
+msgstr "Geliş boşta beklemesine göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
-msgstr "Boşta gidenlere göre sırala"
+msgstr "Gidiş boşta beklemesine göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
-msgstr "Gelen oranına göre sırala"
+msgstr "Geliş hızına göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
-msgstr "Giden oranına göre sırala"
+msgstr "Gidiş hızına göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Bağlantı süresine göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
-msgstr "Saat kaymasına göre sırala"
+msgstr "Saat sapmasına göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Yavaş başlangıç eşiğine göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Gidiş-dönüş süresine göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
-msgstr "Yeniden iletim zaman aşımına göre sırala"
+msgstr "Yeniden aktarım zaman aşımına göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
-msgstr "Giden azami iletim birimine göre sırala"
+msgstr "Gidiş en fazla aktarım birimine göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Gönderilen paketlere göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Alınan paketlere göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
-msgstr "Yeniden iletilen paketlere göre sırala"
+msgstr "Yeniden aktarılan paketlere göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Bir kereden çok alınan paketlere göre sırala"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Onlara tanıştırma önerdik"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Bize tanıştırma önerildi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
-msgstr "Tıkalı"
+msgstr "Tıkanmış"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 başarısızlık"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} başarısızlık"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
-msgstr "Yasaklı"
+msgstr "Yasaklanmış"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr ""
 
@@ -853,20 +861,20 @@ msgstr "Tünel istekleri atılıyor: Çok yavaş"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:260
 msgid "Dropping tunnel requests: High job lag"
-msgstr ""
+msgstr "Tünel istekleri atılıyor: Yüksek görev gecikmesi"
 
 #. don't even bother, since we are so overloaded locally
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:451
 msgid "Dropping tunnel requests: Overloaded"
-msgstr "Tünel istekleri atılıyor: Aşırı yük"
+msgstr "Tünel istekleri atılıyor: Aşırı yüklenme"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
 msgid "Rejecting tunnels: Hidden mode"
-msgstr ""
+msgstr "Tüneller red ediliyor: Gizli kip"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
 msgid "Rejecting tunnels: Request overload"
-msgstr "Tüneller reddediliyor: İstek aşırı yükü"
+msgstr "Tüneller reddediliyor: İstek aşırı yüklenmiş"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:752
 msgid "Rejecting tunnels: Connection limit"
@@ -875,72 +883,72 @@ msgstr "Tüneller reddediliyor: Bağlantı sınırı"
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:964
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:997
 msgid "Dropping tunnel requests: High load"
-msgstr "Tünel istekleri atılıyor: Yüksek yük"
+msgstr "Tünel istekleri atılıyor: Yüksek yüklenme"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:1076
 msgid "Dropping tunnel requests: Queue time"
-msgstr "Tünel talepleri atılıyor: Kuyruk süresi"
+msgstr "Tünel istekleri atılıyor: Kuyruk süresi"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
-msgstr "Yeni eklenti sürümü {0} mevcut"
+msgstr "Yeni uygulama eki {0} sürümü yayınlanmış"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
-msgstr "{0} eklentisi için güncelleme denetimi başarısız"
+msgstr "{0} uygulama eki güncellemesi denetlenemedi"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
-msgstr "{0} eklentisi için yeni sürüm mevcut değil"
+msgstr "{0} uygulama eki için yeni bir sürüm yayınlanmamış"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
-msgstr "{0}B iletildi"
+msgstr "{0}B aktarıldı"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "{0} üzerinden aktarılamadı"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Güncelleme indirildi"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Yeniden başlatılıyor"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Güncelleme doğrulandı"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "{0}'dan"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "{0} üzerinden alınan imzasız dosya bozuk"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "{0} üzerine kopyalanamadı"
@@ -953,10 +961,10 @@ msgstr "{0} üzerine kopyalanamadı"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
-msgstr ""
+msgstr "HTTP istemci vekil sunucu tüneli çalışıyor olmalıdır"
 
 #. set status before thread to ensure UI feedback
 #: ../java/src/net/i2p/router/update/DevSU3UpdateHandler.java:91
@@ -967,28 +975,28 @@ msgstr ""
 msgid "Updating"
 msgstr "Güncelleniyor"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
-msgstr ""
+msgstr "Ağ içi güncellemeler devre dışı. Paket yöneticisini denetleyin."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
-msgstr ""
+msgstr "I2P kurulum klasörüne yazma izni yok."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
-msgstr ""
+msgstr "Önce {0} sürümüne güncellemelisiniz"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
-msgstr ""
+msgstr "Java {0} sürümü gerekli ancak yüklü Java sürümü {1}"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateChecker.java:62
 #, java-format
 msgid "Checking for update of plugin {0}"
-msgstr "{0} eklentisi için güncellemeler denetleniyor"
+msgstr "{0} uygulama ekinin güncellemesi denetleniyor"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:90
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:519
@@ -996,33 +1004,33 @@ msgstr "{0} eklentisi için güncellemeler denetleniyor"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:72
 #, java-format
 msgid "Bad URL {0}"
-msgstr ""
+msgstr "{0} İnternet adresi geçersiz"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:95
 #, java-format
 msgid "Attempting to install from file {0}"
-msgstr ""
+msgstr "{0} dosyasından yüklenmeye çalışılıyor"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:98
 #, java-format
 msgid "Failed to install from file {0}, copy failed."
-msgstr ""
+msgstr "{0} dosyasından yüklenemedi, kopyalanamadı"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:118
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:530
 #, java-format
 msgid "Downloading plugin from {0}"
-msgstr "{0}'dan eklenti indiriliyor"
+msgstr "Uygulama eki {0} üzerinden indiriliyor"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:139
 msgid "Plugin downloaded"
-msgstr "Eklenti indirildi"
+msgstr "Uygulama eki indirildi"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:144
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:506
 #, java-format
 msgid "Cannot create plugin directory {0}"
-msgstr "{0} eklenti dizni yaratılamıyor"
+msgstr "{0} uygulama eki klasörü oluşturulamadı"
 
 #. updateStatus("<b>" + "Plugin contains an invalid key" + ' ' + pubkey + ' '
 #. + signer + "</b>");
@@ -1031,7 +1039,7 @@ msgstr "{0} eklenti dizni yaratılamıyor"
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:318
 #, java-format
 msgid "Plugin from {0} contains an invalid key"
-msgstr "{0}'dan gelen eklenti geçersiz anahtar içeriyor"
+msgstr "{0} üzerinden alınan uygulama eki içindeki anahtar geçersiz"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:247
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:257
@@ -1039,90 +1047,90 @@ msgstr "{0}'dan gelen eklenti geçersiz anahtar içeriyor"
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:329
 #, java-format
 msgid "Plugin signature verification of {0} failed"
-msgstr "{0} için eklenti imzası onaylaması başarısız oldu"
+msgstr "{0} için uygulama eki imzası doğrulanamadı"
 
 #. don't display signer, we're really checking the key not the signer name
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:280
 msgid "Plugin not installed - signer is untrusted"
-msgstr ""
+msgstr "Uygulama eki yüklenemedi - imzalayana güvenilmiyor"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:345
 #, java-format
 msgid "Plugin from {0} is corrupt"
-msgstr "{0}'dan gelen eklenti bozuk"
+msgstr "{0} üzerinden alınan uygulama eki bozuk"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:355
 #, java-format
 msgid "Plugin from {0} does not contain the required configuration file"
-msgstr "{0}'dan gelen eklenti gerekli düzenleşim dosyasını içermiyor"
+msgstr "{0} üzerinden alınan uygulama ekinde bulunması gereken ayar dosyası yok"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:377
 #, java-format
 msgid "Plugin from {0} has invalid name or version"
-msgstr "{0}'dan gelen eklenti geçersiz isim'e veya versiyon'a sahip "
+msgstr "{0} üzerinden alınan uygulama ekinin adı ya da sürümü geçersiz"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:382
 #, java-format
 msgid "Plugin {0} has mismatched versions"
-msgstr "{0} eklentisinin uyuşmayan sürümleri var"
+msgstr "{0} uygulama ekinin sürümleri uyuşmuyor"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:393
 #, java-format
 msgid "This plugin requires I2P version {0} or higher"
-msgstr "Bu eklenti I2P sürüm {0} veya üstünü gerektirir"
+msgstr "Bu uygulama eki için I2P {0} sürümü ya da üzeri gereklidir"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:401
 #, java-format
 msgid "This plugin requires Java version {0} or higher"
-msgstr "Bu eklenti Java sürüm {0} veya üstünü gerektirir"
+msgstr "Bu uygulama eki için Java {0} sürümü ya da üzeri gerekir"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:410
 msgid ""
 "Downloaded plugin is for new installs only, but the plugin is already "
 "installed"
-msgstr "İndirilmiş eklenti sadece yeni yüklemeler için geçerli, fakat halihazırda eklenti yüklenmiş durumda"
+msgstr "İndirilmiş uygulama eki yalnız yeni yüklemeler için kullanılabilir, ancak uygulama eki zaten yüklü"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:420
 msgid "Installed plugin does not contain the required configuration file"
-msgstr "Yüklenmiş eklenti gerekli düzenleşim dosyasını içermiyor"
+msgstr "Yüklenmiş uygulama ekin bulunaması gereken ayar dosyası yok"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:428
 msgid "Signature of downloaded plugin does not match installed plugin"
-msgstr "İndirilmiş eklentinin imzası yüklü eklentinin imzası ile uyuşmuyor"
+msgstr "İndirilmiş uygulama ekini imzası yüklü uygulama eki ile uyuşmuyor"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:435
 #, java-format
 msgid "Downloaded plugin version {0} is not newer than installed plugin"
-msgstr "İndirilmiş eklenti sürüm {0} yüklü olan eklentiden daha yeni değil"
+msgstr "İndirilen uygulama ekinin sürümü {0} yüklü olan uygulama ekinden daha yeni değil"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:442
 #, java-format
 msgid "Plugin update requires installed plugin version {0} or higher"
-msgstr "Eklenti güncellemesi yüklü eklentinin sürüm {0} ve üstünü gerektiriyor"
+msgstr "Uygulama ekinin güncellenebilmesi için yüklenmiş uygulama eki sürümü {0} ya da üzerinde olmalıdır"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:449
 #, java-format
 msgid "Plugin update requires installed plugin version {0} or lower"
-msgstr "Uygulama eki güncellenmesi için yüklenmiş uygulama eki sürümü {0} ya da daha düşük olmalıdır"
+msgstr "Uygulama ekinin güncellenebilmesi için yüklenmiş uygulama eki sürümü {0} ya da altında olmalıdır"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:457
 #, java-format
 msgid "Plugin requires Jetty version {0} or higher"
-msgstr ""
+msgstr "Uygulama eki için Jetty {0} ya da üzerindeki bir sürüm gerekli"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:464
 #, java-format
 msgid "Plugin requires Jetty version {0} or lower"
-msgstr ""
+msgstr "Uygulama eki için Jetty {0} ya da önceki bir sürüm gerekli"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:473
 #, java-format
 msgid "Cannot copy plugin to directory {0}"
-msgstr ""
+msgstr "Uygulama eki {0} klasörüne kopyalanamadı"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:483
 msgid "Plugin will be installed on next restart."
-msgstr ""
+msgstr "Uygulama eki sonraki yeniden başlatmada yüklenecek"
 
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:501
 msgid "Plugin is for upgrades only, but the plugin is not installed"
@@ -1170,16 +1178,20 @@ msgid "No new version found at {0}"
 msgstr "{0} üzerinde yeni bir sürüm bulunamadı"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Kalıcı olarak yasaklandı"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Geçici yasaklama {0} içinde kaldırılacak"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
-msgstr "Yeniden başlatılana ya da {0} yapılana kadar yasaklı"
+msgstr "Yeniden başlatılana kadar ya da {0} süresince yasaklı"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "yasağı kaldırın"
 
@@ -1278,38 +1290,38 @@ msgstr "yasağı kaldırın"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:237
 msgid "I2P Router Console"
-msgstr "I2P Yönlendirici Sergeni"
+msgstr "I2P Yöneltici Konsolu"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
-msgstr "Düzenleşimi güncellerken hata - lütfen hata kütüklerine bakınız"
+msgstr "Ayarlar güncellenirken bir sorun çıktı - lütfen hata günlüklerine bakın"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
-msgstr "Düzenleşim başarıyla saklandı"
+msgstr "Ayarlar kaydedildi"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
 msgid ""
 "Error saving the configuration (applied but not saved) - please see the "
 "error logs"
-msgstr "Düzenleşim kaydedilirken hata (uygulandı ancak kaydedilmedi) - lütfen hata kütüklerine bakınız"
+msgstr "Ayarlar kaydedilirken bir sorun çıktı (uygulandı ancak kaydedilmedi) - lütfen hata günlüklerine bakın"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:48
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:506
 msgid "Save Client Configuration"
-msgstr "İstemci Düzenleşimini Kaydet"
+msgstr "İstemci Ayarlarını Kaydet"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:52
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:572
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:576
 msgid "Save Interface Configuration"
-msgstr "Arayüz Düzenleşimini Kaydet"
+msgstr "Arabirim Ayarlarını Kaydet"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:56
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:592
@@ -1319,55 +1331,55 @@ msgstr "WebApp Ayarlarını Kaydedin"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:61
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:609
 msgid "Save Plugin Configuration"
-msgstr "Eklenti Düzenleşimini Kaydet"
+msgstr "Uygulama Eki Ayarlarını Kaydet"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:68
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:625
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:629
 msgid "Install Plugin"
-msgstr "Eklenti Yükle"
+msgstr "Uygulama Eki Yükle"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:77
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:639
 msgid "Install Plugin from File"
-msgstr ""
+msgstr "Dosyadan Uygulama Eki Yükle"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:86
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:650
 msgid "Update All Installed Plugins"
-msgstr ""
+msgstr "Tüm Yüklü Uygulama Eklerini Güncelle"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:138
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:175
 #, java-format
 msgid "Error stopping plugin {0}"
-msgstr "{0} eklentisini durdururken hata"
+msgstr "{0} eklentisi durdurulurken bir sorun çıktı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:143
 #, java-format
 msgid "Deleted plugin {0}"
-msgstr "{0} eklentisi silindi"
+msgstr "{0} uygullama eki silindi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:145
 #, java-format
 msgid "Error deleting plugin {0}"
-msgstr "{0} eklentisini silerken hata"
+msgstr "{0} uygulama eki silinirken bir sorun çıktı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:170
 #, java-format
 msgid "Stopped plugin {0}"
-msgstr "{0} eklentisi durduruldu"
+msgstr "{0} uygulama eki durduruldu"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:180
 #, java-format
 msgid "Stopped webapp {0}"
-msgstr ""
+msgstr "Webapp {0} durduruldu"
 
 #. label (IE)
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:209
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:352
 msgid "Start"
-msgstr "BaÅŸla"
+msgstr "BaÅŸlat"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:282
 msgid "New client added"
@@ -1375,36 +1387,36 @@ msgstr "Yeni istemci eklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:287
 msgid "Client configuration saved successfully"
-msgstr ""
+msgstr "İstemci ayarları kaydedildi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:297
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:323
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:338
 msgid "Bad client index."
-msgstr "Kötü istemci dizni."
+msgstr "İstemci dizini kötü"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:306
 #, java-format
 msgid "Client {0} stopped"
-msgstr ""
+msgstr "{0} istemcisi durduruldu"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:328
 #, java-format
 msgid "Client {0} started"
-msgstr ""
+msgstr "{0} istemcisi başlatıldı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:343
 #, java-format
 msgid "Client {0} deleted"
-msgstr ""
+msgstr "{0} istemcisi siilindi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:358
 msgid "WebApp configuration saved."
-msgstr "WebApp düzenleşimi kaydedildi."
+msgstr "WebApp ayarları kaydedildi."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:372
 msgid "Plugin configuration saved."
-msgstr "Eklenti düzenleşimi kaydedildi."
+msgstr "Uygulama eki ayarları kaydedildi."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202
@@ -1413,11 +1425,11 @@ msgstr "WebApp"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
 msgid "started"
-msgstr "başladı"
+msgstr "başlatıldı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389
 msgid "Failed to start"
-msgstr "Başlayamadı"
+msgstr "Başlatılamadı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:394
 msgid "Failed to find server."
@@ -1425,60 +1437,60 @@ msgstr "Sunucu bulunamadı."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:400
 msgid "No plugin URL specified."
-msgstr "Eklenti URL'si belirtilmedi."
+msgstr "Uygulama ekinin Ä°nternet adresi belirtilmemiÅŸ."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:421
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:79
 msgid "You must enter a file"
-msgstr ""
+msgstr "Bir dosya belirtmelisiniz"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:464
 msgid "Install from file failed"
-msgstr ""
+msgstr "Dosyadan yüklenemedi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:479
 #, java-format
 msgid "No update URL specified for {0}"
-msgstr "{0} için güncelleme URL'si belirtilmedi."
+msgstr "{0} için bir güncelleme İnternet adresi belirtilmemiş"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:488
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:512
 msgid "Plugin or update download already in progress."
-msgstr "Eklenti veya güncelleme indirme daha sürüyor."
+msgstr "Uygulama eki ya da güncelleme indirmesi sürüyor."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:493
 msgid "Updating all plugins"
-msgstr ""
+msgstr "Tüm uygulama ekleri güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:528
 #, java-format
 msgid "Installing plugin from {0}"
-msgstr ""
+msgstr "Uygulama eki {0} üzerinden yükleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:549
 #, java-format
 msgid "Checking plugin {0} for updates"
-msgstr "{0} eklentisi güncellemeler için denetleniyor"
+msgstr "{0} uygulama ekinin güncellemeleri denetleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:580
 #, java-format
 msgid "Started plugin {0}"
-msgstr "{0} eklentisi başladı"
+msgstr "{0} uygulama eki başlatıldı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:582
 #, java-format
 msgid "Error starting plugin {0}"
-msgstr "{0} eklentisi başlatılırken hata"
+msgstr "{0} uygulama eki başlatılırken bir sorun çıktı"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:604
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:93
 #, java-format
 msgid "Added user {0}"
-msgstr ""
+msgstr "{0} kullanıcısı eklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:619
 msgid "Interface configuration saved"
-msgstr ""
+msgstr "Arabirim ayarları kaydedildi"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:620
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:342
@@ -1486,7 +1498,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:94
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:118
 msgid "Restart required to take effect"
-msgstr ""
+msgstr "Değişikliklerin etkili olması için yeniden başlatmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:359
@@ -1499,7 +1511,7 @@ msgid "Add Client"
 msgstr "Ä°stemci Ekle"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Ä°stemci"
@@ -1508,7 +1520,7 @@ msgstr "Ä°stemci"
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:203
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:232
 msgid "Run at Startup?"
-msgstr "Başlangıçta Çalıştır?"
+msgstr "Başlangıçta Çalıştırılsın"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:118
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:204
@@ -1518,22 +1530,22 @@ msgstr "Denetim"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:119
 msgid "Class and arguments"
-msgstr "Sınıf ve argümanlar"
+msgstr "Sınıf ve değişkenler"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:205
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:234
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:284
 msgid "Description"
-msgstr "Tanım"
+msgstr "Açıklama"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:231
 msgid "Plugin"
-msgstr "Eklenti"
+msgstr "Uygulama Eki"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Sürüm"
 
@@ -1547,7 +1559,7 @@ msgstr "Tarih"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:273
 msgid "Author"
-msgstr "Yazar"
+msgstr "GeliÅŸtirici"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:289
 msgid "License"
@@ -1555,7 +1567,8 @@ msgstr "Lisans"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Web sitesi"
 
@@ -1568,7 +1581,7 @@ msgid "Stop"
 msgstr "Durdur"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Güncellemeleri denetle"
@@ -1581,7 +1594,7 @@ msgstr "Güncelle"
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:369
 #, java-format
 msgid "Are you sure you want to delete {0}?"
-msgstr "{0}ı silmek istediğinize emin misiniz?"
+msgstr "{0} ögesini silmek istediğinize emin misiniz?"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:371
 msgid "Delete"
@@ -1590,17 +1603,17 @@ msgstr "Sil"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:473
 msgid "Delete selected"
-msgstr ""
+msgstr "Seçilmişleri silin"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1608,49 +1621,49 @@ msgstr ""
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:530
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:538
 msgid "Add item"
-msgstr ""
+msgstr "Öge ekleyin"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:23
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:500
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:520
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:536
 msgid "Restore defaults"
-msgstr ""
+msgstr "Varsayılanları geri yükleyin"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
 msgid "Save"
-msgstr ""
+msgstr "Kaydet"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:29
 msgid "Home page changed"
-msgstr ""
+msgstr "Ana sayfa deÄŸiÅŸtirildi"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:51
 msgid "Restored default settings"
-msgstr ""
+msgstr "Varsayılan ayarlar geri yüklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:63
 msgid "No name entered"
-msgstr ""
+msgstr "Bir ad yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:68
 msgid "No URL entered"
-msgstr ""
+msgstr "Bİr İnternet adresi yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:84
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:81
 msgid "Added"
-msgstr ""
+msgstr "Eklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:101
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:107
 msgid "Removed"
-msgstr ""
+msgstr "Silindi"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:18
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:505
@@ -1660,21 +1673,21 @@ msgstr "Anahtar ekle"
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:19
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configkeyring_jsp.java:503
 msgid "Delete key"
-msgstr "Anahtar sil"
+msgstr "Anahtarı sil"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:21
 msgid "You must enter a destination"
-msgstr "Bir hedef girmelisiniz"
+msgstr "Bir hedef yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:23
 msgid "You must enter a key"
-msgstr "Bir anahtar girmelisiniz"
+msgstr "Bir anahtar yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43
 msgid "Key for"
-msgstr ""
+msgstr "Şunun anahtarı"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:34
 msgid "added to keyring"
@@ -1682,42 +1695,42 @@ msgstr "anahtarlığa eklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:36
 msgid "Invalid destination or key"
-msgstr "Geçersiz hedef veya anahtar"
+msgstr "Hedef ya da anahtar geçersiz"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:41
 msgid "removed from keyring"
-msgstr "anahtarlıktan silindi"
+msgstr "anahtarlıktan çıkarıldı"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:43
 msgid "not found in keyring"
-msgstr "anahtarlıkta bulunmadı"
+msgstr "anahtarlıkta bulunamadı"
 
 #: ../java/src/net/i2p/router/web/ConfigKeyringHandler.java:45
 msgid "Invalid destination"
-msgstr "Geçersiz hedef"
+msgstr "Hedef geçersiz"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:82
 msgid "Log overrides updated"
-msgstr ""
+msgstr "Günlük değişiklikleri güncellendi"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHandler.java:163
 msgid "Log configuration saved"
-msgstr "Kütük düzenleşimi kaydedildi"
+msgstr "Günlük ayarları kaydedildi"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:45
 msgid ""
 "Add additional logging statements above. Example: net.i2p.router.tunnel=WARN"
-msgstr "Yukarıya ek kütük deyimleri ekleyin. Örnek: net.i2p.router.tunnel=UYAR"
+msgstr "Yukarıdan ek günlük durumları ekleyin. Örnek: net.i2p.router.tunnel=UYAR"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:46
 msgid ""
 "Or put entries in the logger.config file. Example: "
 "logger.record.net.i2p.router.tunnel=WARN"
-msgstr "Veya girdileri logger.config dosyasına koyun. Örnek: logger.record.net.i2p.router.tunnel=UYAR"
+msgstr "Ya da kayıtları logger.config dosyasına ekleyin. Örnek: logger.record.net.i2p.router.tunnel=UYAR"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:47
 msgid "Valid levels are DEBUG, INFO, WARN, ERROR, CRIT"
-msgstr "AYIKLA, BİLGİ, UYAR, HATA ve ACİL geçerli düzeylerdir."
+msgstr "Geçerli düzeyler: AYIKLA, BİLGİ, UYAR, HATA ve ACİL"
 
 #. Homeland Security Advisory System
 #. http://www.dhs.gov/xinfoshare/programs/Copy_of_press_release_0046.shtm
@@ -1748,27 +1761,27 @@ msgstr "UYAR"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Sil"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:122
 msgid "Select a class to add"
-msgstr "Eklemek için sınıf seçin"
+msgstr "Eklenecek sınıfı seçin"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Bant geniÅŸliÄŸi"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
 msgid "Home Page"
-msgstr ""
+msgstr "Ana Sayfa"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "AÄŸ"
 
@@ -1817,16 +1830,16 @@ msgstr "AÄŸ"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:292
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:310
 msgid "Summary Bar"
-msgstr ""
+msgstr "Özet Çubuğu"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
 msgid "UI"
 msgstr "Arayüz"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Tüneller"
 
@@ -1841,18 +1854,18 @@ msgstr "Anahtarlık"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
 msgid "Logging"
-msgstr "Kütük"
+msgstr "Günlükleme"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "EÅŸler"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Ä°statistikler"
 
@@ -1864,8 +1877,8 @@ msgstr "GeliÅŸmiÅŸ"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -1880,16 +1893,16 @@ msgstr "IP adresi güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:234
 msgid "Updating IPv6 setting"
-msgstr ""
+msgstr "IPv6 ayarları güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:251
 msgid "Disabling TCP completely"
-msgstr "TCP bütünüyle devre dışı bırakılıyor"
+msgstr "TCP tümüyle devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:256
 #, java-format
 msgid "Updating TCP address to {0}"
-msgstr ""
+msgstr "TCP adresi {0} olarak güncelleniyor "
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:263
 msgid "Disabling inbound TCP"
@@ -1897,31 +1910,31 @@ msgstr "Gelen TCP devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:265
 msgid "Updating inbound TCP address to auto"
-msgstr "Gelen TCP adresi kendiliğinden olarak güncelleniyor"
+msgstr "Gelen TCP adresi otomatik olarak güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:278
 #, java-format
 msgid "Updating TCP port to {0}"
-msgstr ""
+msgstr "TCP kapısı {0} olarak güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:280
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:305
 msgid "Warning - ports less than 1024 are not recommended"
-msgstr ""
+msgstr "Uyarı - 1024 değerinden küçük kapı değerlerinin kullanılması önerilmez"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:284
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:311
 msgid "Invalid port"
-msgstr ""
+msgstr "Kapı geçersiz"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:289
 msgid "Updating inbound TCP port to auto"
-msgstr "Gelen TCP kapısı kendiliğinden olarak güncelleniyor"
+msgstr "Gelen TCP kapısı otomatik olarak güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:303
 #, java-format
 msgid "Updating UDP port to {0}"
-msgstr ""
+msgstr "UDP kapısı {0} olarak güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:328
 msgid "Gracefully restarting into Hidden Router Mode"
@@ -1933,11 +1946,11 @@ msgstr "Gizli Yönlendirici Kipi'nden çıkmak için incelikle yeniden başlatı
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:339
 msgid "Enabling UPnP"
-msgstr ""
+msgstr "UPnP etkinleÅŸtiriliyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:341
 msgid "Disabling UPnP"
-msgstr ""
+msgstr "UPnP devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:350
 msgid "Enabling laptop mode"
@@ -1949,19 +1962,19 @@ msgstr "Dizüstü kipi devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:359
 msgid "Disabling inbound IPv4"
-msgstr ""
+msgstr "Geliş için IPv4 devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:361
 msgid "Enabling inbound IPv4"
-msgstr ""
+msgstr "Geliş için IPv4 etkinleştiriliyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:369
 msgid "Disabling UDP"
-msgstr ""
+msgstr "UDP devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:371
 msgid "Enabling UDP"
-msgstr ""
+msgstr "UDP devre dışı bırakılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:378
 msgid "Requiring SSU introducers"
@@ -1969,7 +1982,7 @@ msgstr "SSU tanıştırıcıları gerekiyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:436
 msgid "Invalid address"
-msgstr ""
+msgstr "Adres geçersiz"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:442
 #, java-format
@@ -1978,11 +1991,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:467
 msgid "Updating bandwidth share percentage"
-msgstr "Kuşak genişliği pay yüzdesi güncelleniyor"
+msgstr "Bant genişliği paylaşım yüzdesi güncelleniyor"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:497
 msgid "Updated bandwidth limits"
-msgstr "Kuşak genişliği sınırları güncellendi"
+msgstr "Bant genişliği sınırlamaları güncellendi"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:46
 #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:49
@@ -1991,32 +2004,32 @@ msgstr "bilinmeyen"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:256
 msgid "bits per second"
-msgstr "saniye başına bit"
+msgstr "saniyedeki bit"
 
 #: ../java/src/net/i2p/router/web/ConfigNetHelper.java:257
 #, java-format
 msgid "or {0} bytes per month maximum"
-msgstr "veya ay başına azami {0} bayt"
+msgstr "ya da aylık en fazla {0} bayt"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:20
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:496
 msgid "Ban peer until restart"
-msgstr "Yeniden baÅŸlatana dek eÅŸi yasakla"
+msgstr "Yeniden başlatılana dek eşi yasakla"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23
 #, java-format
 msgid "Manually banned via {0}"
-msgstr "{0} ile elle yasaklandı"
+msgstr "{0} tarafından el ile yasaklandı"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 msgid "banned until restart"
-msgstr "yeniden başlayana dek yasaklı"
+msgstr "yeniden başlatılana dek yasaklı"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:27
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:38
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:59
 msgid "Invalid peer"
-msgstr "Geçersiz eş"
+msgstr "Eş geçersiz"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:28
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:498
@@ -2025,24 +2038,24 @@ msgstr "Eşin yasağını kaldır"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 msgid "unbanned"
-msgstr "yasak kalktı"
+msgstr "yasak kaldırıldı"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
 msgid "is not currently banned"
-msgstr "yasaklı değil"
+msgstr "şu anda yasaklı değil"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:39
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:524
 msgid "Adjust peer bonuses"
-msgstr "EÅŸ primlerini ayarla"
+msgstr "EÅŸ hediyelerini ayarla"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:47
 msgid "Bad speed value"
-msgstr "Kötü hız değeri"
+msgstr "Hız değer kötü"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:52
 msgid "Bad capacity value"
-msgstr "Kötü kapasite değeri"
+msgstr "Kapasite değeri kötü"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:61
 msgid "Unsupported"
@@ -2051,54 +2064,54 @@ msgstr "Desteklenmiyor"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:24
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:589
 msgid "Save changes and reseed now"
-msgstr "Değişiklikleri kaydet ve tekrar düğümle"
+msgstr "DeÄŸiÅŸiklikleri kaydet ve yeniden tohumla"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:27
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:49
 msgid "Reseeding is already in progress"
-msgstr "Halihazırda tekrar düğümleme süreci içinde"
+msgstr "Yeniden tohumlama işlemi sürüyor"
 
 #. skip the nonce checking in ReseedHandler
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:30
 msgid "Starting reseed process"
-msgstr "Tekrar düğümleme süreci başlatılıyor"
+msgstr "Yeniden tohumlama süreci başlatılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:32
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:491
 msgid "Reseed from URL"
-msgstr ""
+msgstr "Ä°nternet Adresinden Yeniden Tohumla"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:37
 msgid "You must enter a URL"
-msgstr ""
+msgstr "Bir İnternet adresi yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:66
 msgid "Reseed in progress, check summary bar for status"
-msgstr ""
+msgstr "Yeniden tohumlama sürüyor, durum için özet çubuğuna bakın"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:68
 msgid "Reseed complete, check summary bar for status"
-msgstr ""
+msgstr "Yeniden tohumlama tamamlandı, durum için özet çubuğuna bakın"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:74
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:503
 msgid "Reseed from file"
-msgstr ""
+msgstr "Dosyadan yeniden tohumla"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:84
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:91
 msgid "Reseed from file failed"
-msgstr ""
+msgstr "Dosyadan yeniden tohumlanamadı"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:86
 #, java-format
 msgid "Reseed successful, loaded {0} router info from file"
 msgid_plural "Reseed successful, loaded {0} router infos from file"
-msgstr[0] ""
+msgstr[0] "Yeniden tohumlandı, dosyadan {0} yöneltici bilgisi yüklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:149
 msgid "Configuration saved successfully."
-msgstr "Düzenleşim başarıyla kaydedildi"
+msgstr "Ayarlar kaydedildi."
 
 #. Normal browsers send value, IE sends button label
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:34
@@ -2106,26 +2119,26 @@ msgstr "Düzenleşim başarıyla kaydedildi"
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:208
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:473
 msgid "Shutdown immediately"
-msgstr "Derhal kapat"
+msgstr "Hemen kapat"
 
 #. ctx.router().shutdown(Router.EXIT_HARD); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:39
 msgid "Cancel shutdown"
-msgstr "Kapanmayı iptal et"
+msgstr "Kapatmayı iptal et"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:40
 msgid "Cancel restart"
-msgstr "Yeniden başlamayı iptal et"
+msgstr "Yeniden başlatmayı iptal et"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:42
 msgid "Restart immediately"
-msgstr "Derhal yeniden baÅŸlat"
+msgstr "Hemen yeniden baÅŸlat"
 
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Yeniden baÅŸlat"
 
@@ -2135,16 +2148,16 @@ msgstr "Kapat"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:65
 msgid "Restart imminent"
-msgstr "Yeniden başlamak üzere"
+msgstr "Yeniden başlatılmak üzere"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:67
 msgid "Shutdown imminent"
-msgstr "Kapanmak üzere"
+msgstr "Kapatılmak üzere"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:71
 #, java-format
 msgid "Shutdown in {0}"
-msgstr "{0} içinde kapanıyor"
+msgstr "{0} içinde kapatılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:74
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:85
@@ -2156,7 +2169,7 @@ msgstr[0] ""
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:82
 #, java-format
 msgid "Restart in {0}"
-msgstr "{0} içinde yeniden başlıyor"
+msgstr "{0} içinde yeniden başlatılıyor"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:199
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:471
@@ -2213,12 +2226,12 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:232
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:519
 msgid "Run I2P on startup"
-msgstr "I2P'yi başlangıçta çalıştır"
+msgstr "Başlangıçta I2P çalıştırılsın"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:234
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:521
 msgid "Don't run I2P on startup"
-msgstr "I2P'yi başlangıçta çalıştırma"
+msgstr "Başlangıçta I2P çalıştırılmasın"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:236
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:545
@@ -2233,20 +2246,20 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:244
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:553
 msgid "View console on startup"
-msgstr "Başlangıçta sergeni görüntüle"
+msgstr "Başlangıçta konsol görüntülensin"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:246
 msgid "Console is to be shown on startup"
-msgstr "Başlangıçta sergen gösterilecek"
+msgstr "Başlangıçta konsol görüntülenecek"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:247
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:555
 msgid "Do not view console on startup"
-msgstr "Başlangıçta sergen görüntülenecek"
+msgstr "Başlangıçta konsol görüntülenmesin"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:249
 msgid "Console is not to be shown on startup"
-msgstr "Başlangıçta sergen görüntülenmeyecek"
+msgstr "Başlangıçta konsol görüntülenmeyecek"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:250
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:541
@@ -2259,7 +2272,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:261
 msgid "Service installed"
-msgstr "Hizmet Yüklendi"
+msgstr "Hizmet yüklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:263
 msgid "Warning: unable to install the service"
@@ -2271,7 +2284,7 @@ msgstr "Hizmet silindi"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:272
 msgid "Warning: unable to remove the service"
-msgstr "Uyarı: Hitmet silinemiyor"
+msgstr "Uyarı: Hitmet silinemedi"
 
 #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:116
 msgid "Stat filter and location updated successfully to"
@@ -2279,11 +2292,11 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:119
 msgid "Full statistics enabled"
-msgstr ""
+msgstr "Tam istatistikler etkinleÅŸtirildi"
 
 #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:121
 msgid "Full statistics disabled"
-msgstr ""
+msgstr "Tam istatistikler devre dışı bırakıldı"
 
 #: ../java/src/net/i2p/router/web/ConfigStatsHandler.java:125
 #, java-format
@@ -2294,35 +2307,35 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:24
 msgid "Save order"
-msgstr ""
+msgstr "Sıralamayı kaydedin"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:31
 msgid "Refresh interval changed"
-msgstr ""
+msgstr "Yenileme sıklığı değiştirildi"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:33
 #, java-format
 msgid "Refresh interval must be at least {0} seconds"
-msgstr ""
+msgstr "Yenileme sıklığı en az {0} saniye olmalıdır"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:35
 msgid "Refresh interval must be a number"
-msgstr ""
+msgstr "Yenileme sıklığı bir sayı olmalıdır"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:38
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:494
 msgid "Restore full default"
-msgstr ""
+msgstr "Tüm varsayılanları geri yükleyin"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:40
 msgid "Full summary bar default restored."
-msgstr ""
+msgstr "Tüm özet çubuğu varsayılanları geri yüklendi"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:41
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:45
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:137
 msgid "Summary bar will refresh shortly."
-msgstr ""
+msgstr "Özet çubuğu kısa süre içinde yenilenecek."
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:42
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:496
@@ -2337,34 +2350,34 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:83
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:131
 msgid "Order must be an integer"
-msgstr ""
+msgstr "Sıralama bir tamsayı olmalıdır"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:68
 msgid "No section selected"
-msgstr ""
+msgstr "Bir bölüm seçilmemiş"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:73
 msgid "No order entered"
-msgstr ""
+msgstr "Bir sıralama yazılmamış"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:129
 msgid "Moved"
-msgstr ""
+msgstr "Taşındı"
 
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:136
 msgid "Saved order of sections."
-msgstr ""
+msgstr "Bölüm sıralaması kaydedildi."
 
 #. the count isn't really correct anyway, since we don't check for actual
 #. changes
 #. addFormNotice("Updated settings for " + updated + " pools.");
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:130
 msgid "Updated settings for all pools."
-msgstr "Tüm havuzlar için ayarlar güncellendi."
+msgstr "Tüm havuzların ayarları güncellendi."
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:135
 msgid "Exploratory tunnel configuration saved successfully."
-msgstr "Araştırma tünel düzenleşimi başarıyla kaydedildi."
+msgstr "Araştırma tüneli ayarları kaydedildi."
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:137
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:73
@@ -2373,7 +2386,7 @@ msgstr "Araştırma tünel düzenleşimi başarıyla kaydedildi."
 msgid ""
 "Error saving the configuration (applied but not saved) - please see the "
 "error logs."
-msgstr "Düzenleşim kaydedilirken hata (uygulandı ancak kaydedilmedi) - lütfen hata kütüklerine bakınız."
+msgstr "Ayarlar kaydedilirken bir sorun çıktı (uygulandı ancak kaydedilmedi) - lütfen hata günlüklerine bakın."
 
 #. * dummies for translation
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:14
@@ -2412,7 +2425,7 @@ msgstr "BAŞARIM UYARISI - Ayarlar çok uzun tüneller içeriyor."
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:89
 msgid "PERFORMANCE WARNING - Settings include high tunnel quantities."
-msgstr "BAŞARIM UYARISI - Ayarlar yüksek tünel nicelikleri içeriyor."
+msgstr "BAŞARIM UYARISI - Ayarlar çok fazla sayıda tünel içeriyor."
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:97
 msgid "Length"
@@ -2421,7 +2434,7 @@ msgstr "Uzunluk"
 #. tunnel depth variance
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:114
 msgid "Randomization"
-msgstr "RasgeleleÅŸtirme"
+msgstr "RastgeleleÅŸtirme"
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:139
 msgid "Quantity"
@@ -2429,7 +2442,7 @@ msgstr "Nicelik"
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:157
 msgid "Backup quantity"
-msgstr "Yedek niceliÄŸi"
+msgstr "Yedekleme sayısı"
 
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:179
 msgid "Inbound options"
@@ -2443,11 +2456,11 @@ msgstr "Giden ayarları"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:471
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configui_jsp.java:477
 msgid "Add user"
-msgstr ""
+msgstr "Kullanıcı ekle"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:63
 msgid "Theme change saved."
-msgstr "Biçem değişikliği kaydedildi."
+msgstr "Tema deÄŸiÅŸikliÄŸi kaydedildi."
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:65
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:70
@@ -2456,20 +2469,20 @@ msgstr "Görmek için sayfayı yenileyin."
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:68
 msgid "Mobile console option saved."
-msgstr ""
+msgstr "Mobil konsol ayarları kaydedildi."
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:80
 msgid "No user name entered"
-msgstr ""
+msgstr "Bir kullanıcı adı yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:85
 msgid "No password entered"
-msgstr ""
+msgstr "Bir parola yazmalısınız"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:111
 #, java-format
 msgid "Removed user {0}"
-msgstr ""
+msgstr "{0} kullanıcısı silindi"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:25
 msgid "Set theme universally across all apps"
@@ -2481,15 +2494,15 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:76
 msgid "Arabic"
-msgstr ""
+msgstr "Arapça"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:77
 msgid "Czech"
-msgstr ""
+msgstr "Çekce"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:78
 msgid "Danish"
-msgstr ""
+msgstr "Danimarkaca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:79
 msgid "German"
@@ -2497,11 +2510,11 @@ msgstr "Almanca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:80
 msgid "Estonian"
-msgstr ""
+msgstr "Estonca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:81
 msgid "Greek"
-msgstr ""
+msgstr "Yunanca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:82
 msgid "English"
@@ -2513,7 +2526,7 @@ msgstr "Ä°spanyolca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:84
 msgid "Finnish"
-msgstr ""
+msgstr "Fince"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:85
 msgid "French"
@@ -2521,19 +2534,19 @@ msgstr "Fransızca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:86
 msgid "Hungarian"
-msgstr ""
+msgstr "Macarca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:87
 msgid "Italian"
-msgstr ""
+msgstr "Ä°talyanca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:88
 msgid "Japanese"
-msgstr ""
+msgstr "Japonca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:89
 msgid "Malagasy"
-msgstr ""
+msgstr "Malagazca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:90
 msgid "Dutch"
@@ -2541,11 +2554,11 @@ msgstr "Felemence"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:91
 msgid "Norwegian Bokmaal"
-msgstr ""
+msgstr "Norveç Bokmaal"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:92
 msgid "Polish"
-msgstr ""
+msgstr "Lehçe"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:93
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:94
@@ -2554,7 +2567,7 @@ msgstr "Portekizce"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:95
 msgid "Romanian"
-msgstr ""
+msgstr "Romence"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:96
 msgid "Russian"
@@ -2562,7 +2575,7 @@ msgstr "Rusça"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:97
 msgid "Slovak"
-msgstr ""
+msgstr "Slovakça"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:98
 msgid "Swedish"
@@ -2570,15 +2583,15 @@ msgstr "İsveççe"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:99
 msgid "Turkish"
-msgstr ""
+msgstr "Türkçe"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:100
 msgid "Ukrainian"
-msgstr ""
+msgstr "Ukraynaca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:101
 msgid "Vietnamese"
-msgstr ""
+msgstr "Vietnamca"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:102
 msgid "Chinese"
@@ -2586,221 +2599,221 @@ msgstr "Çince"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:166
 msgid "Add a user and password to enable."
-msgstr ""
+msgstr "Etkinleştirmek için bir kullanıcı adı ve parola yazın."
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:172
 msgid "User Name"
-msgstr ""
+msgstr "Kullanıcı Adı"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
-msgstr ""
+msgstr "Ekle"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:186
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:562
 msgid "Password"
-msgstr ""
+msgstr "Parola"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
-msgstr ""
+msgstr "Güncelleme ya da denetim sürüyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
-msgstr "Güncelleme mevcut, şimdi indirmeye çalışılıyor"
+msgstr "Güncelleme yayınlanmış, şimdi indirilmeye çalışılıyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
-msgstr "Güncelleme mevcut, indirmek için soldaki düğmeye tıklayın"
+msgstr "Güncelleme yayınlanmış, indirmek için soldaki düğmeye tıklayın"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
-msgstr "Güncelleme mevcut değil"
+msgstr "Yayınlanmış bir güncelleme yok"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
-msgstr ""
+msgstr "Haber İnternet adresi {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
-msgstr ""
+msgstr "iç"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
-msgstr ""
+msgstr "Vekil sunucu {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
-msgstr ""
+msgstr "Vekil sunucu kapısı {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
-msgstr ""
+msgstr "Yenileme sıklığı {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Asla"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
-msgstr ""
+msgstr "Güncelleme ilkesi {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
-msgstr "Güncelleme URLleri güncelleniyor."
+msgstr "Güncelleme İnternet adresleri güncelleniyor."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Güvenilen anahtarlar güncelleniyor."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
-msgstr ""
+msgstr "İmzalanmamış güncelleme adresi {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
-msgstr ""
+msgstr "İmzalanmış geliştirme yapımı adresi {0} olarak güncelleniyor"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
-msgstr "Hep"
+msgstr "Her"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Yalnızca bildir"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
-msgstr "Yalnızca indir ve onayla"
+msgstr "Yalnızca indir ve doğrula"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
-msgstr "Ä°ndir, onayla ve yeniden baÅŸlat"
+msgstr "Ä°ndir, doÄŸrula ve yeniden baÅŸlat"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:34
 msgid "Aborted startup"
-msgstr ""
+msgstr "Başlangıç durduruldu"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:35
 msgid "Enabled floodfill"
-msgstr ""
+msgstr "Floodfill etkinleÅŸtirildi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:36
 msgid "Changed IP"
-msgstr ""
+msgstr "IP deÄŸiÅŸtirildi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:37
 msgid "Changed port"
-msgstr ""
+msgstr "Kapı değiştirildi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:38
 msgid "Clock shifted"
-msgstr ""
+msgstr "Saat kaydırıldı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:39
 msgid "Crashed"
-msgstr ""
+msgstr "Çöktü"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:40
 msgid "Critical error"
-msgstr ""
+msgstr "Kritik hata"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:41
 msgid "Installed new version"
-msgstr ""
+msgstr "Yeni sürüm yüklendi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:42
 msgid "Install failed"
-msgstr ""
+msgstr "Yüklenemedi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:43
 msgid "Network error"
-msgstr ""
+msgstr "Ağ hatası"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:44
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:48
 msgid "New router identity"
-msgstr ""
+msgstr "Yeni yöneltici kimliği"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:45
 msgid "Disabled floodfill"
-msgstr ""
+msgstr "Floodfill devre dışı bırakıldı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:46
 msgid "Out of memory error"
-msgstr ""
+msgstr "Bellek taşma hatası"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:47
 msgid "Reachability change"
-msgstr ""
+msgstr "EriÅŸilebilirlik deÄŸiÅŸimi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:49
 msgid "Reseeded router"
-msgstr ""
+msgstr "Yöneltici yeniden tohumlandı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:50
 msgid "Soft restart"
-msgstr ""
+msgstr "YumuÅŸak yeniden baÅŸlatma"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:51
 msgid "Started router"
-msgstr ""
+msgstr "Yöneltici başlatıldı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:52
 msgid "Stopped router"
-msgstr ""
+msgstr "Yöneltici durduruldu"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:53
 msgid "Updated router"
-msgstr ""
+msgstr "Yöneltici güncellendi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:54
 msgid "Watchdog warning"
-msgstr ""
+msgstr "Bekçi köğeği uyarısı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:102
 msgid "Display Events"
-msgstr ""
+msgstr "Görüntülenecek Etkinlikler"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:106
 msgid "Events since"
-msgstr ""
+msgstr "Etkinlik başlangıcı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:111
 msgid "Event type"
-msgstr ""
+msgstr "Etkinlik tipi"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:117
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:148
 msgid "All events"
-msgstr ""
+msgstr "Tüm etkinlikler"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:122
 msgid "Filter events"
-msgstr ""
+msgstr "Etkinlikleri süzün"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:170
 msgid "No events found"
-msgstr ""
+msgstr "Bir etkinlik bulunamadı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:171
 #, java-format
 msgid "No events found in previous {0}"
-msgstr ""
+msgstr "Önceki {0} içinde bir etkinlik bulunamadı"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:174
 #, java-format
@@ -2813,17 +2826,17 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
-msgstr ""
+msgstr "Zaman"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:182
 msgid "Event"
-msgstr ""
+msgstr "Etkinlik"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:184
 msgid "Details"
-msgstr ""
+msgstr "Ayrıntılar"
 
 #: ../java/src/net/i2p/router/web/FormHandler.java:251
 msgid ""
@@ -2835,11 +2848,11 @@ msgstr "Geçersiz form gönderisi, olasılıkla tarayıcınızın \"geri\" veya
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
-msgstr ""
+msgstr "Sorun sürerse, tarayıcınızda çerezlerin etkinleştirilmiş olduğuna emin olun."
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:162
 msgid "Combined bandwidth graph"
-msgstr "BileÅŸik kuÅŸak geniÅŸliÄŸi grafiÄŸi"
+msgstr "BileÅŸik bant geniÅŸliÄŸi grafiÄŸi"
 
 #. e.g. "statname for 60m"
 #: ../java/src/net/i2p/router/web/GraphHelper.java:174
@@ -2860,61 +2873,61 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:253
 msgid "Larger"
-msgstr ""
+msgstr "Daha Büyük"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:259
 msgid "Smaller"
-msgstr ""
+msgstr "Daha Küçük"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:265
 msgid "Taller"
-msgstr ""
+msgstr "Daha Uzun"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:271
 msgid "Shorter"
-msgstr ""
+msgstr "Daha Kısa"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:277
 msgid "Wider"
-msgstr ""
+msgstr "Daha GeniÅŸ"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:283
 msgid "Narrower"
-msgstr ""
+msgstr "Daha Dar"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:290
 msgid "Larger interval"
-msgstr ""
+msgstr "Daha büyük sıklık"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:296
 msgid "Smaller interval"
-msgstr ""
+msgstr "Daha küçük sıklık"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:303
 msgid "Previous interval"
-msgstr ""
+msgstr "Önceki sıklık"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:314
 msgid "Next interval"
-msgstr ""
+msgstr "Sonraki sıklık"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:321
 #: ../java/src/net/i2p/router/web/GraphHelper.java:361
 msgid "Plot averages"
-msgstr "Grafik ortalamaları"
+msgstr "Ortalamalar çizilsin"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:321
 #: ../java/src/net/i2p/router/web/GraphHelper.java:362
 msgid "plot events"
-msgstr "çizelge olayları"
+msgstr "olaylar çizilsin"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:324
 msgid "All times are UTC."
-msgstr ""
+msgstr "Tüm zamanlar UTC saat dilimindedir."
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:356
 msgid "Configure Graph Display"
-msgstr "Grafik Gösterimini Ayarlayın"
+msgstr "Çizelge Görünümü Ayarları"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:356
 msgid "Select Stats"
@@ -2922,7 +2935,7 @@ msgstr "İstatistikleri Seçin"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:360
 msgid "Periods"
-msgstr "Dönemler"
+msgstr "Aralıklar"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:362
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:517
@@ -2931,7 +2944,7 @@ msgstr "ya da"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:363
 msgid "Image sizes"
-msgstr "resim boyları"
+msgstr "Görsel boyutları"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:363
 msgid "width"
@@ -2952,86 +2965,86 @@ msgstr "Yenileme gecikmesi"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:381
 msgid "Store graph data on disk?"
-msgstr ""
+msgstr "Çizelge verisi diskte saklansın"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:387
 msgid "Save settings and redraw graphs"
-msgstr ""
+msgstr "Ayarlar kaydedilip çizelgeleri yeniden oluşturulsun"
 
 #: ../java/src/net/i2p/router/web/GraphHelper.java:443
 msgid "Graph settings saved"
-msgstr "Grafik ayarları kaydedildi"
+msgstr "Çizelge ayarları kaydedildi"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Adres defteri"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "I2P hosts dosyasını buradan yönetin (I2P etki alanı çözümlemesi)"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:30
 msgid "Configure Bandwidth"
-msgstr ""
+msgstr "Bant Genişliği Ayarları"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:330
 msgid "I2P Bandwidth Configuration"
-msgstr ""
+msgstr "I2P Bant Genişliği Ayarları"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:31
 msgid "Configure Language"
-msgstr ""
+msgstr "Dil Ayarları"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:31
 msgid "Console Language Selection"
-msgstr ""
+msgstr "Konsol Dili Seçimi"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:32
 msgid "Customize Home Page"
-msgstr ""
+msgstr "Ana Sayfayı Özelleştirin"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:32
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:346
 msgid "I2P Home Page Configuration"
-msgstr ""
+msgstr "I2P Ana Sayfa Ayarları"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
-msgstr "Anonim webposta istemcisi"
+msgstr "Anonim web posta istemcisi"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
-msgstr ""
+msgstr "E-posta"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P Yöneltici Yardımı"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:35
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:161
 msgid "Router Console"
-msgstr ""
+msgstr "Yöneltici Konsolu"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "İçsel Anonim BitTorrent İstemcisi"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Torrentler"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
-msgstr ""
+msgstr "Yerel web sunucusu"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:41
 msgid "The Anoncoin project"
@@ -3039,26 +3052,26 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:42
 msgid "Bug Reports"
-msgstr ""
+msgstr "Hata Bildirimleri"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:42
 msgid "Bug tracker"
-msgstr ""
+msgstr "Hata izleyici"
 
 #. "colombo-bt.i2p" + S + _x("The Italian Bittorrent Resource") + S + "http
 #. ://colombo-bt.i2p/" + S + I + "colomboicon.png" + S +
 #: ../java/src/net/i2p/router/web/HomeHelper.java:44
 msgid "Dev Forum"
-msgstr ""
+msgstr "GeliÅŸtirici Forumu"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:44
 msgid "Development forum"
-msgstr ""
+msgstr "GeliÅŸtirici Forumu"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:45
 #: ../java/src/net/i2p/router/web/HomeHelper.java:60
 msgid "Bittorrent tracker"
-msgstr ""
+msgstr "Bittorrent izleyici"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:45
 msgid "diftracker"
@@ -3066,23 +3079,23 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:46
 msgid "I2P Applications"
-msgstr ""
+msgstr "I2P Uygulamaları"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:47
 msgid "FAQ"
-msgstr ""
+msgstr "SSS"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:47
 msgid "Frequently Asked Questions"
-msgstr ""
+msgstr "Sık Sorulan Sorular"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:48
 msgid "Community forum"
-msgstr ""
+msgstr "Topluluk forumu"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:48
 msgid "Forum"
-msgstr ""
+msgstr "Forum"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:49
 msgid ""
@@ -3157,33 +3170,33 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:61
 msgid "I2P home page"
-msgstr ""
+msgstr "I2P ana sayfası"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:61
 msgid "Project Website"
-msgstr ""
+msgstr "Proje Web Sitesi"
 
 #. "Salt" + S + "salt.i2p" + S + "http://salt.i2p/" + S + I +
 #. "salt_console.png" + S +
 #: ../java/src/net/i2p/router/web/HomeHelper.java:63
 msgid "I2P Network Statistics"
-msgstr ""
+msgstr "I2P AÄŸ Ä°statistikleri"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:64
 msgid "Technical Docs"
-msgstr ""
+msgstr "Teknik Belgeler"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:65
 msgid "Trac Wiki"
-msgstr ""
+msgstr "Trac Wiki"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:66
 msgid "Ugha's Wiki"
-msgstr ""
+msgstr "Ugha's Wiki"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:67
 msgid "Seedless and the Robert BitTorrent applications"
-msgstr ""
+msgstr "Seedless ve Robert BitTorrent uygulamaları"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:67
 msgid "Sponge's main site"
@@ -3191,106 +3204,106 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:108
 msgid "The HTTP proxy is not up"
-msgstr ""
+msgstr "HTTP vekil sunucusu çalışmıyor"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:110
 #, java-format
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
-msgstr ""
+msgstr "Ad"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
-msgstr ""
+msgstr "Ä°nternet Adresi"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
-msgstr ""
+msgstr "Toplam Görev İstatistikleri"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
-msgstr ""
+msgstr "Görev"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
-msgstr ""
+msgstr "Ortalama"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
-msgstr ""
+msgstr "En Büyük"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
-msgstr ""
+msgstr "En Küçük"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
-msgstr ""
+msgstr "Bekleyen"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
-msgstr ""
+msgstr "Özet"
 
 #: ../java/src/net/i2p/router/web/LogsHelper.java:49
 #: ../java/src/net/i2p/router/web/LogsHelper.java:103
@@ -3303,248 +3316,248 @@ msgstr "Dosya bulunamadı"
 
 #: ../java/src/net/i2p/router/web/LogsHelper.java:118
 msgid "No log messages"
-msgstr "Kütük iletisi yok"
+msgstr "Henüz bir günlük iletisi yok"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
-msgstr ""
+msgstr "Yerel Yöneltici"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
-msgstr ""
+msgstr "Yöneltici Tarama"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
-msgstr ""
+msgstr "Tüm Yönelticiler"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
-msgstr ""
+msgstr "Tam İstatistkler ile Tüm Yönelticiler"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
-msgstr ""
+msgstr "Kiralama Kümeleri"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
-msgstr "Yönlendirici"
+msgstr "Yöneltici"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "ağ veritabanında bulunamadı"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
-msgstr ""
+msgstr "Kiralama Kümesi"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "Yerel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "Yayınlanmamış"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "Hedef"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
-msgstr ""
+msgstr "Yerel adres defterine ekleyin"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "{0} içinde bitecek"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "{0} önce bitti"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "Geçit"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
-msgstr ""
+msgstr "Kiralama"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "Tünel"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
-msgstr "Başlatılmadı"
+msgstr "Başlatılmamış"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
-msgstr "Ağ Veritabanı Yönlendirici İstatistikleri"
+msgstr "Ağ Veritabanı Yöneltici İstatistikleri"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
-msgstr "Sayım"
+msgstr "Sayı"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
-msgstr "Taşımalar"
+msgstr "Aktarımlar"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "Ãœlke"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
-msgstr "Bilgimiz"
+msgstr "Bilgilerimiz"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
-msgstr "Tam girdi"
+msgstr "Tam kayıt"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "Gizli"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "Güncellenme"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} önce"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "Yayınlanmış"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
-msgstr ""
+msgstr "İmzalama Anahtarı"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "Adres(ler)"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
-msgstr "tutar"
+msgstr "maliyet"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
-msgstr "Gizli veya yeniden başlıyor"
+msgstr "Gizli ya da başlatılıyor"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "Tanıştırıcı destekli SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP ve SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "Tanıştırıcı destekli NTCP ve SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "Haberler en son {0} önce güncellendi."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "Haberler en son {0} önce denetlendi."
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
-msgstr ""
+msgstr "Haberleri gizle"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
-msgstr ""
+msgstr "Haberleri görüntüle"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:140
 msgid "Checking for plugin updates"
-msgstr ""
+msgstr "Uygulama ekleri için güncellemeler denetleniyor"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:155
 msgid "Plugin update check failed"
-msgstr ""
+msgstr "Uygulama eki güncellemeleri denetlenemedi"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:193
 #, java-format
 msgid "1 plugin updated"
 msgid_plural "{0} plugins updated"
-msgstr[0] ""
+msgstr[0] "{0} uygulama eki güncellendi"
 
 #: ../java/src/net/i2p/router/web/PluginStarter.java:195
 msgid "Plugin update check complete"
-msgstr ""
+msgstr "Uygulama eki güncelleme denetimi tamamlandı"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3568,19 +3581,19 @@ msgid "Groups (Caps)"
 msgstr "Gruplar (Kapasiteler)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "Hız"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "Kapasite"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "Tümleştirme"
 
@@ -3603,13 +3616,13 @@ msgid "Failing"
 msgstr "Başasırız"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "Tümleştirilmiş"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:168
 msgid "Unreachable"
-msgstr "EriÅŸlemiyor"
+msgstr "EriÅŸilemeyen"
 
 #. hide if < 10%
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:176
@@ -3630,7 +3643,7 @@ msgstr "Tümleştirme Değeri"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:203
 msgid "Last Heard About"
-msgstr "Son Duyulan"
+msgstr "Son Duyulma"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:204
 msgid "Last Heard From"
@@ -3680,95 +3693,95 @@ msgstr "1s Kayıp Oranı"
 msgid "1d Fail Rate"
 msgstr "1g Kayıp Oranı"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "EÅŸikler"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "hızlı eşler"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "yüksek kapasiteli eşler"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "iyi tümleştirilmiş eşler"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "profil yöneticisi tarafından belirlenen"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "gruplar"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "netDb yetenekleri, profillerin belirlenmesinde kullanılmaz"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "kapasiteler"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr "eş tek bir tünele bağlandığında, bir dakikalık aralıkta en yüksek akışı (saniyedeki bayt)"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "hız"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "kapasite"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "bir saat içinde bağlanmak istenebilecek tünel sayısı"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "yakın zamanda kendileri hakkında bilgi veren eş sayısı"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "tümleştirme"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "eş yasaklı mı, erişilemiyor mu ya da tünel sınamasından geçemedi mi"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "durum"
 
 #. 0
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:12
 msgid "Floodfill "
-msgstr ""
+msgstr "Floodfill "
 
 #. 2
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:14
 msgid "All"
-msgstr ""
+msgstr "Tümü"
 
 #: ../java/src/net/i2p/router/web/SearchHelper.java:74
 msgid "Select search engine"
-msgstr ""
+msgstr "Arama motorunu seçin"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:57
 msgid "GO"
-msgstr "Gidin"
+msgstr "Git"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:60
 msgid "Statistics gathered during this router's uptime"
-msgstr "Bu yönelticinin çalıştığı sürece toplanan istatistikler"
+msgstr "Bu yönelticinin çalıştığı sürede toplanan istatistikler"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:63
 msgid ""
@@ -3820,11 +3833,11 @@ msgstr "Ömür boyu ortalama sıklığı"
 #, java-format
 msgid "1 event"
 msgid_plural "{0} events"
-msgstr[0] ""
+msgstr[0] "{0} etkinlik"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:168
 msgid "rate"
-msgstr "oran"
+msgstr "hız"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:170
 msgid "Average"
@@ -3847,7 +3860,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:204
 msgid "No events"
-msgstr "Etkinlik yok"
+msgstr "Henüz bir etkinlik yok"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:209
 msgid "Average event count"
@@ -3855,292 +3868,292 @@ msgstr "Ortalama etkinlik sayısı"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:211
 msgid "Events in peak period"
-msgstr "En yoğun aralıktaki etkinlikler"
+msgstr "En yoğun dönemdeki etkinlikler"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:219
 msgid "Graph Data"
-msgstr "Grafik Verisi"
+msgstr "Çizelge Verisi"
 
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:222
 msgid "Graph Event Count"
-msgstr "Grafik Etkinliği Sayısı"
+msgstr "Çizelgedeki Etkinlik Sayısı"
 
 #. Display the strict average
 #: ../java/src/net/i2p/router/web/StatsGenerator.java:231
 msgid "Lifetime average value"
 msgstr "Ömür boyu ortalama değeri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P Yöneltici Yardımı ve SSS"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "Yardım ve SSS"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "İstemcilerin ve webapp (hizmetlerin) başlatılmasını ayarlayın. Çalışmayan hizmetleri el ile başlatın"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P Hizmetleri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "I2P Yöneltici Ayarları"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P Bilgileri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
-msgstr "Varolan tünel ve tünel yapım durumlarına bakın"
+msgstr "Varolan tünel ve tünel yapım durumlarını görüntüle"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
-msgstr "Tüm geçerli eş bağlantılarına bakın"
+msgstr "Tüm geçerli eş bağlantılarını görüntüle"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
-msgstr "Geçenlerdeki eş başarım profillerine bakın"
+msgstr "Yaınlardaki eş başarım profillerini görüntüle"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "Profiller"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
-msgstr "Tüm bilinen I2P yönelticilerinin listesi görüntülensin"
+msgstr "Tüm bilinen I2P yönelticilerinin listesini görüntüle"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "NetDB"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "Sağlık Durumu"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "Günlükler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
-msgstr "Yöneltici başarım çizelgesi"
+msgstr "Yöneltici başarımı çizelgesi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "Çizelgeler"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "Metin bazlı yöneltici başarım istatistikleri"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
-msgstr ""
+msgstr "Yerel Tüneller"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "Genel"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "Yerel Kimlik"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "Eşsiz I2P yöneltici kimliğiniz"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
-msgstr "asla kimseye söyelemeyin"
+msgstr "asla kimseye söylemeyin"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
-msgstr "bakın"
+msgstr "görüntüle"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "Bu oturumun çalışma süresi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "En iyi I2P başarımı için güvenlik duvarı ve yönelticinizi nasıl ayarlayacağınız hakkında yardım"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "Etkin"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "Hızlı"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "Yüksek kapasiteli"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Bilinen"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "Yöneltici bant genişliği kullanımını ayarlayın"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "Bant geniÅŸliÄŸi gelen/giden"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Toplam"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Kullanılan"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "KeÅŸif"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "Katılınan"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr "Paylaşım oranı"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "Yönelticinin iş kuyruğunda bulunanlar"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "Sıkışıklık"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "Ä°ÅŸ gecikmesi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Ä°leti gecikmesi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "Tünel gecikmesi"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "Arka günlük"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4151,7 +4164,7 @@ msgstr "HATA-İstemci yöneticisi I2CP hatası - günlüklere bakın"
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:150
 #, java-format
 msgid "ERR-Clock Skew of {0}"
-msgstr "HATA-Saat sapması {0}"
+msgstr "HATA-Saat Sapması {0}"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:170
 msgid "ERR-Unresolved TCP Address"
@@ -4167,7 +4180,7 @@ msgstr "HATA-SimetrikNAT"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:183
 msgid "WARN-Firewalled with Inbound TCP Enabled"
-msgstr "UYARI-Güvenlik duvarı engellemesi gelen TCP etkinleştirilmiş "
+msgstr "UYARI-Gelen TCP güvenlik duvarı engellemesi etkinleştirilmiş "
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:188
 msgid "WARN-Firewalled and Floodfill"
@@ -4193,7 +4206,7 @@ msgstr "HATA-UDP devre dışı ve Gelen TCP sunucu/kapı ayarlanmamış"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:211
 msgid "WARN-Firewalled with UDP Disabled"
-msgstr "UYARI-Güvenlik duvarı engellemesi UDP devre dışı"
+msgstr "UYARI-UDP ile güvenlik duvarı engellemesi devre dışı"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:437
 msgid "Add/remove/edit &amp; control your client and server tunnels"
@@ -4244,26 +4257,26 @@ msgstr "Tüneller yapılıyor"
 msgid "shared clients"
 msgstr "paylaşılmış istemciler"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "Yüklemek için yeniden başlatın"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
-msgstr "Kapatın düğmesine tıklayıp yüklemek için yeniden başlatın"
+msgstr "Yüklemek için kapatıp yeniden başlatın"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Sürüm {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4272,7 +4285,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4281,69 +4294,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "Güvenlik duvarı ayarlama yardımı"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
-msgstr "Tekrar düğümleme"
+msgstr "Yeniden tohumlama"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
-msgstr "{0} etkinlikleri"
+msgstr "{0} içindeki etkinlikler"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
-msgstr "{0} ortalamaları"
+msgstr "{0} içindeki ortalamalar"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "Aralık başına etkinlik"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "ort"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "en fazla"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "ÅŸimdi"
 
@@ -4351,7 +4380,7 @@ msgstr "ÅŸimdi"
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:62
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:415
 msgid "configure"
-msgstr "ayarlayın"
+msgstr "ayarla"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:60
 msgid "Client tunnels for"
@@ -4367,7 +4396,7 @@ msgstr "Katılınan tüneller"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:71
 msgid "Receive on"
-msgstr "Alındığı zaman"
+msgstr "Alınma zamanı"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:72
 msgid "Expiration"
@@ -4379,7 +4408,7 @@ msgstr "Gönderilme zamanı"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
 msgid "Rate"
-msgstr "Oran"
+msgstr "Hız"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:73
 msgid "Role"
@@ -4392,7 +4421,7 @@ msgstr "Kullanım"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:111
 msgid "grace period"
-msgstr "çalıştığı aralık"
+msgstr "deneme süresi"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:121
 msgid "Outbound Endpoint"
@@ -4440,11 +4469,11 @@ msgstr "Yapılıyor"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:211
 msgid "inbound"
-msgstr "gelen"
+msgstr "geliÅŸ"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:218
 msgid "outbound"
-msgstr "giden"
+msgstr "gidiÅŸ"
 
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:223
 msgid "No tunnels; waiting for the grace period to end."
@@ -4482,14 +4511,14 @@ msgstr "susidns"
 
 #: ../java/strings/Strings.java:17
 msgid "routerconsole"
-msgstr "yöneltici paneli"
+msgstr "yonelticipanosu"
 
 #. clients, taken from clients.config, for ConfigClientsHelper
 #. note that if the wording changes in clients.config, we have to
 #. keep the old string here as well for existing installs
 #: ../java/strings/Strings.java:22
 msgid "Web console"
-msgstr "Web paneli"
+msgstr "Web panosu"
 
 #: ../java/strings/Strings.java:23
 msgid "SAM application bridge"
@@ -4517,178 +4546,130 @@ msgstr "BOB uygulama köprüsü"
 
 #: ../java/strings/Strings.java:30
 msgid "Open Router Console in web browser at startup"
-msgstr "Yöneltici paneli başlangıçta web tarayıcı içinde açılsın"
+msgstr "Yöneltici panosu başlangıçta web tarayıcı içinde açılsın"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC vekil sunucusu"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsitesi"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P web sunucusu"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP Vekil Sunucusu"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eep Vekil Sunucusu"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "irc Vekil Sunucusu"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "klasik"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "koyu"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "açık"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "gece yarısı"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "Bant Genişliği Sınırlayıcı"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "Ä°stemci Ä°letileri"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Åžifreleme"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2PTüneli"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNet Havuzu"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
-msgstr "Ä°ÅŸ KuyruÄŸu"
+msgstr "Görev Kuyruğu"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "Ağ Veritabanı"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Akış"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Tetik"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Aktarım"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "sunucu"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "anahtar"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "kapı"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4832,7 +4813,7 @@ msgstr "Yenileme (s)"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/viewprofile_jsp.java:309
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/webmail_jsp.java:327
 msgid "Enable"
-msgstr "EtkinleÅŸtirin"
+msgstr "EtkinleÅŸtir"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:437
 msgid "Bandwidth limiter"
@@ -4857,7 +4838,7 @@ msgid "Share"
 msgstr "Paylaşım"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "NOT"
@@ -4898,7 +4879,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4937,27 +4918,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
@@ -5679,13 +5668,13 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:760
 msgid "ERR - Clock Skew"
-msgstr ""
+msgstr "HATA-Saat Sapması"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:762
 msgid ""
 "Your system's clock is skewed, which will make it difficult to participate "
 "in the network."
-msgstr ""
+msgstr "Sistem saatiniz sapmış olduğundan ağa katılmanız zorlaşıyor."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:764
 msgid "Correct your clock setting if this error persists."
@@ -5835,7 +5824,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:359
 msgid "I2P Reseeding Configuration"
-msgstr ""
+msgstr "I2P Yeniden Tohumlama Ayarları"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:475
 msgid ""
@@ -5860,7 +5849,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:483
 msgid "Manual Reseed from URL"
-msgstr ""
+msgstr "Ä°nternet Adresinden El Ä°le Yeniden Tohumlama"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:485
 msgid "Enter zip or su3 URL"
@@ -5882,7 +5871,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:495
 msgid "Manual Reseed from File"
-msgstr ""
+msgstr "Dosyadan El Ä°le Yeniden Tohumlama"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:497
 msgid "Select zip or su3 file"
@@ -5890,7 +5879,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:505
 msgid "Create Reseed File"
-msgstr ""
+msgstr "Yeniden Tohumla Dosyası Oluşturun"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:507
 msgid ""
@@ -5903,11 +5892,11 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:511
 msgid "Create reseed file"
-msgstr ""
+msgstr "Yeniden tohumlama dosyası oluştur"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:515
 msgid "Reseeding Configuration"
-msgstr ""
+msgstr "Yeniden Tohumlama Ayarları"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:519
 msgid ""
@@ -5917,7 +5906,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:521
 msgid "Reseed URL Selection"
-msgstr ""
+msgstr "Yeniden Tohumlama Adresi Seçimi"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:525
 msgid "Try SSL first then non-SSL"
@@ -5933,7 +5922,7 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:535
 msgid "Reseed URLs"
-msgstr ""
+msgstr "Yeniden Tohumlama Ä°nternet Adresleri"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:539
 msgid "Enable HTTP Proxy?"
diff --git a/apps/routerconsole/locale/messages_uk.po b/apps/routerconsole/locale/messages_uk.po
index fbe5a9f9852d737f62a112ce81cd2d4c71b6a0df..6784e6bcfa3ae373c28f86f665ceeb23c023f2a0 100644
--- a/apps/routerconsole/locale/messages_uk.po
+++ b/apps/routerconsole/locale/messages_uk.po
@@ -6,25 +6,28 @@
 # Translators:
 # naeto <a89393@rmqkr.net>, 2012
 # Anton Zub <azb.0x7dc@gmail.com>, 2014
-# Denis Blank <gribua@gmail.com>, 2011
-# Denis Blank <gribua@gmail.com>, 2011
-# Denis Blank <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011,2015
+# Denis Lysenko <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011
 # jonny_nut, 2014
 # jonny_nut, 2014
 # LinuxChata, 2014
 # LinuxChata, 2014
 # madjong <madjong@i2pmail.org>, 2015
+# madjong <madjong@i2pmail.org>, 2015
+# Maxym Mykhalchuk, 2015
 # naeto <a89393@rmqkr.net>, 2012
 # puxud <puxud@alivance.com>, 2014
 # puxud <puxud@alivance.com>, 2014
+# Maus <ru-ko@ukr.net>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-15 16:59+0000\n"
-"Last-Translator: madjong <madjong@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-08-07 16:30+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -42,8 +45,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -53,8 +56,8 @@ msgstr[2] "{0,number,####} мс"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -64,8 +67,8 @@ msgstr[2] "{0} с."
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -75,8 +78,8 @@ msgstr[2] "{0} хв."
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
@@ -84,15 +87,9 @@ msgstr[0] "{0} година"
 msgstr[1] "{0} години"
 msgstr[2] "{0} годин"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "немає даних"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
@@ -100,7 +97,23 @@ msgstr[0] "{0} день"
 msgstr[1] "{0} днів"
 msgstr[2] "{0} днів"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "{0} рік"
+msgstr[1] "{0} роки"
+msgstr[2] "{0} років"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "немає даних"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
@@ -108,7 +121,7 @@ msgstr[0] "{0,number,###} нс"
 msgstr[1] "{0,number,###} нс"
 msgstr[2] "{0,number,###} нс"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -152,7 +165,7 @@ msgstr "Кому"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "немає"
@@ -185,7 +198,7 @@ msgstr "IPv4: Вимкнено; IPv6: OK"
 
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:317
 msgid "IPv4: Symmetric NAT; IPv6: OK"
-msgstr ""
+msgstr "IPv4: Симетричний NAT; IPv6: ОК"
 
 #. * IPv4 symmetric NAT, IPv6 firewalled or disabled or no address
 #: ../../../router/java/src/net/i2p/router/CommSystemFacade.java:319
@@ -291,17 +304,17 @@ msgstr "Не приймаємо тунелі: Маршрутизатор зав
 msgid "Rejecting tunnels"
 msgstr "Не приймаємо тунелі"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
-msgstr ""
+msgstr "Проводиться початкове завантаження: отримуємо список маршрутизаторів з каталогів URL ({0} успішно, {1} помилок)."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Початкове завантаження"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
@@ -309,26 +322,26 @@ msgstr[0] "При початковому завантаженні отриман
 msgstr[1] "При початковому завантаженні отримано дані лише про {0} маршрутизатори."
 msgstr[2] "При початковому завантаженні отримано дані лише про {0} маршрутизаторів."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Спроба початкового запуску провалилась."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Дивіться {0} для допомоги."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "Сторінка конфігурації початкового завантаження"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Проводиться початкове завантаження: Завантажуються URL каталогів маршрутизаторів"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -368,7 +381,7 @@ msgstr "Відомі інтегровані (floodfill) піри"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:42
 msgid "Size of tunnel acceptor backlog"
-msgstr ""
+msgstr "Розмір тунелю черги завдань одержувача"
 
 #: ../../../router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java:502
 msgid "NetDb entry"
@@ -398,7 +411,7 @@ msgstr "Недосяжний через жодний транспортний п
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Статус"
@@ -413,7 +426,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} використовується тільки для вихідних з'єднань"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP не ввімкнено"
 
@@ -436,13 +449,13 @@ msgid ""
 msgstr "Для перевизначення цих лімітів додайте параметри i2np.ntcp.maxConnections=nnn і i2np.udp.maxConnections=nnn на сторінці розширених налаштувань."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Умовні позначення"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -457,7 +470,7 @@ msgstr "Віддалений пір, ідентифікований хешем 
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Напрямок"
 
@@ -484,13 +497,13 @@ msgstr "Час який пройшов після отримання / відп
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Неактивний"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Прийом/Передача"
@@ -505,16 +518,16 @@ msgstr "Час який пройшов після встановлення з'є
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Підключений"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
-msgstr "Нахил"
+msgstr "Відхилення"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 msgid "The difference between the peer's clock and your own"
@@ -546,7 +559,7 @@ msgstr "Поріг повільного старту"
 msgid "The round trip time in milliseconds"
 msgstr "Час між відправленням запиту й одержанням відповіді у мілісекундах"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -561,7 +574,7 @@ msgstr "Поточний максимальний розмір відправл
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "Передано"
 
@@ -571,7 +584,7 @@ msgstr "Загальна кількість пакетів, відправлен
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "Прийнято"
 
@@ -580,7 +593,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Загальна кількість пакетів, отриманих від вузла"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "Повт. передано"
 
@@ -589,7 +602,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Загальна кількість пакетів, повторно відправлених до вузла"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "Повт. прийнято"
 
@@ -628,8 +641,8 @@ msgstr "WAN PPP-з'єднання"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "Аптайм"
 
@@ -674,11 +687,11 @@ msgstr "Вимкнені UPnP пристрої"
 msgid ""
 "UPnP has been disabled; Do you have more than one UPnP Internet Gateway "
 "Device on your LAN ?"
-msgstr ""
+msgstr "UPnP був відключений; Чи є у вас більше ніж один UPnP Інтернет- шлюз  у вашій локальній мережі?"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:685
 msgid "UPnP has not found any UPnP-aware, compatible device on your LAN."
-msgstr ""
+msgstr "В вашій локальній мережі не знайдено жодного пристрою сумісного з UPnP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:693
 #, java-format
@@ -717,24 +730,24 @@ msgstr "{0} порт {1,number,#####} не пропущено через UPnP."
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/EstablishState.java:877
 #, java-format
 msgid "Excessive clock skew: {0}"
-msgstr ""
+msgstr "Надмірне відхилення годинника: {0}"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1344
 msgid "NTCP connections"
 msgstr "NTCP підключення"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Обмеження"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Упущення часу бездіяльности"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -747,19 +760,19 @@ msgid "Backlogged?"
 msgstr "Перевантажено?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "вхідно"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "вихідно"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
@@ -767,117 +780,117 @@ msgstr[0] "{0} пір"
 msgstr[1] "{0} пірів"
 msgstr[2] "{0} пірів"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "зв'язки UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Сортування по хешу вузла"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
-msgstr ""
+msgstr "Напрямок/Введення"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
-msgstr "Порядком за вхідню бездіяльність"
+msgstr "Сортувати за простоєм на вході"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
-msgstr "Порядком за вихідню бездіяльність"
+msgstr "Сортувати за простоєм на виході"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
-msgstr "Порядком за вхідну ставку"
+msgstr "Сортувати за швидкістю на вході"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
-msgstr "Порядком за вихідну ставку"
+msgstr "Сортувати за швидкістю на виході"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
-msgstr "Порядком за тривалість зв'язку"
+msgstr "Сортувати за тривалістю роботи"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
-msgstr "Порядком за нахилом такту"
+msgstr "Сортувати за відхиленням годинника"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
-msgstr ""
+msgstr "Сортувати за вікном затору"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
-msgstr ""
+msgstr "Сортувати за порогом повільного старту"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
-msgstr ""
+msgstr "Сортувати за часом проходження сигналу туди і назад"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
-msgstr ""
+msgstr "Сортувати за таймаутом ретрансляції"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
-msgstr ""
+msgstr "Сортувати за максимальною одиницею передачі на виході"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
-msgstr ""
+msgstr "Сортувати за кількістю переданих пакетів"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
-msgstr ""
+msgstr "Сортувати за кількістю отриманих пакетів"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
-msgstr ""
+msgstr "Сортувати за кількістю ретрансльованих пакетів"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
-msgstr ""
+msgstr "Сортувати за кількістю отриманих пакетів отриманих декілька разів"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Ми пропонуємо представити їх"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Вони пропонують представити нас"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
-msgstr ""
+msgstr "Давка"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 збій"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} збоїв"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
-msgstr "Забороненo"
+msgstr "Забанений"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "перевантажений"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:250
 msgid "Dropping tunnel requests: Too slow"
-msgstr "Відхиляю запити на тунелі: надто повільно працює"
+msgstr "Відхиляю запити на тунелі: занадто повільна обробка запитів"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:260
 msgid "Dropping tunnel requests: High job lag"
-msgstr ""
+msgstr "Відхиляю запити на тунелі: велике відставання обробки запитів"
 
 #. don't even bother, since we are so overloaded locally
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:451
@@ -886,15 +899,15 @@ msgstr "Відхиляю запити на тунелі: перевантаже
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:693
 msgid "Rejecting tunnels: Hidden mode"
-msgstr "Видхилення тунелів: прихований режим"
+msgstr "Не приймаємо тунелі: прихований режим"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:721
 msgid "Rejecting tunnels: Request overload"
-msgstr "Видхилення тунелів: забагато запитів"
+msgstr "Не приймаємо тунелі: забагато запитів"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:752
 msgid "Rejecting tunnels: Connection limit"
-msgstr "Відхиляю тунелі: обмеження кількості з’єднань"
+msgstr "Не приймаємо тунелі: досягнутий ліміт кількості з'єднань"
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:964
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:997
@@ -903,68 +916,68 @@ msgstr "Відхиляю запити на тунелі: високе наван
 
 #: ../../../router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java:1076
 msgid "Dropping tunnel requests: Queue time"
-msgstr ""
+msgstr "Відхиляю запити на тунелі: завеликий час у черзі"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Доступна нова версія плагіна {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Неможливо перевірити оновлення для плагіна {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Немає нової версії плагіна {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B передано"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "Неможливо встановити з {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Невдала передача з {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Оновлення завантажено"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Перезапуск..."
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Оновлення перевірено"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "з {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
-msgstr ""
+msgstr "Непідписане оновлення з {0} пошкоджено"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Неможливо скопіювати до {0}"
@@ -977,7 +990,7 @@ msgstr "Неможливо скопіювати до {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "Тунель для HTTP проксі повинен працювати"
@@ -991,20 +1004,20 @@ msgstr "Тунель для HTTP проксі повинен працювати"
 msgid "Updating"
 msgstr "Оновлення"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "Стандартні оновлення відключено. Перевірте пакетний менеджер."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "Немає прав на запис для директорії, де встановлено I2P."
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "Спосатку потрібно оновити до версії {0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "Необхідна Java версії {0} але встановлено Java версії {1}"
@@ -1194,16 +1207,20 @@ msgid "No new version found at {0}"
 msgstr "Нової версії на {0} не знайдено"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "Забанений назавжди"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "Тимчасовий бан завершується через {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
-msgstr ""
+msgstr "Забанений до перезапуску або до {0}"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "розбанити"
 
@@ -1304,18 +1321,18 @@ msgstr "розбанити"
 msgid "I2P Router Console"
 msgstr "Консоль роутера I2P"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "Помилка при оновленні конфігурації. Будь ласка, подивіться журнали помилок."
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "Налаштування збережено успішно"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1385,7 +1402,7 @@ msgstr "Зупинено плагін {0}"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:180
 #, java-format
 msgid "Stopped webapp {0}"
-msgstr ""
+msgstr "Зупинено веб-додаток {0}"
 
 #. label (IE)
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:209
@@ -1433,11 +1450,11 @@ msgstr "Конфігурацію плагіна збережено"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:202
 msgid "WebApp"
-msgstr "WebApp"
+msgstr "Web-додаток"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:387
 msgid "started"
-msgstr "почато"
+msgstr "запущено"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:389
 msgid "Failed to start"
@@ -1445,7 +1462,7 @@ msgstr "Помилка запуску"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:394
 msgid "Failed to find server."
-msgstr "Провал пошуку за сервер"
+msgstr "Не вдалося знайти сервер."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:400
 msgid "No plugin URL specified."
@@ -1468,7 +1485,7 @@ msgstr "Не вказано URL оновлення для {0}"
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:488
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:512
 msgid "Plugin or update download already in progress."
-msgstr ""
+msgstr "Плагін або оновлення вже завантажується."
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:493
 msgid "Updating all plugins"
@@ -1523,7 +1540,7 @@ msgid "Add Client"
 msgstr "Додати клієнт"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "Клієнт"
@@ -1555,9 +1572,9 @@ msgid "Plugin"
 msgstr "Модуль"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "Версія"
 
@@ -1579,7 +1596,8 @@ msgstr "Ліцензія"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "Веб-сайт"
 
@@ -1592,7 +1610,7 @@ msgid "Stop"
 msgstr "Зупинити"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "Перевірити оновлення"
@@ -1614,7 +1632,7 @@ msgstr "Видалити"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1624,7 +1642,7 @@ msgstr "Видалити обране"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1643,7 +1661,7 @@ msgstr "Відновити за замовчування"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1772,8 +1790,8 @@ msgstr "WARN"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "Видалити"
 
@@ -1783,7 +1801,7 @@ msgstr "Оберіть клас для додавання"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "Пропускна здатність"
 
@@ -1792,7 +1810,7 @@ msgid "Home Page"
 msgstr "Домашня сторінка"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "Мережа"
 
@@ -1848,9 +1866,9 @@ msgid "UI"
 msgstr "Інтерфейс"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "Тунелі"
 
@@ -1868,15 +1886,15 @@ msgid "Logging"
 msgstr "Логування"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "Піри"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "Статистика"
 
@@ -1888,8 +1906,8 @@ msgstr "Розширені"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2030,7 +2048,7 @@ msgstr "Забанити пір до наступного запуску"
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:23
 #, java-format
 msgid "Manually banned via {0}"
-msgstr ""
+msgstr "Заблоковані вручну задопомогою {0}"
 
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 msgid "banned until restart"
@@ -2151,7 +2169,7 @@ msgstr "Перезапустити негайно"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "Перезапустити"
 
@@ -2193,12 +2211,12 @@ msgstr "М’яка зупинка"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:203
 msgid "Graceful shutdown initiated"
-msgstr ""
+msgstr "Запущена м'яка зупинка"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:209
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:477
 msgid "Cancel graceful shutdown"
-msgstr ""
+msgstr "М'яка зупинка відмінена"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:211
 msgid "Graceful shutdown cancelled"
@@ -2211,12 +2229,12 @@ msgstr "М’який перезапуск"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:217
 msgid "Graceful restart requested"
-msgstr ""
+msgstr "Запитаний м'який перезапуск "
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:218
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configservice_jsp.java:493
 msgid "Hard restart"
-msgstr ""
+msgstr "Жорсткий перезапуск"
 
 #: ../java/src/net/i2p/router/web/ConfigServiceHandler.java:223
 msgid "Hard restart requested"
@@ -2625,8 +2643,8 @@ msgid "User Name"
 msgstr "Ім'я користувача"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "Додати"
 
@@ -2635,91 +2653,91 @@ msgstr "Додати"
 msgid "Password"
 msgstr "Пароль"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "Немає оновлень"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "Оновлення URL-адреси новин на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "внутрішній"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "Оновлення хосту проксі на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "Оновлення порта проксі на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "Оновлення частоти оновлення на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "Ніколи"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "Оновлення URL-адрес оновлення."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "Оновлення довірених ключів."
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "Оновлення URL-адреси непідписаних оновлень на {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "Кожний"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "Лише сповістити"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "Лише завантажити і перевірити"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "Завантажити, перевірити і перезапустити"
 
@@ -2845,7 +2863,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "Подій \"{0}\" не знайдено в попередньому {1}"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "Час"
 
@@ -2995,12 +3013,12 @@ msgid "Graph settings saved"
 msgstr "Налагтування графікі збережено"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "Адресна книга"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -3031,17 +3049,17 @@ msgid "I2P Home Page Configuration"
 msgstr "Налаштування домашньої сторінки I2P"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "Анонімний поштовий клієнт"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "Пошта"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "Допомога по I2P-роутеру"
 
@@ -3051,17 +3069,17 @@ msgid "Router Console"
 msgstr "Консоль роутера"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "Вбудований анонімник клієнт BitTorrent"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "Торренти"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "Локальний веб-сервер"
 
@@ -3230,97 +3248,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "Назва"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "У черзі"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "Середнє"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "Максимальне"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "Мінімальне"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "Загалом"
 
@@ -3338,223 +3356,223 @@ msgid "No log messages"
 msgstr ""
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "Локальний роутер"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "Всі роутери"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "Всі роутери з повною статистикою"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr ""
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "SSU з посередниками"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP Ñ– SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "NTCP і SSU з посередниками"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 тільки SSU, посередники"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, посередники"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, посередники"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 тільки NTCP, SSU, посередники"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr ""
 
@@ -3578,7 +3596,7 @@ msgstr[2] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3608,19 +3626,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr ""
 
@@ -3643,7 +3661,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr ""
 
@@ -3720,71 +3738,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr ""
 
@@ -3914,277 +3932,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "Відомі"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "Загалом"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "Використано"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "Затримка повідомлення"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "Новини &amp; оновлення"
 
@@ -4195,7 +4213,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:150
 #, java-format
 msgid "ERR-Clock Skew of {0}"
-msgstr ""
+msgstr "ПОМИЛКА-Відхилення годинника {0}"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:170
 msgid "ERR-Unresolved TCP Address"
@@ -4288,26 +4306,26 @@ msgstr "Побудова тунелів"
 msgid "shared clients"
 msgstr "колективні клієнти"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "Версія {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "Оновлення доступно"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "Завантажити оновлення {0}"
@@ -4316,7 +4334,7 @@ msgstr "Завантажити оновлення {0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4325,69 +4343,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "Завантажити підписане<br>оновлення {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
-msgid "avg"
-msgstr ""
-
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
-msgid "max"
+msgid "avg"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+msgid "max"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr ""
 
@@ -4564,175 +4598,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr ""
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC проксі"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "eepsite"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr ""
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP проксі"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr ""
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "класична"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "темна"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "світла"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr ""
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "Шифрування"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr ""
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "ntcp"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "Поток"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "Регуляція"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "Транспорт"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "udp"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "host"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "key"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "port"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4901,7 +4887,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4942,7 +4928,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4981,27 +4967,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
@@ -5723,13 +5717,13 @@ msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:760
 msgid "ERR - Clock Skew"
-msgstr ""
+msgstr "ПОМИЛКА - Відхилення годинника"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:762
 msgid ""
 "Your system's clock is skewed, which will make it difficult to participate "
 "in the network."
-msgstr ""
+msgstr "Ваш системний годинник занадто відхилився, вам буде важко приймати участь у мережі."
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:764
 msgid "Correct your clock setting if this error persists."
diff --git a/apps/routerconsole/locale/messages_vi.po b/apps/routerconsole/locale/messages_vi.po
index cefb28f185104b0b0be1af086bfdee2be0c0bd54..887594a8c57da9b23add604d0dd0dbac58b7f7ee 100644
--- a/apps/routerconsole/locale/messages_vi.po
+++ b/apps/routerconsole/locale/messages_vi.po
@@ -13,8 +13,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 01:31+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Vietnamese (http://www.transifex.com/projects/p/I2P/language/vi/)\n"
 "MIME-Version: 1.0\n"
@@ -34,8 +34,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -43,8 +43,8 @@ msgstr[0] "{0,number,####} phần nghìn giây"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -52,8 +52,8 @@ msgstr[0] "{0} giây"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
@@ -61,34 +61,42 @@ msgstr[0] "{0} phút"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "{0} giờ"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "chưa rõ"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "{0} ngày"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] ""
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "chưa rõ"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] ""
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -130,7 +138,7 @@ msgstr "Đến"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "không có"
@@ -269,42 +277,42 @@ msgstr "Từ chối đường ống riêng: Đang tắt"
 msgid "Rejecting tunnels"
 msgstr "Chấp nhận đường ống riêng"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "Giữ chỗ tải trở lại"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "Giữ chỗ tải lại chỉ có {0} định tuyến."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "Giữ chỗ tải trở lại thất bại."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "Xem {0} để được giúp đỡ."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "trang cấu hình giữ chỗ tải trở lại"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "Giữ chỗ tải trở lại: đang lấy phần đường dẫn giữ chỗ tải."
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -374,7 +382,7 @@ msgstr "Không thể kết bằng bất kỳ phương thức truyền tải nào
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "Trạng thái"
@@ -389,7 +397,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} đã được dùng cho các kết nối với bên ngoài"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP hiện bị vô hiệu hóa"
 
@@ -412,13 +420,13 @@ msgid ""
 msgstr "Để ghi đè thông tin lên các giới hạn này, thêm vào phần thiết lập i2np.ntcp.maxConnections=nnn và i2np.udp.maxConnections=nnn trong trang thiết lập nâng cao."
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "Định nghĩa"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -433,7 +441,7 @@ msgstr "Mạng ngang hàng từ xa, được xác định bởi phần hash củ
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "Thư mục"
 
@@ -460,13 +468,13 @@ msgstr "Khoảng thời gian kể từ khi một gói tin được nhận / gử
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "Trạng thái nghỉ"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "Vào/Ra"
@@ -481,14 +489,14 @@ msgstr "Đường nối này được bao lâu"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "Lên"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "Lệch"
 
@@ -522,7 +530,7 @@ msgstr "Ngưỡng giới hạn chậm"
 msgid "The round trip time in milliseconds"
 msgstr "Thời gian chu trình vòng tính bằng phần nghìn giây"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -537,7 +545,7 @@ msgstr "Kích thước tối đa của gói tin gửi đi hiện tại / kích t
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "TX"
 
@@ -547,7 +555,7 @@ msgstr "Tổng số gói tin được gửi đến mạng ngang hàng"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "RX"
 
@@ -556,7 +564,7 @@ msgid "The total number of packets received from the peer"
 msgstr "Tổng số gói tin nhận được từ mạng ngang hàng"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "TX Trùng"
 
@@ -565,7 +573,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "Tổng số gói tin được truyền tải lại đến mạng ngang hàng"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "RX Trùng"
 
@@ -604,8 +612,8 @@ msgstr "Kết nối WAN PPP"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr ""
 
@@ -700,17 +708,17 @@ msgid "NTCP connections"
 msgstr "Kết nối NTCP"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "Giới hạn"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "Hết thời hạn"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -723,125 +731,125 @@ msgid "Backlogged?"
 msgstr "Đăng nhập trở lại?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "Luồng dữ liệu vào"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "Luồng dữ liệu ra"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} mạng ngang hàng"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "Kết nối UDP"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "Sắp xếp theo mã hash của mạng ngang hàng"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "Hướng/Giới thiệu"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "Sắp xếp theo trạng thái nhàn rỗi của luồng tín hiệu vào"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "Sắp xếp theo trạng thái nhàn rỗi của luồng tín hiệu ra"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "Sắp xếp theo tỷ lệ của luồng tín hiệu vào"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "Sắp xếp theo tỷ lệ của luồng tín hiệu ra"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "Sắp xếp theo thời gian hoạt động kết nối"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "Sắp xếp theo đồng hồ nghiêng"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "Sắp xếp theo cửa sổ nghẽn"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "Sắp xếp theo ngưỡng giới hạn chậm"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "Sắp xếp theo thời gian hành trình vòng"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "Sắp xếp theo thời gian giới hạn truyền tải trở lại"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "Sắp xếp theo đơn vị truyền tải tối đa của luồng tín hiệu ra"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "Sắp xếp theo gói tin đã gửi"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "Sắp xếp theo gói tin đã nhận"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "Sắp xếp theo gói tin bị truyền tải trở lại"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "Sắp xếp theo gói tin nhận được nhiều hơn một lần"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "Chúng tôi cung cấp phần giới thiệu"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "Họ cung cấp phần giới thiệu với chúng ta"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr ""
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "1 thất bại"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "{0} thất bại"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "Bị Cấm"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "đăng nhập trở lại"
 
@@ -879,66 +887,66 @@ msgstr "Bỏ yêu cầu đường ống riêng: Độ tải quá cao"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "Bỏ yêu cầu đường ống riêng: Hàng đợi thời gian"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "Hiện đã phát hành tiện ích mới phiên bản {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "Cập nhật không thành công đối với tiện ích {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "Không có phiên bản mới dành cho tiện ích {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "{0}B đã truyền"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "Truyền thất bại từ phía {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "Đã tải về bản cập nhật"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "Đang khởi động lại"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "Đã xác nhận phần cập nhật"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "từ {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "Chưa xác nhận tập tin cập nhật từ {0} bị lỗi"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "Xảy ra lỗi khi sao chép sang {0}"
@@ -951,7 +959,7 @@ msgstr "Xảy ra lỗi khi sao chép sang {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr ""
@@ -965,20 +973,20 @@ msgstr ""
 msgid "Updating"
 msgstr "Đang cập nhật"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr ""
@@ -1168,16 +1176,20 @@ msgid "No new version found at {0}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr ""
 
@@ -1278,18 +1290,18 @@ msgstr ""
 msgid "I2P Router Console"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1497,7 +1509,7 @@ msgid "Add Client"
 msgstr "Add Client"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr ""
@@ -1529,9 +1541,9 @@ msgid "Plugin"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr ""
 
@@ -1553,7 +1565,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr ""
 
@@ -1566,7 +1579,7 @@ msgid "Stop"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr ""
@@ -1588,7 +1601,7 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1598,7 +1611,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1617,7 +1630,7 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1746,8 +1759,8 @@ msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr ""
 
@@ -1757,7 +1770,7 @@ msgstr ""
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr ""
 
@@ -1766,7 +1779,7 @@ msgid "Home Page"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr ""
 
@@ -1822,9 +1835,9 @@ msgid "UI"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr ""
 
@@ -1842,15 +1855,15 @@ msgid "Logging"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr ""
 
@@ -1862,8 +1875,8 @@ msgstr ""
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2123,7 +2136,7 @@ msgstr ""
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr ""
 
@@ -2591,8 +2604,8 @@ msgid "User Name"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr ""
 
@@ -2601,91 +2614,91 @@ msgstr ""
 msgid "Password"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr ""
 
@@ -2811,7 +2824,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr ""
 
@@ -2961,12 +2974,12 @@ msgid "Graph settings saved"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr ""
 
@@ -2997,17 +3010,17 @@ msgid "I2P Home Page Configuration"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr ""
 
@@ -3017,17 +3030,17 @@ msgid "Router Console"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr ""
 
@@ -3196,97 +3209,97 @@ msgstr ""
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr ""
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr ""
 
@@ -3304,223 +3317,223 @@ msgid "No log messages"
 msgstr ""
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr ""
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr ""
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr ""
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr ""
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr ""
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr ""
 
@@ -3542,7 +3555,7 @@ msgstr[0] ""
 msgid "Plugin update check complete"
 msgstr ""
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3566,19 +3579,19 @@ msgid "Groups (Caps)"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr ""
 
@@ -3601,7 +3614,7 @@ msgid "Failing"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr ""
 
@@ -3678,71 +3691,71 @@ msgstr ""
 msgid "1d Fail Rate"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr ""
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr ""
 
@@ -3868,277 +3881,277 @@ msgstr ""
 msgid "Lifetime average value"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr ""
 
@@ -4242,26 +4255,26 @@ msgstr ""
 msgid "shared clients"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr ""
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr ""
@@ -4270,7 +4283,7 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr ""
@@ -4279,69 +4292,85 @@ msgstr ""
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr ""
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
-msgid "avg"
-msgstr ""
-
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
-msgid "max"
+msgid "avg"
 msgstr ""
 
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
 #: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+msgid "max"
+msgstr ""
+
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr ""
 
@@ -4518,175 +4547,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr ""
 
 #: ../java/strings/Strings.java:37
-msgid "IRC proxy"
+msgid "shared clients (DSA)"
 msgstr ""
 
 #: ../java/strings/Strings.java:38
-msgid "eepsite"
+msgid "IRC proxy"
 msgstr ""
 
 #: ../java/strings/Strings.java:39
-msgid "I2P webserver"
+msgid "eepsite"
 msgstr ""
 
 #: ../java/strings/Strings.java:40
+msgid "I2P webserver"
+msgstr ""
+
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr ""
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr ""
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr ""
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr ""
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr ""
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr ""
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr ""
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr ""
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr ""
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr ""
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr ""
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr ""
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr ""
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr ""
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr ""
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr ""
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr ""
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr ""
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr ""
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr ""
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr ""
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr ""
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr ""
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr ""
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr ""
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr ""
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr ""
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr ""
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr ""
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr ""
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr ""
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr ""
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr ""
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr ""
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr ""
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr ""
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr ""
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr ""
@@ -4855,7 +4836,7 @@ msgid "Share"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr ""
@@ -4896,7 +4877,7 @@ msgid "Advanced network configuration page"
 msgstr ""
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4935,27 +4916,35 @@ msgid ""
 "computer's resources."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr ""
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr ""
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr ""
diff --git a/apps/routerconsole/locale/messages_zh.po b/apps/routerconsole/locale/messages_zh.po
index 606b1b325e63bfd43db46e7aa6259d612c25a64b..c875ae4a5f5d3aaf810b13bf9d9725fe13ff8b24 100644
--- a/apps/routerconsole/locale/messages_zh.po
+++ b/apps/routerconsole/locale/messages_zh.po
@@ -21,8 +21,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 13:50+0000\n"
+"POT-Creation-Date: 2015-07-17 01:05+0000\n"
+"PO-Revision-Date: 2015-07-17 02:49+0000\n"
 "Last-Translator: YF <yfdyh000@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
@@ -42,8 +42,8 @@ msgstr ""
 #. locale.
 #. If you want the digit separator in your locale, translate as {0}.
 #. alternates: msec, msecs
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1527
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1577
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1529
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1582
 #, java-format
 msgid "1 ms"
 msgid_plural "{0,number,####} ms"
@@ -51,8 +51,8 @@ msgstr[0] "{0,number,####} ms"
 
 #. seconds
 #. alternates: secs, sec. 'seconds' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1531
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1579
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1533
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1584
 #, java-format
 msgid "1 sec"
 msgid_plural "{0} sec"
@@ -60,43 +60,51 @@ msgstr[0] "{0} 秒"
 
 #. minutes
 #. alternates: mins, min. 'minutes' is probably too long.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1535
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1581
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1537
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1586
 #, java-format
 msgid "1 min"
 msgid_plural "{0} min"
-msgstr[0] "{0} 分钟"
+msgstr[0] "{0} 分"
 
 #. hours
 #. alternates: hrs, hr., hrs.
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1539
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1583
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1588
 #, java-format
 msgid "1 hour"
 msgid_plural "{0} hours"
 msgstr[0] "{0} 小时"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1541
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1585
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:343
-msgid "n/a"
-msgstr "不可用"
-
 #. days
 #: ../../../core/java/src/net/i2p/data/DataHelper.java:1544
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1587
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1591
 #, java-format
 msgid "1 day"
 msgid_plural "{0} days"
 msgstr[0] "{0} 天"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1573
+#. years
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1547
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1594
+#, java-format
+msgid "1 year"
+msgid_plural "{0} years"
+msgstr[0] "{0} å¹´"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1549
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1596
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:334
+msgid "n/a"
+msgstr "不可用"
+
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1578
 #, java-format
 msgid "1 ns"
 msgid_plural "{0,number,###} ns"
 msgstr[0] "{0,number,###} ns"
 
-#: ../../../core/java/src/net/i2p/data/DataHelper.java:1575
+#: ../../../core/java/src/net/i2p/data/DataHelper.java:1580
 #, java-format
 msgid "1 μs"
 msgid_plural "{0,number,###} μs"
@@ -138,7 +146,7 @@ msgstr "至"
 
 #: ../../../router/java/src/net/i2p/router/Blocklist.java:997
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:48
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:652
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:478
 msgid "none"
 msgstr "æ— "
@@ -277,42 +285,42 @@ msgstr "拒绝共享:准备退出"
 msgid "Rejecting tunnels"
 msgstr "拒绝参与共享隧道"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:210
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:212
 #, java-format
 msgid "Reseeding: got router info from file ({0} successful, {1} errors)."
 msgstr "补种:从文件获得路由信息({0} 个路由信息,{1} 个错误)。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:282
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:284
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:28
 msgid "Reseeding"
 msgstr "网络引导"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:305
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:307
 #, java-format
 msgid "Reseed fetched only 1 router."
 msgid_plural "Reseed fetched only {0} routers."
 msgstr[0] "网络引导只发现了 {0} 个节点。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:314
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
 msgid "Reseed failed."
 msgstr "网络引导失败。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:315
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:317
 #, java-format
 msgid "See {0} for help."
 msgstr "帮助参见 {0}。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:316
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:318
 msgid "reseed configuration page"
 msgstr "网络引导设置页面"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:564
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:695
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:566
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:697
 msgid "Reseeding: fetching seed URL."
 msgstr "正在补种:从网址补种。"
 
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:621
-#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:731
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:623
+#: ../../../router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java:733
 #, java-format
 msgid ""
 "Reseeding: fetching router info from seed URL ({0} successful, {1} errors)."
@@ -348,7 +356,7 @@ msgstr "已知快速节点"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:41
 msgid "Known integrated (floodfill) peers"
-msgstr "已知集成的 (floodfill) 节点"
+msgstr "已知整合的 (floodfill) 节点"
 
 #: ../../../router/java/src/net/i2p/router/tasks/CoalesceStatsEvent.java:42
 msgid "Size of tunnel acceptor backlog"
@@ -382,7 +390,7 @@ msgstr "各传输方式均不可达"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:603
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:621
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1348
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2452
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2469
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:92
 msgid "Status"
 msgstr "状态"
@@ -397,7 +405,7 @@ msgid "{0} is used for outbound connections only"
 msgstr "{0} 仅被用作出站连接"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:711
-#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:278
+#: ../../../router/java/src/net/i2p/router/transport/UPnPManager.java:283
 msgid "UPnP is not enabled"
 msgstr "UPnP 未启用"
 
@@ -411,7 +419,7 @@ msgstr "帮助"
 msgid ""
 "Your transport connection limits are automatically set based on your "
 "configured bandwidth."
-msgstr "最大传输连接数会根据您的带宽设置自动调整。"
+msgstr "您的传输连接数限制会根据您的带宽设置自动调整。"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:723
 msgid ""
@@ -420,13 +428,13 @@ msgid ""
 msgstr "要自定义连接数限制,您可以在高级配置页面中添加参数 i2np.ntcp.maxConnections=nnn 及 i2np.udp.maxConnections=nnn 。"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:725
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:275
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:266
 msgid "Definitions"
 msgstr "定义"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:726
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1352
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2456
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:33
 #: ../java/src/net/i2p/router/web/ConfigPeerHandler.java:35
@@ -441,7 +449,7 @@ msgstr "以路由Hash区分的远程节点"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:727
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1353
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Dir"
 msgstr "类别"
 
@@ -468,20 +476,20 @@ msgstr "最近一次数据传输距现在的时间"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:735
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1355
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2462
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2479
 msgid "Idle"
 msgstr "空闲"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1356
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2484
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "In/Out"
 msgstr "入/出"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:736
 msgid "The smoothed inbound / outbound transfer rate (KBytes per second)"
-msgstr "进/出站平滑传输率(Kbyte/s)"
+msgstr "进/出站平滑传输率(KByte/s)"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 msgid "How long ago this connection was established"
@@ -489,14 +497,14 @@ msgstr "此连接已建立多久"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:737
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1357
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2472
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:928
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2489
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:935
 msgid "Up"
 msgstr "寿命"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:738
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1358
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2474
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
 msgid "Skew"
 msgstr "时滞"
 
@@ -530,7 +538,7 @@ msgstr "慢启动门槛"
 msgid "The round trip time in milliseconds"
 msgstr "往返时间(毫秒)"
 
-#. "<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The
+#. "<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The
 #. standard deviation of the round trip time in
 #. milliseconds")).append("<br>\n" +
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:746
@@ -545,7 +553,7 @@ msgstr "当前发送数据包的最大大小/预计接收数据包的最大大
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:748
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1359
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2491
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2508
 msgid "TX"
 msgstr "发包"
 
@@ -555,7 +563,7 @@ msgstr "向节点发送的数据包总量"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:749
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1360
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2493
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2510
 msgid "RX"
 msgstr "接包"
 
@@ -564,7 +572,7 @@ msgid "The total number of packets received from the peer"
 msgstr "从节点接收到数据包总量"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:750
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2496
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2513
 msgid "Dup TX"
 msgstr "重发包"
 
@@ -573,7 +581,7 @@ msgid "The total number of packets retransmitted to the peer"
 msgstr "向节点重发送的数据包总量"
 
 #: ../../../router/java/src/net/i2p/router/transport/TransportManager.java:751
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2498
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
 msgid "Dup RX"
 msgstr "重接包"
 
@@ -612,8 +620,8 @@ msgstr "WAN PPP连接"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:583
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:610
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:283
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:309
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:288
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:314
 msgid "Uptime"
 msgstr "运行时间"
 
@@ -676,7 +684,7 @@ msgstr "无法获取当前的外部IP地址。"
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:699
 #, java-format
 msgid "UPnP reports the maximum downstream bit rate is {0}bits/sec"
-msgstr "UPnP 报告的最大下行比特率为 {0}bit/s"
+msgstr "UPnP 报告的最大下行比特率为 {0}bit/秒"
 
 #: ../../../router/java/src/net/i2p/router/transport/UPnP.java:701
 #, java-format
@@ -708,17 +716,17 @@ msgid "NTCP connections"
 msgstr "NTCP连接"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1345
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2449
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2466
 msgid "Limit"
 msgstr "限制"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1346
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2450
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2467
 msgid "Timeout"
 msgstr "超时"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1354
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2461
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
 msgid "IPv6"
 msgstr "IPv6"
 
@@ -731,125 +739,125 @@ msgid "Backlogged?"
 msgstr "积压?"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1375
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2515
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2532
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Inbound"
 msgstr "入站"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1377
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2517
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2534
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHelper.java:91
 msgid "Outbound"
 msgstr "出站"
 
 #: ../../../router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java:1432
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2682
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2699
 #, java-format
 msgid "{0} peer"
 msgid_plural "{0} peers"
 msgstr[0] "{0} 个节点"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2448
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
 msgid "UDP connections"
 msgstr "UDP连接"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2458
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
 msgid "Sort by peer hash"
 msgstr "按节点Hash"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2460
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2477
 msgid "Direction/Introduction"
 msgstr "按方向"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2463
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
 msgid "Sort by idle inbound"
 msgstr "按出站空闲"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2465
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2482
 msgid "Sort by idle outbound"
 msgstr "按入站空闲"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2468
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2485
 msgid "Sort by inbound rate"
 msgstr "按入站速度"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2470
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
 msgid "Sort by outbound rate"
 msgstr "按出站速度"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2473
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
 msgid "Sort by connection uptime"
 msgstr "按连接时间"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2475
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
 msgid "Sort by clock skew"
 msgstr "按时滞"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2478
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2495
 msgid "Sort by congestion window"
 msgstr "按拥塞窗口"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2480
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
 msgid "Sort by slow start threshold"
 msgstr "按慢启动门槛"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2483
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2500
 msgid "Sort by round trip time"
 msgstr "按往返时间"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2487
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2504
 msgid "Sort by retransmission timeout"
 msgstr "按重传输超时时间"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2490
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2507
 msgid "Sort by outbound maximum transmit unit"
 msgstr "按出站最大传输单元"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2492
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2509
 msgid "Sort by packets sent"
 msgstr "按已发送数据包"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2494
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2511
 msgid "Sort by packets received"
 msgstr "按已接收数据包"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2497
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2514
 msgid "Sort by packets retransmitted"
 msgstr "按重传数据包"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2499
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2516
 msgid "Sort by packets received more than once"
 msgstr "按重复数据包"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2519
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2536
 msgid "We offered to introduce them"
 msgstr "我们提供给它们"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2521
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2538
 msgid "They offered to introduce us"
 msgstr "它们提供给我们"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2525
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2542
 msgid "Choked"
 msgstr "阻塞"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2533
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2550
 msgid "1 fail"
 msgstr "失败 1 次"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2535
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2552
 #, java-format
 msgid "{0} fails"
 msgstr "失败 {0} 次"
 
 #. 1
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2541
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2558
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:166
 #: ../java/src/net/i2p/router/web/ProfilesHelper.java:13
 msgid "Banned"
 msgstr "已封锁"
 
-#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2600
+#: ../../../router/java/src/net/i2p/router/transport/udp/UDPTransport.java:2617
 msgid "backlogged"
 msgstr "积压"
 
@@ -887,66 +895,66 @@ msgstr "忽略共享请求:高负载"
 msgid "Dropping tunnel requests: Queue time"
 msgstr "忽略共享请求:队列积压"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:858
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:884
 #, java-format
 msgid "New plugin version {0} is available"
 msgstr "新插件版本 {0} 可用"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:938
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:964
 #, java-format
 msgid "Update check failed for plugin {0}"
 msgstr "{0} 插件更新检查失败"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:942
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:968
 #, java-format
 msgid "No new version is available for plugin {0}"
 msgstr "插件 {0} 没有更新可用"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:966
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:992
 #, java-format
 msgid "{0}B transferred"
 msgstr "已传输 {0}B"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1025
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1051
 #, java-format
 msgid "Install failed from {0}"
 msgstr "从 {0} 安装失败"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1027
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1053
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:298
 #, java-format
 msgid "Transfer failed from {0}"
 msgstr "传输 {0} 的数据失败"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1302
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1366
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:713
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1328
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1392
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
 msgid "Update downloaded"
 msgstr "更新已下载"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1390
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1416
 msgid "Restarting"
 msgstr "正在重启"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1346
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1372
 msgid "Update verified"
 msgstr "更新已验证"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1355
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1381
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:189
 #: ../java/src/net/i2p/router/update/PluginUpdateRunner.java:306
 #, java-format
 msgid "from {0}"
 msgstr "自 {0}"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1370
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1396
 #, java-format
 msgid "Unsigned update file from {0} is corrupt"
 msgstr "来自 {0} 的未签名更新包已损坏"
 
-#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1399
+#: ../java/src/net/i2p/router/update/ConsoleUpdateManager.java:1425
 #, java-format
 msgid "Failed copy to {0}"
 msgstr "无法复制到 {0}"
@@ -959,7 +967,7 @@ msgstr "无法复制到 {0}"
 #: ../java/src/net/i2p/router/update/UnsignedUpdateRunner.java:41
 #: ../java/src/net/i2p/router/update/UpdateRunner.java:155
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:573
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:175
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:177
 #: ../java/src/net/i2p/router/web/PluginStarter.java:157
 msgid "HTTP client proxy tunnel must be running"
 msgstr "HTTP 客户端代理隧道必须运行"
@@ -973,20 +981,20 @@ msgstr "HTTP 客户端代理隧道必须运行"
 msgid "Updating"
 msgstr "正在更新"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:172
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:209
 msgid "In-network updates disabled. Check package manager."
 msgstr "网络更新被禁用。请检查软件包管理。"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:178
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:215
 msgid "No write permission for I2P install directory."
 msgstr "没有对I2P安装目录的写权限。"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:186
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:223
 #, java-format
 msgid "You must first update to version {0}"
 msgstr "你必须先更新到版本{0}"
 
-#: ../java/src/net/i2p/router/update/NewsFetcher.java:196
+#: ../java/src/net/i2p/router/update/NewsFetcher.java:233
 #, java-format
 msgid "Requires Java version {0} but installed Java version is {1}"
 msgstr "需要版本为 {0} 的 Java,但你安装的版本是 {1}"
@@ -1176,16 +1184,20 @@ msgid "No new version found at {0}"
 msgstr " {0} 上未发现新版本"
 
 #: ../java/src/net/i2p/router/web/BanlistRenderer.java:65
+msgid "Permanently banned"
+msgstr "已永久封禁"
+
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
 #, java-format
 msgid "Temporary ban expiring in {0}"
 msgstr "临时封锁{0}后解除"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:67
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:69
 #, java-format
 msgid "Banned until restart or in {0}"
 msgstr "封锁直到重启或{0}后"
 
-#: ../java/src/net/i2p/router/web/BanlistRenderer.java:79
+#: ../java/src/net/i2p/router/web/BanlistRenderer.java:82
 msgid "unban now"
 msgstr "立即解封"
 
@@ -1286,18 +1298,18 @@ msgstr "立即解封"
 msgid "I2P Router Console"
 msgstr "I2P 路由控制台"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:61
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:62
 msgid "Error updating the configuration - please see the error logs"
 msgstr "更新配置出错 - 请查看错误日志"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:71
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:87
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:72
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:96
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:389
 msgid "Configuration saved successfully"
 msgstr "设置保存成功"
 
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:73
-#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:89
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:74
+#: ../java/src/net/i2p/router/web/ConfigAdvancedHandler.java:98
 #: ../java/src/net/i2p/router/web/ConfigClientsHandler.java:622
 #: ../java/src/net/i2p/router/web/ConfigNetHandler.java:391
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:151
@@ -1505,7 +1517,7 @@ msgid "Add Client"
 msgstr "添加客户端"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:116
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:498
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:503
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:452
 msgid "Client"
 msgstr "客户"
@@ -1537,9 +1549,9 @@ msgid "Plugin"
 msgstr "插件"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:248
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:273
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:299
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:278
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:304
 msgid "Version"
 msgstr "版本"
 
@@ -1561,7 +1573,8 @@ msgstr "许可证"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:294
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:152
+#: ../java/src/net/i2p/router/web/HomeHelper.java:171
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:157
 msgid "Website"
 msgstr "网站"
 
@@ -1574,7 +1587,7 @@ msgid "Stop"
 msgstr "停止"
 
 #: ../java/src/net/i2p/router/web/ConfigClientsHelper.java:362
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:158
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:160
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:463
 msgid "Check for updates"
 msgstr "检查更新"
@@ -1596,7 +1609,7 @@ msgstr "删除"
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:21
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigUIHandler.java:19
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:970
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:496
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:516
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:532
@@ -1606,7 +1619,7 @@ msgstr "删除选中项目"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:22
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:23
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:967
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:989
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:494
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:502
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:514
@@ -1625,7 +1638,7 @@ msgstr "恢复默认值"
 
 #: ../java/src/net/i2p/router/web/ConfigHomeHandler.java:24
 #: ../java/src/net/i2p/router/web/ConfigSummaryHandler.java:26
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:200
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:202
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:482
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:486
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configupdate_jsp.java:542
@@ -1754,8 +1767,8 @@ msgstr "警告"
 
 #: ../java/src/net/i2p/router/web/ConfigLoggingHelper.java:85
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:170
-#: ../java/src/net/i2p/router/web/HomeHelper.java:199
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:902
+#: ../java/src/net/i2p/router/web/HomeHelper.java:208
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
 msgid "Remove"
 msgstr "删除"
 
@@ -1765,7 +1778,7 @@ msgstr "选择要添加的类"
 
 #. stat groups for stats.jsp
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/strings/Strings.java:57
+#: ../java/strings/Strings.java:58
 msgid "Bandwidth"
 msgstr "带宽"
 
@@ -1774,7 +1787,7 @@ msgid "Home Page"
 msgstr "主页"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:25
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:323
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:328
 msgid "Network"
 msgstr "网络"
 
@@ -1830,9 +1843,9 @@ msgid "UI"
 msgstr "界面"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:26
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:174
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:481
-#: ../java/strings/Strings.java:72
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:179
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/strings/Strings.java:73
 msgid "Tunnels"
 msgstr "隧道"
 
@@ -1850,15 +1863,15 @@ msgid "Logging"
 msgstr "日志"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:180
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:367
-#: ../java/strings/Strings.java:67
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:185
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:372
+#: ../java/strings/Strings.java:68
 msgid "Peers"
 msgstr "节点"
 
 #: ../java/src/net/i2p/router/web/ConfigNavHelper.java:27
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:455
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:218
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:223
 msgid "Stats"
 msgstr "统计"
 
@@ -1870,8 +1883,8 @@ msgstr "高级"
 #: ../java/src/net/i2p/router/web/ConfigReseedHandler.java:97
 #: ../java/src/net/i2p/router/web/ConfigTunnelsHandler.java:30
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:499
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:459
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:479
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:471
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:491
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configlogging_jsp.java:479
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:641
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configreseed_jsp.java:591
@@ -2131,7 +2144,7 @@ msgstr "立刻重启"
 #. ctx.router().shutdown(Router.EXIT_HARD_RESTART); // never returns
 #. give the UI time to respond
 #: ../java/src/net/i2p/router/web/ConfigRestartBean.java:47
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:200
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:201
 msgid "Restart"
 msgstr "重 启"
 
@@ -2599,8 +2612,8 @@ msgid "User Name"
 msgstr "用户名"
 
 #: ../java/src/net/i2p/router/web/ConfigUIHelper.java:183
-#: ../java/src/net/i2p/router/web/HomeHelper.java:226
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:950
+#: ../java/src/net/i2p/router/web/HomeHelper.java:235
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:972
 msgid "Add"
 msgstr "添加"
 
@@ -2609,91 +2622,91 @@ msgstr "添加"
 msgid "Password"
 msgstr "密码"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:165
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:167
 msgid "Update or check already in progress"
 msgstr "更新或检查已在进行"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:188
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
 msgid "Update available, attempting to download now"
 msgstr "有更新可用,正在尝试下载"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:190
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:192
 msgid "Update available, click button on left to download"
 msgstr "有更新可用,点左侧按钮下载"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:196
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:198
 msgid "No update available"
 msgstr "无更新可用"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:214
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:216
 #, java-format
 msgid "Updating news URL to {0}"
 msgstr "正在更新新闻链接至 {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:221
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:229
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:53
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:59
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:223
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:231
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:54
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:60
 msgid "internal"
 msgstr "内部"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:225
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:227
 #, java-format
 msgid "Updating proxy host to {0}"
 msgstr "正在更新代理主机至{0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:233
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:235
 #, java-format
 msgid "Updating proxy port to {0}"
 msgstr "正在更新代理端口至{0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:249
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:251
 #, java-format
 msgid "Updating refresh frequency to {0}"
 msgstr "正在更新刷新频率至{0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:250
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:129
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:252
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:130
 #: ../java/src/net/i2p/router/web/GraphHelper.java:377
 msgid "Never"
 msgstr "从不"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:257
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:259
 #, java-format
 msgid "Updating update policy to {0}"
 msgstr "正在更新策略至{0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:266
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:268
 msgid "Updating update URLs."
 msgstr "正在更新更新链接。"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:278
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:280
 msgid "Updating trusted keys."
 msgstr "正在更新可信公钥。"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:290
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:292
 #, java-format
 msgid "Updating unsigned update URL to {0}"
 msgstr "正在更新未签名更新链接至{0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:302
+#: ../java/src/net/i2p/router/web/ConfigUpdateHandler.java:304
 #, java-format
 msgid "Updating signed development build URL to {0}"
 msgstr "正在更新到已签名的开发版,URL {0}"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:131
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:132
 msgid "Every"
 msgstr "每"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:149
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:150
 msgid "Notify only"
 msgstr "只提示"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:156
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:157
 msgid "Download and verify only"
 msgstr "仅下载和验证"
 
-#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:164
+#: ../java/src/net/i2p/router/web/ConfigUpdateHelper.java:165
 msgid "Download, verify, and restart"
 msgstr "仅下载、验证并重启"
 
@@ -2819,7 +2832,7 @@ msgid "No \"{0}\" events found in previous {1}"
 msgstr "没有找到在 {1} 前的“{0}”的事件"
 
 #: ../java/src/net/i2p/router/web/EventLogHelper.java:179
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
 msgid "Time"
 msgstr "时间"
 
@@ -2969,12 +2982,12 @@ msgid "Graph settings saved"
 msgstr "图表设置已保存"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:224
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:229
 msgid "Addressbook"
 msgstr "地址簿"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:29
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:222
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:227
 msgid "Manage your I2P hosts file here (I2P domain name resolution)"
 msgstr "管理您的 I2P hosts 文件(I2P域名解析表)"
 
@@ -3005,17 +3018,17 @@ msgid "I2P Home Page Configuration"
 msgstr "I2P 主页设置"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:138
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:139
 msgid "Anonymous webmail client"
 msgstr "匿名Web邮件客户端"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:33
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:140
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:141
 msgid "Email"
 msgstr "匿名邮箱"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:34
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:246
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:251
 msgid "I2P Router Help"
 msgstr "I2P路由帮助"
 
@@ -3025,17 +3038,17 @@ msgid "Router Console"
 msgstr "路由控制台"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:144
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:145
 msgid "Built-in anonymous BitTorrent Client"
 msgstr "内置的匿名BT客户端"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:36
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:146
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:147
 msgid "Torrents"
 msgstr "匿名BT"
 
 #: ../java/src/net/i2p/router/web/HomeHelper.java:37
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:150
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:155
 msgid "Local web server"
 msgstr "本地Web服务器"
 
@@ -3204,97 +3217,97 @@ msgstr "HTTP代理未启动"
 msgid "Your browser is not properly configured to use the HTTP proxy at {0}"
 msgstr "您的浏览器尚未配置使用HTTP代理{0}"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:201
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:904
+#: ../java/src/net/i2p/router/web/HomeHelper.java:210
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
 msgid "Name"
 msgstr "名称"
 
-#: ../java/src/net/i2p/router/web/HomeHelper.java:203
+#: ../java/src/net/i2p/router/web/HomeHelper.java:212
 msgid "URL"
 msgstr "URL"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:50
 msgid "I2P Job Queue"
 msgstr "I2P作业队列"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:52
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:51
 msgid "Job runners"
 msgstr "作业任务"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:57
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:56
 msgid "Active jobs"
 msgstr "活跃任务"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:60
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:59
 #, java-format
 msgid "started {0} ago"
 msgstr "{0}前开始"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:65
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:64
 msgid "Just finished jobs"
 msgstr "刚刚完成的任务"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:68
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:67
 #, java-format
 msgid "finished {0} ago"
 msgstr "{0}前完成"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:73
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:72
 msgid "Ready/waiting jobs"
 msgstr "已就绪/等待中的任务"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:90
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:89
 msgid "Scheduled jobs"
 msgstr "预定的任务"
 
 #. translators: {0} is a job name, {1} is a time, e.g. 6 min
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:100
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:99
 #, java-format
 msgid "{0} will start in {1}"
 msgstr "{0} 将在 {1} 启动"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:114
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:113
 msgid "Total Job Statistics"
 msgstr "总的任务统计"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Job"
 msgstr "任务"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:125
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:124
 msgid "Queued"
 msgstr "排队"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:141
 msgid "Runs"
 msgstr "运行"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:142
 msgid "Dropped"
 msgstr "忽略"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:143
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Avg"
 msgstr "平均"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Max"
 msgstr "最大"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:147
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:144
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
 msgid "Min"
 msgstr "最小"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:146
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:145
 msgid "Pending"
 msgstr "挂起"
 
-#: ../java/src/net/i2p/router/web/JobQueueHelper.java:198
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:14
+#: ../java/src/net/i2p/router/web/JobQueueHelper.java:197
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
 msgid "Summary"
 msgstr "摘要"
 
@@ -3312,223 +3325,223 @@ msgid "No log messages"
 msgstr "无日志消息"
 
 #. 0
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:15
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
 msgid "Local Router"
 msgstr "本地路由"
 
 #. 1
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:16
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
 msgid "Router Lookup"
 msgstr "路由查询"
 
 #. 2
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:17
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:19
 msgid "All Routers"
 msgstr "全部路由"
 
 #. 3
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:18
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
 msgid "All Routers with Full Stats"
 msgstr "全部路由及完整统计"
 
 #. 4
 #. 5
-#: ../java/src/net/i2p/router/web/NetDbHelper.java:20
+#: ../java/src/net/i2p/router/web/NetDbHelper.java:22
 msgid "LeaseSets"
 msgstr "赁集"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
-#: ../java/strings/Strings.java:68
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:105
+#: ../java/strings/Strings.java:69
 msgid "Router"
 msgstr "路由器"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:96
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:112
 msgid "not found in network database"
 msgstr "在网络数据库中未找到"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:139
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
 msgid "LeaseSet"
 msgstr "赁集"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:141
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:158
 msgid "Local"
 msgstr "本地"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:143
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:160
 msgid "Unpublished"
 msgstr "未发布"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:144
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:159
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:161
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:176
 msgid "Destination"
 msgstr "目标"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:156
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:168
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:185
 msgid "Add to local addressbook"
 msgstr "添加到本地地址簿"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:173
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:200
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:190
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:217
 #, java-format
 msgid "Expires in {0}"
 msgstr "{0} 后过期"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:175
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:202
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:192
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:219
 #, java-format
 msgid "Expired {0} ago"
 msgstr "{0} 前过期"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 #: ../java/src/net/i2p/router/web/TunnelRenderer.java:162
 msgid "Gateway"
 msgstr "网关"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:194
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:211
 msgid "Lease"
 msgstr "租赁"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:196
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:213
 msgid "Tunnel"
 msgstr "隧道"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:263
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:280
 msgid "Not initialized"
 msgstr "未初始化"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:313
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:330
 msgid "Network Database Router Statistics"
 msgstr "网络数据库路由统计"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:320
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:337
 #: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Count"
 msgstr "计数"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:334
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
 msgid "Transports"
 msgstr "传输"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:352
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:370
 msgid "Country"
 msgstr "国家"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:411
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
 msgid "Our info"
 msgstr "我方信息"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:413
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
 msgid "Peer info for"
 msgstr "节点信息"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:415
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
 msgid "Full entry"
 msgstr "完整项"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:152
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:726
 msgid "Hidden"
 msgstr "隐身"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:422
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:440
 msgid "Updated"
 msgstr "已更新"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:423
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:426
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:441
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:444
 #, java-format
 msgid "{0} ago"
 msgstr "{0} 前"
 
 #. shouldnt happen
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:425
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:429
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:443
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:447
 msgid "Published"
 msgstr "发布"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:431
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:449
 msgid "Signing Key"
 msgstr "签名密钥"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:433
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:451
 msgid "Address(es)"
 msgstr "地址"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:445
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:463
 msgid "cost"
 msgstr "开销"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "Hidden or starting up"
 msgstr "隐身或正在启动"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU"
 msgstr "SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:471
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:489
 msgid "SSU with introducers"
 msgstr "使用中介的SSU连接"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP"
 msgstr "NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU"
 msgstr "NTCP 与 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:472
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:490
 msgid "NTCP and SSU with introducers"
 msgstr "使用中介的 NTCP 和 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 Only SSU, introducers"
 msgstr "IPv6 仅 SSU, 中介"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU"
 msgstr "IPv6 SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:473
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:491
 msgid "IPv6 SSU, introducers"
 msgstr "IPv6 SSU, 中介"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP"
 msgstr "IPv6 NTCP"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU"
 msgstr "IPv6 NTCP, SSU"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 NTCP, SSU, introducers"
 msgstr "IPv6 NTCP, SSU, 中介"
 
-#: ../java/src/net/i2p/router/web/NetDbRenderer.java:474
+#: ../java/src/net/i2p/router/web/NetDbRenderer.java:492
 msgid "IPv6 Only NTCP, SSU, introducers"
 msgstr "IPv6 仅 NTCP, SSU, 中介"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:290
+#: ../java/src/net/i2p/router/web/NewsHelper.java:295
 #, java-format
 msgid "News last updated {0} ago."
 msgstr "新闻更新于 {0}前。"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:296
+#: ../java/src/net/i2p/router/web/NewsHelper.java:301
 #, java-format
 msgid "News last checked {0} ago."
 msgstr "最近一次查收新闻在 {0}前。"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:305
+#: ../java/src/net/i2p/router/web/NewsHelper.java:310
 msgid "Hide news"
 msgstr "隐藏新闻"
 
-#: ../java/src/net/i2p/router/web/NewsHelper.java:308
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:642
+#: ../java/src/net/i2p/router/web/NewsHelper.java:313
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:647
 msgid "Show news"
 msgstr "显示新闻"
 
@@ -3550,7 +3563,7 @@ msgstr[0] "{0} 个插件已更新"
 msgid "Plugin update check complete"
 msgstr "插件的更新检查已完成"
 
-#. buf.append("<h2>").append(_("Peer Profiles")).append("</h2>\n<p>");
+#. buf.append("<h2>").append(_t("Peer Profiles")).append("</h2>\n<p>");
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:79
 #, java-format
 msgid "Showing 1 recent profile."
@@ -3574,19 +3587,19 @@ msgid "Groups (Caps)"
 msgstr "分组(容量)"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:89
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:260
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:516
 msgid "Speed"
 msgstr "速度"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:90
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:262
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configpeer_jsp.java:520
 msgid "Capacity"
 msgstr "容量"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:91
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:273
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:264
 msgid "Integration"
 msgstr "整合"
 
@@ -3609,7 +3622,7 @@ msgid "Failing"
 msgstr "失败"
 
 #: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:135
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:406
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:411
 msgid "Integrated"
 msgstr "已整合"
 
@@ -3686,71 +3699,71 @@ msgstr "1h失败率"
 msgid "1d Fail Rate"
 msgstr "1d失败率"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:259
 msgid "Thresholds"
 msgstr "临界值"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:261
 msgid "fast peers"
 msgstr "快速节点"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:263
 msgid "high capacity peers"
 msgstr "高容节点"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:274
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:265
 msgid " well integrated peers"
 msgstr "整合节点"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "as determined by the profile organizer"
 msgstr "由节点描述信息管理器决定"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:276
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:267
 msgid "groups"
 msgstr "分组"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
 msgid "capabilities in the netDb, not used to determine profiles"
 msgstr "网络库中的容量与描述信息无关"
 
 #. capabilities
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:277
-#: ../java/strings/Strings.java:81
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:268
+#: ../java/strings/Strings.java:82
 msgid "caps"
 msgstr "容量"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid ""
 "peak throughput (bytes per second) over a 1 minute period that the peer has "
 "sustained in a single tunnel"
-msgstr "该节点一分钟由单一隧道通过的数据峰值(byte/s)。"
+msgstr "该节点一分钟内从单个隧道通过的数据量峰值(字节/秒)。"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:278
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:269
 msgid "speed"
 msgstr "速度"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "capacity"
 msgstr "容量"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:279
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:270
 msgid "how many tunnels can we ask them to join in an hour?"
 msgstr "一小时内路由可以邀请加入的隧道总量"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "how many new peers have they told us about lately?"
 msgstr "最近获知了多少新节点?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:280
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:271
 msgid "integration"
 msgstr "整合"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "is the peer banned, or unreachable, or failing tunnel tests?"
 msgstr "是否节点被封禁,不可达,或在隧道测试中失败?"
 
-#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:281
+#: ../java/src/net/i2p/router/web/ProfileOrganizerRenderer.java:272
 msgid "status"
 msgstr "状态"
 
@@ -3876,277 +3889,277 @@ msgstr "图表事件计数"
 msgid "Lifetime average value"
 msgstr "全程均值"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:120
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:121
 msgid "I2P Router Help &amp; FAQ"
 msgstr "I2P 使用帮助与常见问答"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:122
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:123
 msgid "Help &amp; FAQ"
 msgstr "帮助与常见问答"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:130
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:131
 msgid ""
 "Configure startup of clients and webapps (services); manually start dormant "
 "services"
 msgstr "设置客户端及Web应用(服务)的启动;手动启动重要服务"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:132
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:133
 msgid "I2P Services"
 msgstr "I2P 服务"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:164
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:169
 msgid "Configure I2P Router"
 msgstr "设置 I2P 路由器"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:166
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:171
 msgid "I2P Internals"
 msgstr "I2P内部设置"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:172
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:479
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:484
 msgid "View existing tunnels and tunnel build status"
 msgstr "查看现存隧道及隧道的建立状态"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:178
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:365
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:183
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:370
 msgid "Show all current peer connections"
 msgstr "显示当前所有的节点连接"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:184
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:189
 msgid "Show recent peer performance profiles"
 msgstr "显示当前节点的性能记录"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:186
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:191
 msgid "Profiles"
 msgstr "摘要"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:195
 msgid "Show list of all known I2P routers"
 msgstr "包含所有已知I2P路由器的列表"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:192
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:197
 msgid "NetDB"
 msgstr "网络库"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:196
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:201
 msgid "Health Report"
 msgstr "路由器健康状况报告"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:198
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:203
 msgid "Logs"
 msgstr "日志"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:209
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:214
 msgid "Graph router performance"
 msgstr "路由性能统计图"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:211
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
 msgid "Graphs"
 msgstr "图表"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:216
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:221
 msgid "Textual router performance statistics"
 msgstr "路由性能文字统计"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:228
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:233
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:438
 msgid "Local Tunnels"
 msgstr "本地隧道"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:230
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:235
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:164
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/i2ptunnelmgr_jsp.java:337
 msgid "Hidden Services Manager"
-msgstr "隐藏服务管理器"
+msgstr "隐身服务管理器"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:248
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
 msgid "General"
 msgstr "功能概况"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:253
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:258
 msgid ""
 "Your Local Identity is your unique I2P router identity, similar to an ip "
 "address but tailored to I2P. "
 msgstr "您的本地身份即您的I2P路由唯一身份,相当于您在I2P网络中的IP地址。"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:254
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:259
 msgid "Never disclose this to anyone, as it can reveal your real world ip."
 msgstr "不要将其透露给他人,因为它可能被用来探测和确定您的真实IP。"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:256
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:261
 msgid "Local Identity"
 msgstr "本地身份"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:260
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:265
 msgid "Your unique I2P router identity is"
 msgstr "您的I2P路由的唯一身份为"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:264
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:269
 msgid "never reveal it to anyone"
 msgstr "切勿将其告诉任何人"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:266
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:271
 msgid "show"
 msgstr "显示"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:270
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:296
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:275
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:301
 msgid "The version of the I2P software we are running"
 msgstr "当前运行的I2P软件版本"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:280
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:306
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:285
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:311
 msgid "How long we've been running for this session"
 msgstr "本次路由运行时间"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:321
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:326
 msgid ""
 "Help with configuring your firewall and router for optimal I2P performance"
 msgstr "如何正确配置您的防火墙和物理路由器以优化 I2P 工作性能的帮助"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:332
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:337
 msgid "See more information on the wiki"
 msgstr "在 wiki 查看更多信息"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:334
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:339
 msgid "Warning: ECDSA is not available. Update your Java or OS"
 msgstr "警告:ECDSA 不可用。请更新您的 Java 或操作系统"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:346
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:351
 msgid "Configure I2P Updates"
 msgstr "设置I2P更新"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:348
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:353
 msgid "I2P Update"
 msgstr "I2Pæ›´æ–°"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:373
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:378
 msgid "Peers we've been talking to in the last few minutes/last hour"
 msgstr "过去数分钟/小时中路由连接过的节点"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:376
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:381
 msgid "Active"
 msgstr "活动节点"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:385
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:390
 msgid "The number of peers available for building client tunnels"
 msgstr "可用来建立客户端隧道的节点数量"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:388
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:393
 msgid "Fast"
 msgstr "快速节点"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:394
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:399
 msgid "The number of peers available for building exploratory tunnels"
 msgstr "可用来建立探测隧道的节点数量"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:397
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:402
 msgid "High capacity"
 msgstr "高容量节点"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:403
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:408
 msgid "The number of peers available for network database inquiries"
 msgstr "可用来查询网络数据库的节点"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:412
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:417
 msgid "The total number of peers in our network database"
 msgstr "我方网络数据库中记录的节点总数量"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:415
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:420
 msgid "Known"
 msgstr "已知节点"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:435
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:440
 msgid "Configure router bandwidth allocation"
 msgstr "设置路由的带宽配额"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:437
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:442
 msgid "Bandwidth in/out"
 msgstr "带宽(进/出站)"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:457
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:462
 msgid "Total"
 msgstr "总计"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:464
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:469
 msgid "Used"
 msgstr "已用"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:486
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:491
 msgid ""
 "Used for building and testing tunnels, and communicating with floodfill "
 "peers"
 msgstr "用来建立或测试隧道,与 FloodFill 节点通信"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:489
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:494
 msgid "Exploratory"
 msgstr "探测"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:495
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:500
 msgid "Tunnels we are using to provide or access services on the network"
 msgstr "用来提供服务或访问他人服务的隧道。"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:504
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:509
 msgid ""
-"Tunnels we are participating in, directly contributing bandwith to the "
+"Tunnels we are participating in, directly contributing bandwidth to the "
 "network"
-msgstr "我方参与的隧道,直接为I2P网络贡献带宽。"
+msgstr "我方参与的隧道,直接为网络贡献带宽"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:507
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:512
 msgid "Participating"
 msgstr "共享"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:513
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:518
 msgid ""
 "The ratio of tunnel hops we provide to tunnel hops we use - a value greater "
 "than 1.00 indicates a positive contribution to the network"
 msgstr "我方提供与使用的隧道比例 - 大于 1.00 表示对网络作出了积极贡献"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:516
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:521
 msgid "Share ratio"
-msgstr "共享/占用比率"
+msgstr "共享比率"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:529
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:534
 msgid "What's in the router's job queue?"
 msgstr "查看路由的作业队列"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:531
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
 msgid "Congestion"
 msgstr "拥堵"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:536
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:541
 msgid "Indicates router performance"
 msgstr "表示路由器性能"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:539
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:544
 msgid "Job lag"
 msgstr "作业延迟"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:545
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:550
 msgid "Indicates how quickly outbound messages to other I2P routers are sent"
 msgstr "表示出站消息发往其他I2P路由的速度"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:548
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:553
 msgid "Message delay"
 msgstr "消息延迟"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:555
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:560
 msgid "Round trip time for a tunnel test"
 msgstr "隧道测试的往返时间"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:558
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:563
 msgid "Tunnel lag"
 msgstr "隧道延迟"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:565
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:570
 msgid "Queued requests from other routers to participate in tunnels"
 msgstr "请求队列中来自其他路由的加入隧道请求"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:568
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:573
 msgid "Backlog"
 msgstr "积压"
 
-#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:603
+#: ../java/src/net/i2p/router/web/SummaryBarRenderer.java:608
 msgid "News &amp; Updates"
 msgstr "新闻和更新"
 
@@ -4207,7 +4220,7 @@ msgstr "添加、删除、编辑或控制客户端隧道和服务器隧道"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:450
 msgid "Hidden Service"
-msgstr "隐藏服务"
+msgstr "隐身服务"
 
 #: ../java/src/net/i2p/router/web/SummaryHelper.java:454
 msgid "Show tunnels"
@@ -4250,26 +4263,26 @@ msgstr "隧道创建中"
 msgid "shared clients"
 msgstr "共享客户端"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:715
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
 msgid "Click Restart to install"
 msgstr "点击【重启】完成安装"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:717
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:719
 msgid "Click Shutdown and restart to install"
 msgstr "点击【关闭】并重新启动I2P即可完成安装。"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:718
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:733
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:720
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:735
 #, java-format
 msgid "Version {0}"
 msgstr "版本 {0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:732
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:734
 msgid "Update available"
 msgstr "有可用更新"
 
 #. Note to translators: parameter is a version, e.g. "0.8.4"
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:756
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:758
 #, java-format
 msgid "Download {0} Update"
 msgstr "下载 {0} 更新"
@@ -4278,7 +4291,7 @@ msgstr "下载 {0} 更新"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:764
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:766
 #, java-format
 msgid "Download Signed<br>Development Update<br>{0}"
 msgstr "下载已签名的<br>开发版更新<br>{0}"
@@ -4287,69 +4300,85 @@ msgstr "下载已签名的<br>开发版更新<br>{0}"
 #. <br> is optional, to help the browser make the lines even in the button
 #. If the translation is shorter than the English, you should probably not
 #. include <br>
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:772
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:774
 #, java-format
 msgid "Download Unsigned<br>Update {0}"
 msgstr "下载未签名<br>更新{0}"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:796
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
 msgid "Help with firewall configuration"
 msgstr "如何配置防火墙"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:798
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:800
 msgid "Check network connection and NAT/firewall"
 msgstr "检查网络连接和NAT/防火墙"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:817
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:819
 msgid "Reseed"
 msgstr "补种"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:906
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:908
 msgid "Order"
 msgstr "顺序"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:923
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:925
 msgid "Top"
 msgstr "顶部"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:936
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:930
+msgid "Move to top"
+msgstr "移动到顶部"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:940
+msgid "Move up"
+msgstr "上移"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:948
 msgid "Down"
 msgstr "向下"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:941
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+msgid "Move down"
+msgstr "下移"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:958
 msgid "Bottom"
 msgstr "底部"
 
-#: ../java/src/net/i2p/router/web/SummaryHelper.java:953
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:963
+msgid "Move to bottom"
+msgstr "移动到底部"
+
+#: ../java/src/net/i2p/router/web/SummaryHelper.java:975
 msgid "Select a section to add"
 msgstr "选择要添加的部分"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:141
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:142
 #, java-format
 msgid "events in {0}"
 msgstr "事件/{0}"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:143
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:144
 #, java-format
 msgid "averaged for {0}"
 msgstr "{0} 平均值"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:153
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:154
 msgid "Events per period"
 msgstr "事件/周期"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:175
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:188
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
 msgid "avg"
 msgstr "平均"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:176
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:189
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
 msgid "max"
 msgstr "最大"
 
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:177
-#: ../java/src/net/i2p/router/web/SummaryRenderer.java:190
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:178
+#: ../java/src/net/i2p/router/web/SummaryRenderer.java:191
 msgid "now"
 msgstr "当前"
 
@@ -4526,175 +4555,127 @@ msgid "Open Router Console in web browser at startup"
 msgstr "路由启动时打开网页版路由控制台"
 
 #: ../java/strings/Strings.java:37
+msgid "shared clients (DSA)"
+msgstr "共享客户端(DSA)"
+
+#: ../java/strings/Strings.java:38
 msgid "IRC proxy"
 msgstr "IRC代理"
 
-#: ../java/strings/Strings.java:38
+#: ../java/strings/Strings.java:39
 msgid "eepsite"
 msgstr "匿名网站"
 
-#: ../java/strings/Strings.java:39
+#: ../java/strings/Strings.java:40
 msgid "I2P webserver"
 msgstr "I2P网页服务器"
 
-#: ../java/strings/Strings.java:40
+#: ../java/strings/Strings.java:41
 msgid "HTTP Proxy"
 msgstr "HTTP 代理"
 
 #. older names for pre-0.7.4 installs
-#: ../java/strings/Strings.java:42
+#: ../java/strings/Strings.java:43
 msgid "eepProxy"
 msgstr "eepProxy"
 
-#: ../java/strings/Strings.java:43
+#: ../java/strings/Strings.java:44
 msgid "ircProxy"
 msgstr "ircProxy"
 
 #. hardcoded in i2psnark
-#: ../java/strings/Strings.java:45
+#: ../java/strings/Strings.java:46
 msgid "I2PSnark"
 msgstr "I2PSnark"
 
 #. hardcoded in iMule?
-#: ../java/strings/Strings.java:47
+#: ../java/strings/Strings.java:48
 msgid "iMule"
 msgstr "iMule"
 
 #. standard themes for ConfigUIHelper
-#: ../java/strings/Strings.java:51
+#: ../java/strings/Strings.java:52
 msgid "classic"
 msgstr "经典"
 
-#: ../java/strings/Strings.java:52
+#: ../java/strings/Strings.java:53
 msgid "dark"
 msgstr "暗色调"
 
-#: ../java/strings/Strings.java:53
+#: ../java/strings/Strings.java:54
 msgid "light"
 msgstr "亮色调"
 
-#: ../java/strings/Strings.java:54
+#: ../java/strings/Strings.java:55
 msgid "midnight"
 msgstr "午夜"
 
-#: ../java/strings/Strings.java:58
+#: ../java/strings/Strings.java:59
 msgid "BandwidthLimiter"
 msgstr "带宽限制"
 
-#: ../java/strings/Strings.java:59
+#: ../java/strings/Strings.java:60
 msgid "ClientMessages"
 msgstr "客户消息"
 
-#: ../java/strings/Strings.java:60
+#: ../java/strings/Strings.java:61
 msgid "Encryption"
 msgstr "加密"
 
-#: ../java/strings/Strings.java:61
+#: ../java/strings/Strings.java:62
 msgid "i2cp"
 msgstr "i2cp"
 
-#: ../java/strings/Strings.java:62
+#: ../java/strings/Strings.java:63
 msgid "I2PTunnel"
 msgstr "I2P隧道"
 
-#: ../java/strings/Strings.java:63
+#: ../java/strings/Strings.java:64
 msgid "InNetPool"
 msgstr "InNetPool"
 
-#: ../java/strings/Strings.java:64
+#: ../java/strings/Strings.java:65
 msgid "JobQueue"
 msgstr "作业队列"
 
-#: ../java/strings/Strings.java:65
+#: ../java/strings/Strings.java:66
 msgid "NetworkDatabase"
 msgstr "网络数据库"
 
-#: ../java/strings/Strings.java:66
+#: ../java/strings/Strings.java:67
 msgid "ntcp"
 msgstr "NTCP"
 
-#: ../java/strings/Strings.java:69
+#: ../java/strings/Strings.java:70
 msgid "Stream"
 msgstr "流"
 
-#: ../java/strings/Strings.java:70
+#: ../java/strings/Strings.java:71
 msgid "Throttle"
 msgstr "门槛"
 
-#: ../java/strings/Strings.java:71
+#: ../java/strings/Strings.java:72
 msgid "Transport"
 msgstr "传输"
 
-#: ../java/strings/Strings.java:73
+#: ../java/strings/Strings.java:74
 msgid "udp"
 msgstr "UDP"
 
 #. parameters in transport addresses (netdb.jsp)
 #. may or may not be worth translating
-#: ../java/strings/Strings.java:77
+#: ../java/strings/Strings.java:78
 msgid "host"
 msgstr "主机"
 
-#: ../java/strings/Strings.java:78
+#: ../java/strings/Strings.java:79
 msgid "key"
 msgstr "密钥"
 
-#: ../java/strings/Strings.java:79
+#: ../java/strings/Strings.java:80
 msgid "port"
 msgstr "端口"
 
-#. introducer host
-#: ../java/strings/Strings.java:83
-msgid "ihost0"
-msgstr "ihost0"
-
-#: ../java/strings/Strings.java:84
-msgid "ihost1"
-msgstr "ihost1"
-
-#: ../java/strings/Strings.java:85
-msgid "ihost2"
-msgstr "ihost2"
-
-#. introducer port
-#: ../java/strings/Strings.java:87
-msgid "iport0"
-msgstr "iport0"
-
-#: ../java/strings/Strings.java:88
-msgid "iport1"
-msgstr "iport1"
-
-#: ../java/strings/Strings.java:89
-msgid "iport2"
-msgstr "iport2"
-
-#. introducer key
-#: ../java/strings/Strings.java:91
-msgid "ikey0"
-msgstr "ikey0"
-
-#: ../java/strings/Strings.java:92
-msgid "ikey1"
-msgstr "ikey1"
-
-#: ../java/strings/Strings.java:93
-msgid "ikey2"
-msgstr "ikey2"
-
-#. introducer tag
-#: ../java/strings/Strings.java:95
-msgid "itag0"
-msgstr "itag0"
-
-#: ../java/strings/Strings.java:96
-msgid "itag1"
-msgstr "itag1"
-
-#: ../java/strings/Strings.java:97
-msgid "itag2"
-msgstr "itag2"
-
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:148
 msgid "configure bandwidth"
 msgstr "配置带宽"
@@ -4852,18 +4833,18 @@ msgstr "与联网环境相符的速度能使I2P以最佳的状态工作。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:443
 msgid "KBps In"
-msgstr "KBps 入站"
+msgstr "KB/s 入站"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:457
 msgid "KBps Out"
-msgstr "KBps 出站"
+msgstr "KB/s 出站"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:472
 msgid "Share"
 msgstr "共享"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:479
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:481
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:493
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:475
 msgid "NOTE"
 msgstr "注意"
@@ -4871,11 +4852,11 @@ msgstr "注意"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:481
 #, java-format
 msgid "You have configured I2P to share only {0} KBps."
-msgstr "您设置的 I2P 仅共享 {0} KBps。"
+msgstr "您已设置 I2P 仅共享 {0} KB/s。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:484
 msgid "I2P requires at least 12KBps to enable sharing. "
-msgstr "I2P 需要至少 12KBps 才能进行共享。"
+msgstr "I2P 需要至少 12KB/s 才能进行共享。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:485
 msgid ""
@@ -4891,7 +4872,7 @@ msgstr "制造混淆流量共享能增强您的匿名性,并帮助网络成长
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:488
 #, java-format
 msgid "You have configured I2P to share {0} KBps."
-msgstr "您已设置 I2P 共享 {0} KBps。"
+msgstr "您已设置 I2P 共享 {0} KB/s。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:491
 msgid ""
@@ -4904,7 +4885,7 @@ msgid "Advanced network configuration page"
 msgstr "高级网络配置页面"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/config_jsp.java:497
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:477
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:489
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:498
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:574
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:590
@@ -4943,27 +4924,35 @@ msgid ""
 "computer's resources."
 msgstr "参与播种有助于帮助网络,但会在您的计算机上占用更多资源。"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:445
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:442
+msgid "This router is currently a floodfill participant."
+msgstr "这个路由器目前参与播种。"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:446
+msgid "This router is not currently a floodfill participant."
+msgstr "这个路由器目前不参与播种。"
+
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
 msgid "Automatic"
 msgstr "自动"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:451
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:463
 msgid "Force On"
 msgstr "强制开启"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:457
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:469
 msgid "Disable"
 msgstr "禁用"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:461
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:473
 msgid "Advanced I2P Configuration"
 msgstr "I2P 高级设置"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:483
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:495
 msgid "Some changes may require a restart to take effect."
 msgstr "某些设置需要程序重启后生效。"
 
-#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:486
+#: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configadvanced_jsp.java:498
 #, java-format
 msgid "To make changes, edit the file {0}."
 msgstr "要进行更改,编辑 {0} 文件。"
@@ -5021,7 +5010,7 @@ msgstr "启用强制 SSL"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:530
 msgid "Disabled - Clients outside this Java process may not connect"
-msgstr "禁用 - 如果客户端与I2P不运行与同一Java虚拟机中则禁止其连接"
+msgstr "禁用 - 这个 Java 进程之外的客户端可能无法连接"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:532
 msgid "I2CP Interface"
@@ -5037,7 +5026,7 @@ msgstr "认证"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:558
 msgid "Require username and password"
-msgstr "需要用户名密码登陆"
+msgstr "需要用户名和密码登录"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:560
 msgid "Username"
@@ -5069,7 +5058,7 @@ msgid ""
 "(e.g. i2psnark),front-ends to another client or application which must be "
 "separately enabled (e.g. susidns, i2ptunnel), or have no web interface at "
 "all (e.g. addressbook)."
-msgstr "下面列出的Java Web 程序随客户端“web控制台”一同启动,并与路由运行于同一JVM中。这些Web程序通常可以通过路由器界面直接访问。他们可能是完整的程序 (例如  i2psnark/BT客户端),其他客户端程序的前端或必须单独启动的程序(例如. susidns, i2ptunnel),甚至根本没有Web界面(例如 addressbook)。"
+msgstr "下面列出的Java Web 程序随“Web控制台”客户端一同启动,并与路由运行于同一JVM中。这些Web程序通常可以通过路由器界面直接访问。它们可能是完整的程序,例如 i2psnark(BT客户端),部分前端的客户端或程序必须单独启动(例如:susidns、i2ptunnel),或者甚至根本没有Web界面(例如 addressbook,即地址簿)。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configclients_jsp.java:582
 msgid ""
@@ -5135,7 +5124,7 @@ msgstr "搜索引擎"
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:508
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:412
 msgid "Hidden Services of Interest"
-msgstr "互联网隐藏服务"
+msgstr "互联网隐身服务"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confighome_jsp.java:524
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/home_jsp.java:416
@@ -5622,14 +5611,14 @@ msgstr "警告 - 快速节点,受防火墙限制"
 msgid ""
 "You have configured I2P to share more than 128KBps of bandwidth, but you are"
 " firewalled."
-msgstr "您已设置I2P共享超过128KBps的带宽,但您的连接受到防火墙限制。"
+msgstr "您已设置 I2P 共享超过 128KB/s 的带宽,但您的连接受到防火墙限制。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:736
 msgid ""
 "While I2P will work fine in this configuration, if you really have over "
 "128KBps of bandwidth to share, it will be much more helpful to the network "
 "if you open your firewall."
-msgstr "尽管在此种配置情况下I2P可以正常工作,但如果您的确能够分享超过128KBps的带宽,打开防火墙端口能让它更好工作,帮助网络中其他的人。"
+msgstr "尽管在这种配置情况下 I2P 可以正常工作,但如果您的确能够分享超过 128KB/s 的带宽,打开防火墙端口能让它更好工作,帮助网络中的其他人。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/confignet_jsp.java:738
 msgid "WARN - Firewalled and Floodfill"
@@ -6121,7 +6110,7 @@ msgstr "路由器启动时启动浏览器?"
 msgid ""
 "I2P's main configuration interface is this web console, so for your "
 "convenience I2P can launch a web browser on startup pointing at"
-msgstr "此Web控制台是I2P的主要设置界面,所以如果您您觉得有必要I2P可以在路由启动时调用浏览器打开"
+msgstr "此Web控制台是I2P的主要设置界面,所以如果您觉得有必要,I2P可以在路由启动时调用浏览器打开"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configsidebar_jsp.java:150
 msgid "config summary bar"
@@ -6210,7 +6199,7 @@ msgid ""
 "Tunnels longer than 3 hops (for example 2 hops + 0-2 hops, 3 hops + 0-1 "
 "hops, 3 hops + 0-2 hops), or a high quantity + backup quantity, may severely"
 " reduce performance or reliability."
-msgstr "长于3个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或大量常规+大量备用,可能降低性能和稳定性。"
+msgstr "长于3个跳点的隧道(例如 2跳点 + 0-2跳点,3跳点 + 0-1跳点, 3跳点 + 0-2跳点),或高数量的常规+备用,可能会严重降低性能或可靠性。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/configtunnels_jsp.java:487
 msgid "High CPU and/or high outbound bandwidth usage may result."
@@ -6421,7 +6410,7 @@ msgstr "Bug报告请到 {0} 或 {1}。"
 msgid ""
 "You may use the username \"guest\" and password \"guest\" if you do not wish"
 " to register."
-msgstr "如果您不想注册可以用“guest”作为用户名和密码登陆。"
+msgstr "如果您不想注册,可以用“guest”作为用户名和密码登录。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error500_jsp.java:183
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/logs_jsp.java:356
@@ -6448,7 +6437,7 @@ msgid ""
 "Note that system information, log timestamps, and log messages may provide "
 "clues to your location; please review everything you include in a bug "
 "report."
-msgstr "注意,系统信息、日志时间戳和日志中的部分信息中可能泄露您真实位置;提交前请仔细检查。"
+msgstr "注意,系统信息、日志时间戳和日志中的部分信息可能泄露有关您的位置的线索。提交 Bug 报告前请仔细检查您提交的所有信息。"
 
 #: ../jsp/WEB-INF/classes/net/i2p/router/web/jsp/error_jsp.java:161
 msgid "Page Not Found"
diff --git a/apps/sam/java/src/net/i2p/sam/Handler.java b/apps/sam/java/src/net/i2p/sam/Handler.java
new file mode 100644
index 0000000000000000000000000000000000000000..16cc27334e2863d207314fbb1c103e4850018ba8
--- /dev/null
+++ b/apps/sam/java/src/net/i2p/sam/Handler.java
@@ -0,0 +1,14 @@
+package net.i2p.sam;
+
+/**
+ * Something that can be stopped by the SAMBridge.
+ *
+ * @since 0.9.20
+ */
+public interface Handler {
+
+    /**
+     * Stop the handler
+     */
+    public void stopHandling();
+}
diff --git a/apps/sam/java/src/net/i2p/sam/SAMBridge.java b/apps/sam/java/src/net/i2p/sam/SAMBridge.java
index 4679f68b686a26e0ca52715fedea2dbd1b02571f..383f44fb574b50a8ce6803eea3143a778143e67d 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMBridge.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMBridge.java
@@ -19,9 +19,13 @@ import java.nio.channels.ServerSocketChannel;
 import java.nio.channels.SocketChannel;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.Set;
 
 import net.i2p.I2PAppContext;
 import net.i2p.app.*;
@@ -30,6 +34,7 @@ import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
 import net.i2p.util.I2PAppThread;
 import net.i2p.util.Log;
+import net.i2p.util.PortMapper;
 
 /**
  * SAM bridge implementation.
@@ -55,6 +60,7 @@ public class SAMBridge implements Runnable, ClientApp {
      * destination keys (Destination+PrivateKey+SigningPrivateKey)
      */
     private final Map<String,String> nameToPrivKeys;
+    private final Set<Handler> _handlers;
 
     private volatile boolean acceptConnections = true;
 
@@ -95,6 +101,7 @@ public class SAMBridge implements Runnable, ClientApp {
         _listenPort = options.port;
         persistFilename = options.keyFile;
         nameToPrivKeys = new HashMap<String,String>(8);
+        _handlers = new HashSet<Handler>(8);
         this.i2cpProps = options.opts;
         _state = INITIALIZED;
     }
@@ -124,6 +131,7 @@ public class SAMBridge implements Runnable, ClientApp {
         _listenPort = listenPort;
         persistFilename = persistFile;
         nameToPrivKeys = new HashMap<String,String>(8);
+        _handlers = new HashSet<Handler>(8);
         loadKeys();
         try {
             openSocket();
@@ -209,8 +217,9 @@ public class SAMBridge implements Runnable, ClientApp {
     }
     
     /**
-     * Load up the keys from the persistFilename
-     *
+     * Load up the keys from the persistFilename.
+     * TODO use DataHelper
+     * TODO store in config dir, not base dir
      */
     private void loadKeys() {
         synchronized (nameToPrivKeys) {
@@ -218,7 +227,7 @@ public class SAMBridge implements Runnable, ClientApp {
             BufferedReader br = null;
             try {
                 br = new BufferedReader(new InputStreamReader(
-                        new FileInputStream(persistFilename)));
+                        new FileInputStream(persistFilename), "UTF-8"));
                 String line = null;
                 while ( (line = br.readLine()) != null) {
                     int eq = line.indexOf('=');
@@ -226,6 +235,8 @@ public class SAMBridge implements Runnable, ClientApp {
                     String privKeys = line.substring(eq+1);
                     nameToPrivKeys.put(name, privKeys);
                 }
+                if (_log.shouldInfo())
+                    _log.info("Loaded " + nameToPrivKeys.size() + " private keys from " + persistFilename);
             } catch (FileNotFoundException fnfe) {
                 _log.warn("Key file does not exist at " + persistFilename);
             } catch (IOException ioe) {
@@ -237,8 +248,9 @@ public class SAMBridge implements Runnable, ClientApp {
     }
     
     /**
-     * Store the current keys to disk in the location specified on creation
-     *
+     * Store the current keys to disk in the location specified on creation.
+     * TODO use DataHelper
+     * TODO store in config dir, not base dir
      */
     private void storeKeys() {
         synchronized (nameToPrivKeys) {
@@ -248,11 +260,13 @@ public class SAMBridge implements Runnable, ClientApp {
                 for (Map.Entry<String, String> entry : nameToPrivKeys.entrySet()) {
                     String name = entry.getKey();
                     String privKeys = entry.getValue();
-                    out.write(name.getBytes());
+                    out.write(name.getBytes("UTF-8"));
                     out.write('=');
-                    out.write(privKeys.getBytes());
+                    out.write(privKeys.getBytes("UTF-8"));
                     out.write('\n');
                 }
+                if (_log.shouldInfo())
+                    _log.info("Saved " + nameToPrivKeys.size() + " private keys to " + persistFilename);
             } catch (IOException ioe) {
                 _log.error("Error writing out the SAM keys to " + persistFilename, ioe);
             } finally {
@@ -261,6 +275,51 @@ public class SAMBridge implements Runnable, ClientApp {
         }
     }
     
+    /**
+     * Handlers must call on startup
+     * @since 0.9.20
+     */
+    public void register(Handler handler) {
+        if (_log.shouldInfo())
+            _log.info("Register " + handler);
+        synchronized (_handlers) {
+            _handlers.add(handler);
+        }
+    }
+    
+    /**
+     * Handlers must call on stop
+     * @since 0.9.20
+     */
+    public void unregister(Handler handler) {
+        if (_log.shouldInfo())
+            _log.info("Unregister " + handler);
+        synchronized (_handlers) {
+            _handlers.remove(handler);
+        }
+    }
+
+    /**
+     * Stop all the handlers.
+     * @since 0.9.20
+     */
+    private void stopHandlers() {
+        List<Handler> handlers = null;
+        synchronized (_handlers) {
+            if (!_handlers.isEmpty()) {
+                handlers = new ArrayList<Handler>(_handlers);
+                _handlers.clear();
+            }
+        }
+        if (handlers != null) {
+            for (Handler handler : handlers) {
+                if (_log.shouldInfo())
+                    _log.info("Stopping " + handler);
+                handler.stopHandling();
+            }
+        }
+    }
+
     ////// begin ClientApp interface, use only if using correct construtor
 
     /**
@@ -270,6 +329,9 @@ public class SAMBridge implements Runnable, ClientApp {
         if (_state != INITIALIZED)
             return;
         changeState(STARTING);
+        synchronized (_handlers) {
+            _handlers.clear();
+        }
         loadKeys();
         try {
             openSocket();
@@ -285,7 +347,8 @@ public class SAMBridge implements Runnable, ClientApp {
     }
 
     /**
-     *  Does NOT stop existing sessions.
+     *  As of 0.9.20, stops running handlers and sessions.
+     *
      *  @since 0.9.6
      */
     public synchronized void shutdown(String[] args) {
@@ -293,11 +356,11 @@ public class SAMBridge implements Runnable, ClientApp {
             return;
         changeState(STOPPING);
         acceptConnections = false;
+        stopHandlers();
         if (_runner != null)
             _runner.interrupt();
         else
             changeState(STOPPED);
-        // TODO does not stop active connections / sessions
     }
 
     /**
@@ -375,7 +438,7 @@ public class SAMBridge implements Runnable, ClientApp {
      *  @since 0.9.6
      */
     private void startThread() {
-        I2PAppThread t = new I2PAppThread(this, "SAMListener");
+        I2PAppThread t = new I2PAppThread(this, "SAMListener " + _listenPort);
         if (Boolean.parseBoolean(System.getProperty("sam.shutdownOnOOM"))) {
             t.addOOMEventThreadListener(new I2PAppThread.OOMEventListener() {
                 public void outOfMemory(OutOfMemoryError err) {
@@ -487,6 +550,7 @@ public class SAMBridge implements Runnable, ClientApp {
         changeState(RUNNING);
         if (_mgr != null)
             _mgr.register(this);
+        I2PAppContext.getGlobalContext().portMapper().register(PortMapper.SVC_SAM, _listenPort);
         try {
             while (acceptConnections) {
                 SocketChannel s = serverSocket.accept();
@@ -495,18 +559,19 @@ public class SAMBridge implements Runnable, ClientApp {
                                + s.socket().getInetAddress().toString() + ":"
                                + s.socket().getPort());
 
-                class HelloHandler implements Runnable {
-                        private final SocketChannel s;
-                        private final SAMBridge parent;
+                class HelloHandler implements Runnable, Handler {
+                    private final SocketChannel s;
+                    private final SAMBridge parent;
 
-                	HelloHandler(SocketChannel s, SAMBridge parent) { 
+                    HelloHandler(SocketChannel s, SAMBridge parent) { 
                 		this.s = s ;
                 		this.parent = parent ;
-                	}
+                    }
 
-                	public void run() {
+                    public void run() {
+                        parent.register(this);
                         try {
-                            SAMHandler handler = SAMHandlerFactory.createSAMHandler(s, i2cpProps);
+                            SAMHandler handler = SAMHandlerFactory.createSAMHandler(s, i2cpProps, parent);
                             if (handler == null) {
                                 if (_log.shouldLog(Log.DEBUG))
                                     _log.debug("SAM handler has not been instantiated");
@@ -515,7 +580,6 @@ public class SAMBridge implements Runnable, ClientApp {
                                 } catch (IOException e) {}
                                 return;
                             }
-                            handler.setBridge(parent);
                             handler.startHandling();
                         } catch (SAMException e) {
                             if (_log.shouldLog(Log.ERROR))
@@ -526,11 +590,17 @@ public class SAMBridge implements Runnable, ClientApp {
                         } catch (Exception ee) {
                             try { s.close(); } catch (IOException ioe) {}
                             _log.log(Log.CRIT, "Unexpected error handling SAM connection", ee);
-                        }                		
-                	}
+                        } finally {
+                            parent.unregister(this);
+                        }
+                    }
+
+                    /** @since 0.9.20 */
+                    public void stopHandling() {
+                        try { s.close(); } catch (IOException ioe) {}
+                    }
                 }
-                // TODO: Handler threads are not saved or tracked and cannot be stopped
-                new I2PAppThread(new HelloHandler(s,this), "HelloHandler").start();
+                new I2PAppThread(new HelloHandler(s,this), "SAM HelloHandler").start();
             }
             changeState(STOPPING);
         } catch (Exception e) {
@@ -546,6 +616,8 @@ public class SAMBridge implements Runnable, ClientApp {
                 if (serverSocket != null)
                     serverSocket.close();
             } catch (IOException e) {}
+            I2PAppContext.getGlobalContext().portMapper().unregister(PortMapper.SVC_SAM);
+            stopHandlers();
             changeState(STOPPED);
         }
     }
diff --git a/apps/sam/java/src/net/i2p/sam/SAMHandler.java b/apps/sam/java/src/net/i2p/sam/SAMHandler.java
index 30213ca6d7f1df2c07c45b1e19e01cd6dfd96dde..56d68878c612ec998fdc6a80f56e5b298f03f7e0 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMHandler.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMHandler.java
@@ -25,12 +25,12 @@ import net.i2p.util.Log;
  *
  * @author human
  */
-abstract class SAMHandler implements Runnable {
+abstract class SAMHandler implements Runnable, Handler {
 
     protected final Log _log;
 
-    protected I2PAppThread thread = null;
-    protected SAMBridge bridge = null;
+    protected I2PAppThread thread;
+    protected final SAMBridge bridge;
 
     private final Object socketWLock = new Object(); // Guards writings on socket
     protected final SocketChannel socket;
@@ -41,8 +41,8 @@ abstract class SAMHandler implements Runnable {
     /** I2CP options configuring the I2CP connection (port, host, numHops, etc) */
     protected final Properties i2cpProps;
 
-    private final Object stopLock = new Object();
-    private volatile boolean stopHandler;
+    protected final Object stopLock = new Object();
+    protected boolean stopHandler;
 
     /**
      * SAMHandler constructor (to be called by subclasses)
@@ -53,14 +53,15 @@ abstract class SAMHandler implements Runnable {
      * @param i2cpProps properties to configure the I2CP connection (host, port, etc)
      * @throws IOException 
      */
-    protected SAMHandler(SocketChannel s,
-                         int verMajor, int verMinor, Properties i2cpProps) throws IOException {
+    protected SAMHandler(SocketChannel s, int verMajor, int verMinor,
+                         Properties i2cpProps, SAMBridge parent) throws IOException {
         _log = I2PAppContext.getGlobalContext().logManager().getLog(getClass());
         socket = s;
 
         this.verMajor = verMajor;
         this.verMinor = verMinor;
         this.i2cpProps = i2cpProps;
+        bridge = parent;
     }
 
     /**
@@ -68,12 +69,10 @@ abstract class SAMHandler implements Runnable {
      *
      */
     public final void startHandling() {
-        thread = new I2PAppThread(this, "SAMHandler");
+        thread = new I2PAppThread(this, getClass().getSimpleName());
         thread.start();
     }
-    
-    public void setBridge(SAMBridge bridge) { this.bridge = bridge; }
-    
+
     /**
      * Actually handle the SAM protocol.
      *
@@ -81,10 +80,9 @@ abstract class SAMHandler implements Runnable {
     protected abstract void handle();
 
     /**
-     * Get the input stream of the socket connected to the SAM client
+     * Get the channel of the socket connected to the SAM client
      *
-     * @return input stream
-     * @throws IOException 
+     * @return channel
      */
     protected final SocketChannel getClientSocket() {
         return socket ;
@@ -156,13 +154,17 @@ abstract class SAMHandler implements Runnable {
     }
 
     /**
-     * Stop the SAM handler
-     *
+     * Stop the SAM handler, close the client socket,
+     * unregister with the bridge.
      */
-    public final void stopHandling() {
+    public void stopHandling() {
         synchronized (stopLock) {
             stopHandler = true;
         }
+        try {
+            closeClientSocket();
+        } catch (IOException e) {}
+        bridge.unregister(this);
     }
 
     /**
@@ -183,14 +185,23 @@ abstract class SAMHandler implements Runnable {
      */
     @Override
     public final String toString() {
-        return ("SAM handler (class: " + this.getClass().getName()
+        return (this.getClass().getSimpleName()
                 + "; SAM version: " + verMajor + "." + verMinor
                 + "; client: "
                 + this.socket.socket().getInetAddress().toString() + ":"
                 + this.socket.socket().getPort() + ")");
     }
 
+    /**
+     * Register with the bridge, call handle(),
+     * unregister with the bridge.
+     */
     public final void run() {
-        handle();
+        bridge.register(this);
+        try {
+            handle();
+        } finally {
+            bridge.unregister(this);
+        }
     }
 }
diff --git a/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java b/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java
index d605d57f9079e0d23b9032f5b9f891904f198fe0..582854d870617970e18ea5efbeb4dba2c11c7bb6 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMHandlerFactory.java
@@ -38,13 +38,15 @@ class SAMHandlerFactory {
      * @throws SAMException if the connection handshake (HELLO message) was malformed
      * @return A SAM protocol handler, or null if the client closed before the handshake
      */
-    public static SAMHandler createSAMHandler(SocketChannel s, Properties i2cpProps) throws SAMException {
+    public static SAMHandler createSAMHandler(SocketChannel s, Properties i2cpProps,
+                                              SAMBridge parent) throws SAMException {
         StringTokenizer tok;
         Log log = I2PAppContext.getGlobalContext().logManager().getLog(SAMHandlerFactory.class);
 
         try {
             Socket sock = s.socket();
             sock.setSoTimeout(HELLO_TIMEOUT);
+            sock.setKeepAlive(true);
             String line = DataHelper.readLine(sock.getInputStream());
             sock.setSoTimeout(0);
             if (line == null) {
@@ -103,13 +105,13 @@ class SAMHandlerFactory {
         try {
             switch (verMajor) {
             case 1:
-                handler = new SAMv1Handler(s, verMajor, verMinor, i2cpProps);
+                handler = new SAMv1Handler(s, verMajor, verMinor, i2cpProps, parent);
                 break;
             case 2:
-                handler = new SAMv2Handler(s, verMajor, verMinor, i2cpProps);
+                handler = new SAMv2Handler(s, verMajor, verMinor, i2cpProps, parent);
                 break;
             case 3:
-            	handler = new SAMv3Handler(s, verMajor, verMinor, i2cpProps);
+            	handler = new SAMv3Handler(s, verMajor, verMinor, i2cpProps, parent);
             	break;
             default:
                 log.error("BUG! Trying to initialize the wrong SAM version!");
diff --git a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
index dbeec9eda7b90a1c60f0b1b2b3339809b6720cef..e8e502da8b2c5b5cf51cbc5b01343f6b68fd52d2 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMMessageSession.java
@@ -9,6 +9,7 @@ package net.i2p.sam;
  */
 
 import java.io.ByteArrayInputStream;
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
@@ -31,7 +32,7 @@ import net.i2p.util.Log;
  *
  * @author human
  */
-abstract class SAMMessageSession {
+abstract class SAMMessageSession implements Closeable {
 
     protected final Log _log;
     private I2PSession session;
@@ -72,6 +73,7 @@ abstract class SAMMessageSession {
 
         handler = new SAMMessageSessionHandler(destStream, props);
 
+        // FIXME don't start threads in constructors
         Thread t = new I2PAppThread(handler, "SAMMessageSessionHandler");
         t.start();
     }
@@ -125,7 +127,6 @@ abstract class SAMMessageSession {
 
     /**
      * Close a SAM message-based session.
-     *
      */
     public void close() {
         handler.stopRunning();
diff --git a/apps/sam/java/src/net/i2p/sam/SAMUtils.java b/apps/sam/java/src/net/i2p/sam/SAMUtils.java
index 7adaadf7b5a087c5808478dd90c3e7d35522c539..e1e52f4fc4c1dead45aff0f3231fe043b2ce725d 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMUtils.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMUtils.java
@@ -212,6 +212,7 @@ class SAMUtils {
     }
 
     /* Dump a Properties object in an human-readable form */
+/****
     private static String dumpProperties(Properties props) {
         StringBuilder builder = new StringBuilder();
         String key, val;
@@ -231,6 +232,7 @@ class SAMUtils {
         
         return builder.toString();
     }
+****/
     
 /****
     public static void main(String args[]) {
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java b/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java
index 3189f87e36722be2b675b6b9ce18168ec1c6af8b..588d5f5e5786d0c6d3e228ec1949cd84f4abcaf5 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv1Handler.java
@@ -60,8 +60,9 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
      * @throws SAMException
      * @throws IOException 
      */
-    public SAMv1Handler(SocketChannel s, int verMajor, int verMinor) throws SAMException, IOException {
-        this(s, verMajor, verMinor, new Properties());
+    public SAMv1Handler(SocketChannel s, int verMajor, int verMinor,
+                        SAMBridge parent) throws SAMException, IOException {
+        this(s, verMajor, verMinor, new Properties(), parent);
     }
     /**
      * Create a new SAM version 1 handler.  This constructor expects
@@ -75,13 +76,14 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
      * @throws SAMException
      * @throws IOException 
      */
-    public SAMv1Handler(SocketChannel s, int verMajor, int verMinor, Properties i2cpProps) throws SAMException, IOException {
-        super(s, verMajor, verMinor, i2cpProps);
+    public SAMv1Handler(SocketChannel s, int verMajor, int verMinor,
+                        Properties i2cpProps, SAMBridge parent) throws SAMException, IOException {
+        super(s, verMajor, verMinor, i2cpProps, parent);
         _id = __id.incrementAndGet();
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("SAM version 1 handler instantiated");
 
-    if ( ! verifVersion() ) {
+        if ( ! verifVersion() ) {
             throw new SAMException("BUG! Wrong protocol version!");
         }
     }
@@ -183,8 +185,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
             }
         } catch (IOException e) {
             if (_log.shouldLog(Log.DEBUG))
-                _log.debug("Caught IOException ("
-                       + e.getMessage() + ") for message [" + msg + "]", e);
+                _log.debug("Caught IOException for message [" + msg + "]", e);
         } catch (Exception e) {
             _log.error("Unexpected exception for message [" + msg + "]", e);
         } finally {
@@ -193,7 +194,8 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
             try {
                 closeClientSocket();
             } catch (IOException e) {
-                _log.error("Error closing socket: " + e.getMessage());
+                if (_log.shouldWarn())
+                    _log.warn("Error closing socket", e);
             }
             if (getRawSession() != null) {
             	getRawSession().close();
@@ -797,7 +799,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
     public void receiveRawBytes(byte data[]) throws IOException {
         if (getRawSession() == null) {
             _log.error("BUG! Received raw bytes, but session is null!");
-            throw new NullPointerException("BUG! RAW session is null!");
+            return;
         }
 
         ByteArrayOutputStream msg = new ByteArrayOutputStream();
@@ -818,7 +820,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
 
         if (getRawSession() == null) {
             _log.error("BUG! Got raw receiving stop, but session is null!");
-            throw new NullPointerException("BUG! RAW session is null!");
+            return;
         }
 
         try {
@@ -833,7 +835,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
     public void receiveDatagramBytes(Destination sender, byte data[]) throws IOException {
         if (getDatagramSession() == null) {
             _log.error("BUG! Received datagram bytes, but session is null!");
-            throw new NullPointerException("BUG! DATAGRAM session is null!");
+            return;
         }
 
         ByteArrayOutputStream msg = new ByteArrayOutputStream();
@@ -855,7 +857,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
 
         if (getDatagramSession() == null) {
             _log.error("BUG! Got datagram receiving stop, but session is null!");
-            throw new NullPointerException("BUG! DATAGRAM session is null!");
+            return;
         }
 
         try {
@@ -873,7 +875,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
         if ( getStreamSession() == null )
         {
             _log.error ( "BUG! Want to answer to stream SEND, but session is null!" );
-            throw new NullPointerException ( "BUG! STREAM session is null!" );
+            return;
         }
     
         if ( !writeString ( "STREAM SEND ID=" + id
@@ -891,7 +893,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
         if ( getStreamSession() == null )
         {
             _log.error ( "BUG! Stream outgoing buffer is free, but session is null!" );
-            throw new NullPointerException ( "BUG! STREAM session is null!" );
+            return;
         }
     
         if ( !writeString ( "STREAM READY_TO_SEND ID=" + id + "\n" ) )
@@ -904,7 +906,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
     public void notifyStreamIncomingConnection(int id, Destination d) throws IOException {
         if (getStreamSession() == null) {
             _log.error("BUG! Received stream connection, but session is null!");
-            throw new NullPointerException("BUG! STREAM session is null!");
+            return;
         }
 
         if (!writeString("STREAM CONNECTED DESTINATION="
@@ -914,18 +916,16 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
         }
     }
 
+    /** @param msg may be null */
     public void notifyStreamOutgoingConnection ( int id, String result, String msg ) throws IOException
     {
         if ( getStreamSession() == null )
         {
             _log.error ( "BUG! Received stream connection, but session is null!" );
-            throw new NullPointerException ( "BUG! STREAM session is null!" );
+            return;
         }
 
-        String msgString = "" ;
-
-        if ( msg != null ) msgString = " MESSAGE=\"" + msg + "\"";
-
+        String msgString = createMessageString(msg);
         if ( !writeString ( "STREAM STATUS RESULT="
                         + result
                         + " ID=" + id
@@ -935,11 +935,36 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
             throw new IOException ( "Error notifying connection to SAM client" );
         }
     }
+
+    /**
+     *  Create a string to be appended to a status.
+     *
+     *  @param msg may be null
+     *  @return non-null, "" if msg is null, MESSAGE=msg or MESSAGE="msg a b c"
+     *           with leading space if msg is non-null
+     *  @since 0.9.20
+     */
+    protected static String createMessageString(String msg) {
+        String rv;
+        if ( msg != null ) {
+            msg = msg.replace("\n", " ");
+            msg = msg.replace("\r", " ");
+            if (!msg.startsWith("\"")) {
+                msg = msg.replace("\"", "");
+                if (msg.contains(" ") || msg.contains("\t"))
+                    msg = '"' + msg + '"';
+            }
+            rv = " MESSAGE=" + msg;
+        } else {
+            rv = "";
+        }
+        return rv;
+    }
   
     public void receiveStreamBytes(int id, ByteBuffer data) throws IOException {
         if (getStreamSession() == null) {
             _log.error("Received stream bytes, but session is null!");
-            throw new NullPointerException("BUG! STREAM session is null!");
+            return;
         }
 
         String msgText = "STREAM RECEIVED ID=" + id +" SIZE=" + data.remaining() + "\n";
@@ -956,16 +981,15 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
         }
     }
 
+    /** @param msg may be null */
     public void notifyStreamDisconnection(int id, String result, String msg) throws IOException {
         if (getStreamSession() == null) {
             _log.error("BUG! Received stream disconnection, but session is null!");
-            throw new NullPointerException("BUG! STREAM session is null!");
+            return;
         }
 
-        // FIXME: msg should be escaped!
-        if (!writeString("STREAM CLOSED ID=" + id + " RESULT=" + result
-                         + (msg == null ? "" : (" MESSAGE=" + msg))
-                         + "\n")) {
+        String msgString = createMessageString(msg);
+        if (!writeString("STREAM CLOSED ID=" + id + " RESULT=" + result + msgString + '\n')) {
             throw new IOException("Error notifying disconnection to SAM client");
         }
     }
@@ -976,7 +1000,7 @@ class SAMv1Handler extends SAMHandler implements SAMRawReceiver, SAMDatagramRece
 
         if (getStreamSession() == null) {
             _log.error("BUG! Got stream receiving stop, but session is null!");
-            throw new NullPointerException("BUG! STREAM session is null!");
+            return;
         }
 
         try {
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv2Handler.java b/apps/sam/java/src/net/i2p/sam/SAMv2Handler.java
index d96d82cb13841c23606ccaace397cbdec6957e9e..5eec29e1ea32a41b582cd6e04abcddacefe4ed5d 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv2Handler.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv2Handler.java
@@ -34,9 +34,10 @@ class SAMv2Handler extends SAMv1Handler implements SAMRawReceiver, SAMDatagramRe
 		 * @param verMajor SAM major version to manage (should be 2)
 		 * @param verMinor SAM minor version to manage
 		 */
-		public SAMv2Handler ( SocketChannel s, int verMajor, int verMinor ) throws SAMException, IOException
+		public SAMv2Handler(SocketChannel s, int verMajor, int verMinor,
+		                     SAMBridge parent) throws SAMException, IOException
 		{
-			this ( s, verMajor, verMinor, new Properties() );
+			this(s, verMajor, verMinor, new Properties(), parent);
 		}
 
 		/**
@@ -50,9 +51,10 @@ class SAMv2Handler extends SAMv1Handler implements SAMRawReceiver, SAMDatagramRe
 		 * @param i2cpProps properties to configure the I2CP connection (host, port, etc)
 		 */
 
-		public SAMv2Handler ( SocketChannel s, int verMajor, int verMinor, Properties i2cpProps ) throws SAMException, IOException
+		public SAMv2Handler(SocketChannel s, int verMajor, int verMinor,
+		                    Properties i2cpProps, SAMBridge parent) throws SAMException, IOException
 		{
-			super ( s, verMajor, verMinor, i2cpProps );
+			super(s, verMajor, verMinor, i2cpProps, parent);
 		}
 		
 		@Override
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java b/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java
index fd3b44a2055e3a860f4395f42296e1108c1f120d..5e75dcf661d485c1fa1b94e8a54683b122dfa849 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv3Handler.java
@@ -48,8 +48,8 @@ class SAMv3Handler extends SAMv1Handler
 	
 	private Session session;
 	public static final SessionsDB sSessionsHash = new SessionsDB();
-	private boolean stolenSocket;
-	private boolean streamForwardingSocket;
+	private volatile boolean stolenSocket;
+	private volatile boolean streamForwardingSocket;
 
 	
 	interface Session {
@@ -67,9 +67,10 @@ class SAMv3Handler extends SAMv1Handler
 	 * @param verMajor SAM major version to manage (should be 3)
 	 * @param verMinor SAM minor version to manage
 	 */
-	public SAMv3Handler ( SocketChannel s, int verMajor, int verMinor ) throws SAMException, IOException
+	public SAMv3Handler(SocketChannel s, int verMajor, int verMinor,
+                            SAMBridge parent) throws SAMException, IOException
 	{
-		this ( s, verMajor, verMinor, new Properties() );
+		this(s, verMajor, verMinor, new Properties(), parent);
 	}
 
 	/**
@@ -83,9 +84,10 @@ class SAMv3Handler extends SAMv1Handler
 	 * @param i2cpProps properties to configure the I2CP connection (host, port, etc)
 	 */
 
-	public SAMv3Handler ( SocketChannel s, int verMajor, int verMinor, Properties i2cpProps ) throws SAMException, IOException
+	public SAMv3Handler(SocketChannel s, int verMajor, int verMinor,
+	                    Properties i2cpProps, SAMBridge parent) throws SAMException, IOException
 	{
-		super ( s, verMajor, verMinor, i2cpProps );
+		super(s, verMajor, verMinor, i2cpProps, parent);
 		if (_log.shouldLog(Log.DEBUG))
 			_log.debug("SAM version 3 handler instantiated");
 	}
@@ -214,6 +216,9 @@ class SAMv3Handler extends SAMv1Handler
 		}
 	}
 	
+	/**
+	 *  The values in the SessionsDB
+	 */
 	public static class SessionRecord
 	{
 		private final String m_dest ;
@@ -266,11 +271,14 @@ class SAMv3Handler extends SAMv1Handler
 		}
 	}
 
+	/**
+	 *  basically a HashMap from String to SessionRecord
+	 */
 	public static class SessionsDB
 	{
 		private static final long serialVersionUID = 0x1;
 
-		static class ExistingIdException   extends Exception {
+		static class ExistingIdException extends Exception {
 			private static final long serialVersionUID = 0x1;
 		}
 
@@ -284,6 +292,7 @@ class SAMv3Handler extends SAMv1Handler
 			map = new HashMap<String, SessionRecord>() ;
 		}
 
+		/** @return success */
 		synchronized public boolean put( String nick, SessionRecord session )
 			throws ExistingIdException, ExistingDestException
 		{
@@ -305,17 +314,12 @@ class SAMv3Handler extends SAMv1Handler
 				return false ;
 		}
 
+		/** @return true if removed */
 		synchronized public boolean del( String nick )
 		{
-			SessionRecord rec = map.get(nick);
-			
-			if ( rec!=null ) {
-				map.remove(nick);
-				return true ;
-			}
-			else
-				return false ;
+			return map.remove(nick) != null;
 		}
+
 		synchronized public SessionRecord get(String nick)
 		{
 			return map.get(nick);
@@ -332,12 +336,23 @@ class SAMv3Handler extends SAMv1Handler
 		return this.socket.socket().getInetAddress().getHostAddress();
 	}
 	
+	/**
+	 *  For SAMv3StreamSession connect and accept
+	 */
 	public void stealSocket()
 	{
 		stolenSocket = true ;
 		this.stopHandling();
 	}
 	
+	/**
+	 *  For SAMv3StreamSession
+	 *  @since 0.9.20
+	 */
+	SAMBridge getBridge() {
+		return bridge;
+	}
+	
 	public void handle() {
 		String msg = null;
 		String domain = null;
@@ -348,7 +363,7 @@ class SAMv3Handler extends SAMv1Handler
 
 		this.thread.setName("SAMv3Handler " + _id);
 		if (_log.shouldLog(Log.DEBUG))
-			_log.debug("SAM handling started");
+			_log.debug("SAMv3 handling started");
 
 		try {
 			InputStream in = getClientSocket().socket().getInputStream();
@@ -422,8 +437,7 @@ class SAMv3Handler extends SAMv1Handler
 			}
 		} catch (IOException e) {
 			if (_log.shouldLog(Log.DEBUG))
-				_log.debug("Caught IOException ("
-					+ e.getMessage() + ") for message [" + msg + "]", e);
+				_log.debug("Caught IOException for message [" + msg + "]", e);
 		} catch (Exception e) {
 			_log.error("Unexpected exception for message [" + msg + "]", e);
 		} finally {
@@ -435,7 +449,8 @@ class SAMv3Handler extends SAMv1Handler
 				try {
 					closeClientSocket();
 				} catch (IOException e) {
-					_log.error("Error closing socket: " + e.getMessage());
+					if (_log.shouldWarn())
+						_log.warn("Error closing socket", e);
 				}
 			}
 			if (streamForwardingSocket) 
@@ -444,20 +459,40 @@ class SAMv3Handler extends SAMv1Handler
 					try {
 						((SAMv3StreamSession)streamSession).stopForwardingIncoming();
 					} catch (SAMException e) {
-						_log.error("Error while stopping forwarding connections: " + e.getMessage());
+						if (_log.shouldWarn())
+							_log.warn("Error while stopping forwarding connections", e);
 					} catch (InterruptedIOException e) {
-						_log.error("Interrupted while stopping forwarding connections: " + e.getMessage());
+						if (_log.shouldWarn())
+							_log.warn("Interrupted while stopping forwarding connections", e);
 					}
 				}
 			}
-		
-
-
 			die();
 		}
 	}
 
-	protected void die() {
+	/**
+	 * Stop the SAM handler, close the socket,
+	 * unregister with the bridge.
+         *
+         * Overridden to not close the client socket if stolen.
+         *
+         * @since 0.9.20
+	 */
+	@Override
+	public void stopHandling() {
+	    synchronized (stopLock) {
+	        stopHandler = true;
+	    }
+	    if (!stolenSocket) {
+		try {
+		    closeClientSocket();
+		} catch (IOException e) {}
+	    }
+	    bridge.unregister(this);
+	}
+
+	private void die() {
 		SessionRecord rec = null ;
 		
 		if (session!=null) {
@@ -813,20 +848,15 @@ class SAMv3Handler extends SAMv1Handler
 	}
 	
 
-	public void notifyStreamResult(boolean verbose, String result, String message) throws IOException
-    {
+	public void notifyStreamResult(boolean verbose, String result, String message) throws IOException {
 		if (!verbose) return ;
-		
-		String out = "STREAM STATUS RESULT="+result;
-		if (message!=null)
-			out = out + " MESSAGE=\"" + message + "\"";
-		out = out + '\n';
+		String msgString = createMessageString(message);
+		String out = "STREAM STATUS RESULT=" + result + msgString + '\n';
         
-        if ( !writeString ( out ) )
-        {
-            throw new IOException ( "Error notifying connection to SAM client" );
-        }
-    }
+		if (!writeString(out)) {
+			throw new IOException ( "Error notifying connection to SAM client" );
+		}
+	}
 
 	public void notifyStreamIncomingConnection(Destination d) throws IOException {
 	    if (getStreamSession() == null) {
diff --git a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java
index 99854637e78bcee448c1ae9690ad880f4fdec854..7770d4075e251436712742e20721df201e535ad8 100644
--- a/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java
+++ b/apps/sam/java/src/net/i2p/sam/SAMv3StreamSession.java
@@ -74,6 +74,7 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 
 	    /**
 	     * Connect the SAM STREAM session to the specified Destination
+	     * for a single connection, using the socket stolen from the handler.
 	     *
 	     * @param handler The handler that communicates with the requesting client
 	     * @param dest Base64-encoded Destination to connect to
@@ -87,7 +88,7 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	     * @throws IOException 
 	     */
 	    public void connect ( SAMv3Handler handler, String dest, Properties props ) 
-	    throws I2PException, ConnectException, NoRouteToHostException, 
+	        throws I2PException, ConnectException, NoRouteToHostException, 
 	    		DataFormatException, InterruptedIOException, IOException {
 
 	    	boolean verbose = (props.getProperty("SILENT", "false").equals("false"));
@@ -117,13 +118,17 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	        WritableByteChannel toClient   = handler.getClientSocket();
 	        WritableByteChannel toI2P      = Channels.newChannel(i2ps.getOutputStream());
 	        
-	        (new Thread(rec.getThreadGroup(), new I2PAppThread(new Pipe(fromClient,toI2P, "SAMPipeClientToI2P"), "SAMPipeClientToI2P"), "SAMPipeClientToI2P")).start();
-	        (new Thread(rec.getThreadGroup(), new I2PAppThread(new Pipe(fromI2P,toClient, "SAMPipeI2PToClient"), "SAMPipeI2PToClient"), "SAMPipeI2PToClient")).start();
-	        
+		SAMBridge bridge = handler.getBridge();
+		(new I2PAppThread(rec.getThreadGroup(),
+		            new Pipe(fromClient, toI2P, bridge),
+		            "ConnectV3 SAMPipeClientToI2P")).start();
+		(new I2PAppThread(rec.getThreadGroup(),
+		            new Pipe(fromI2P, toClient, bridge),
+		            "ConnectV3 SAMPipeI2PToClient")).start();
 	    }
 
 	    /**
-	     * Accept an incoming STREAM
+	     * Accept a single incoming STREAM on the socket stolen from the handler.
 	     *
 	     * @param handler The handler that communicates with the requesting client
 	     * @param verbose If true, SAM will send the Base64-encoded peer Destination of an
@@ -150,8 +155,7 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	    		this.socketServer = this.socketMgr.getServerSocket();
 	    	}
 	    	
-			I2PSocket i2ps;
-			i2ps = this.socketServer.accept();
+		I2PSocket i2ps = this.socketServer.accept();
 
 	    	synchronized( this.socketServerLock )
 	    	{
@@ -159,11 +163,11 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	    	}
 	    	
 	    	SAMv3Handler.SessionRecord rec = SAMv3Handler.sSessionsHash.get(nick);
-	        
-	        if ( rec==null || i2ps==null ) throw new InterruptedIOException() ;
-	        
-			if (verbose)
-				handler.notifyStreamIncomingConnection(i2ps.getPeerDestination()) ;
+
+		if ( rec==null || i2ps==null ) throw new InterruptedIOException() ;
+
+		if (verbose)
+			handler.notifyStreamIncomingConnection(i2ps.getPeerDestination()) ;
 
 	        handler.stealSocket() ;
 	        ReadableByteChannel fromClient = handler.getClientSocket();
@@ -171,8 +175,13 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	        WritableByteChannel toClient   = handler.getClientSocket();
 	        WritableByteChannel toI2P      = Channels.newChannel(i2ps.getOutputStream());
 	        
-	        (new Thread(rec.getThreadGroup(), new I2PAppThread(new Pipe(fromClient,toI2P, "SAMPipeClientToI2P"), "SAMPipeClientToI2P"), "SAMPipeClientToI2P")).start();
-	        (new Thread(rec.getThreadGroup(), new I2PAppThread(new Pipe(fromI2P,toClient, "SAMPipeI2PToClient"), "SAMPipeI2PToClient"), "SAMPipeI2PToClient")).start();	        
+		SAMBridge bridge = handler.getBridge();
+		(new I2PAppThread(rec.getThreadGroup(),
+		            new Pipe(fromClient, toI2P, bridge),
+		            "AcceptV3 SAMPipeClientToI2P")).start();
+		(new I2PAppThread(rec.getThreadGroup(),
+		            new Pipe(fromI2P, toClient, bridge),
+		            "AcceptV3 SAMPipeI2PToClient")).start();
 	    }
 
 	    
@@ -210,10 +219,10 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	    	}
 	    	
 	    	SocketForwarder forwarder = new SocketForwarder(host, port, this, verbose);
-	    	(new Thread(rec.getThreadGroup(), new I2PAppThread(forwarder, "SAMStreamForwarder"), "SAMStreamForwarder")).start();
+	    	(new I2PAppThread(rec.getThreadGroup(), forwarder, "SAMV3StreamForwarder")).start();
 	    }
 	    
-	    private static class SocketForwarder extends Thread
+	    private static class SocketForwarder implements Runnable
 	    {
 	    	private final String host;
 	    	private final int port;
@@ -254,6 +263,7 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 
 	    			// build pipes between both sockets
 	    			try {
+					clientServerSock.socket().setKeepAlive(true);
 	    				if (this.verbose)
 	    					SAMv3Handler.notifyStreamIncomingConnection(
 	    							clientServerSock, i2ps.getPeerDestination());
@@ -261,8 +271,10 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	    				ReadableByteChannel fromI2P    = Channels.newChannel(i2ps.getInputStream());
 	    				WritableByteChannel toClient   = clientServerSock ;
 	    				WritableByteChannel toI2P      = Channels.newChannel(i2ps.getOutputStream());
-	    				(new I2PAppThread(new Pipe(fromClient,toI2P, "SAMPipeClientToI2P"), "SAMPipeClientToI2P")).start();
-	    				(new I2PAppThread(new Pipe(fromI2P,toClient, "SAMPipeI2PToClient"), "SAMPipeI2PToClient")).start();
+	    				(new I2PAppThread(new Pipe(fromClient, toI2P, null),
+					                  "ForwardV3 SAMPipeClientToI2P")).start();
+	    				(new I2PAppThread(new Pipe(fromI2P,toClient, null),
+					                  "ForwardV3 SAMPipeI2PToClient")).start();
 
 	    			} catch (IOException e) {
 	    				try {
@@ -277,48 +289,62 @@ class SAMv3StreamSession  extends SAMStreamSession implements SAMv3Handler.Sessi
 	    	}
 	    }
 
-	    private static class Pipe extends Thread
+	    private static class Pipe implements Runnable, Handler
 	    {
 	    	private final ReadableByteChannel in  ;
 	    	private final WritableByteChannel out ;
 	    	private final ByteBuffer buf ;
+		private final SAMBridge bridge;
 	    	
-	    	public Pipe(ReadableByteChannel in, WritableByteChannel out, String name)
+		/**
+		 *  @param bridge may be null
+		 */
+	    	public Pipe(ReadableByteChannel in, WritableByteChannel out, SAMBridge bridge)
 	    	{
-	    		super(name);
 	    		this.in  = in ;
 	    		this.out = out ;
 	    		this.buf = ByteBuffer.allocate(BUFFER_SIZE) ;
+			this.bridge = bridge;
 	    	}
 	    	
-	    	public void run()
-	    	{
-    			try {
-    				while (!Thread.interrupted() && (in.read(buf)>=0 || buf.position() != 0)) {
-	    				 buf.flip();
-	    				 out.write(buf);
-	    				 buf.compact();
-	    			}
-	    		}
-				catch (IOException e)
-				{
-					this.interrupt();
+		public void run() {
+			if (bridge != null)
+				bridge.register(this);
+			try {
+				while (!Thread.interrupted() && (in.read(buf)>=0 || buf.position() != 0)) {
+					 buf.flip();
+					 out.write(buf);
+					 buf.compact();
 				}
-    			try {
-    				in.close();
-    			}
-    			catch (IOException e) {}
-    			try {
-    				buf.flip();
-    				while (buf.hasRemaining())
-    					out.write(buf);
-    			}
-    			catch (IOException e) {}
-    			try {
-    				out.close();
-    			}
-    			catch (IOException e) {}
-	    	}
+			} catch (IOException ioe) {
+				// ignore
+			} finally {
+				try {
+					in.close();
+				} catch (IOException e) {}
+				try {
+					buf.flip();
+					while (buf.hasRemaining()) {
+						out.write(buf);
+					}
+				} catch (IOException e) {}
+				try {
+					out.close();
+				} catch (IOException e) {}
+				if (bridge != null)
+					bridge.unregister(this);
+			}
+		}
+
+		/**
+		 *  Handler interface
+		 *  @since 0.9.20
+		 */
+		public void stopHandling() {
+			try {
+				in.close();
+			} catch (IOException e) {}
+		}
 	    }
 	    
 	    public I2PServerSocket getSocketServer()
diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
index 0421a64580590fdec99859cd2cc4731a1de44960..f39394901754eae7c1dbbb8cb6453a8722b84866 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMReader.java
@@ -94,7 +94,7 @@ public class SAMReader {
                     _log.error("Error reading from SAM", ioe);
                 }
                 
-                String line = new String(baos.toByteArray());
+                String line = DataHelper.getUTF8(baos.toByteArray());
                 baos.reset();
                 
                 if (line == null) {
diff --git a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
index a0d82d777e60a7d81943f58f5a04645b652cbd75..2ce8b3b02f81f86ee9a48c9f5dd2dbf290559a0c 100644
--- a/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
+++ b/apps/sam/java/src/net/i2p/sam/client/SAMStreamSend.java
@@ -180,7 +180,7 @@ public class SAMStreamSend {
                 byte dest[] = new byte[1024];
                 int read = DataHelper.read(fin, dest);
 
-                _remoteDestination = new String(dest, 0, read);
+                _remoteDestination = DataHelper.getUTF8(dest, 0, read);
                 synchronized (_remotePeers) {
                     _connectionId = _remotePeers.size() + 1;
                     _remotePeers.put(Integer.valueOf(_connectionId), Sender.this);
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnThrottler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnThrottler.java
index 51941d219aab8b0469e344fb757c6c8aaf6af35b..3b69c11375895f78674e26fa36536a3c06ed882c 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnThrottler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnThrottler.java
@@ -25,7 +25,7 @@ class ConnThrottler {
      * @param totalMax for all peers, 0 for unlimited
      * @param period ms
      */
-    ConnThrottler(int max, int totalMax, long period) {
+    ConnThrottler(int max, int totalMax, long period, SimpleTimer2 timer) {
         _max = max;
         _totalMax = totalMax;
         this.counter = new ObjectCounter<Hash>();
@@ -33,9 +33,9 @@ class ConnThrottler {
         // shorten the initial period by a random amount
         // to prevent correlation across destinations
         // and identification of router startup time
-        SimpleTimer2.getInstance().addPeriodicEvent(new Cleaner(),
-                                                       (period / 2) + RandomSource.getInstance().nextLong(period / 2),
-                                                       period);
+        timer.addPeriodicEvent(new Cleaner(),
+                               (period / 2) + RandomSource.getInstance().nextLong(period / 2),
+                               period);
     }
 
     /*
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
index c27bc9dea142d7e074dbefdb4e91070476f431a6..478afcdb8f368d8de24b59fdb46e3b62bb1f8d8e 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
@@ -28,6 +28,7 @@ class Connection {
     private final I2PAppContext _context;
     private final Log _log;
     private final ConnectionManager _connectionManager;
+    private final I2PSession _session;
     private Destination _remotePeer;
     private final AtomicLong _sendStreamId = new AtomicLong();
     private final AtomicLong _receiveStreamId = new AtomicLong();
@@ -112,12 +113,14 @@ class Connection {
     /**
      *  @param opts may be null
      */
-    public Connection(I2PAppContext ctx, ConnectionManager manager, SchedulerChooser chooser,
+    public Connection(I2PAppContext ctx, ConnectionManager manager,
+                      I2PSession session, SchedulerChooser chooser,
                       SimpleTimer2 timer,
                       PacketQueue queue, ConnectionPacketHandler handler, ConnectionOptions opts,
                       boolean isInbound) {
         _context = ctx;
         _connectionManager = manager;
+        _session = session;
         _chooser = chooser;
         _outboundQueue = queue;
         _handler = handler;
@@ -310,13 +313,13 @@ class Connection {
         // Unconditionally set
         _resetSentOn.set(now);
         if ( (_remotePeer == null) || (_sendStreamId.get() <= 0) ) return;
-        PacketLocal reply = new PacketLocal(_context, _remotePeer);
+        PacketLocal reply = new PacketLocal(_context, _remotePeer, this);
         reply.setFlag(Packet.FLAG_RESET);
         reply.setFlag(Packet.FLAG_SIGNATURE_INCLUDED);
         reply.setSendStreamId(_sendStreamId.get());
         reply.setReceiveStreamId(_receiveStreamId.get());
         // TODO remove this someday, as of 0.9.20 we do not require it
-        reply.setOptionalFrom(_connectionManager.getSession().getMyDestination());
+        reply.setOptionalFrom();
         reply.setLocalPort(_localPort);
         reply.setRemotePort(_remotePort);
         // this just sends the packet - no retries or whatnot
@@ -790,7 +793,7 @@ class Connection {
     private boolean scheduleDisconnectEvent() {
         if (!_disconnectScheduledOn.compareAndSet(0, _context.clock().now()))
             return false;
-        _context.simpleTimer2().addEvent(new DisconnectEvent(), DISCONNECT_TIMEOUT);
+        schedule(new DisconnectEvent(), DISCONNECT_TIMEOUT);
         return true;
     }
 
@@ -805,6 +808,24 @@ class Connection {
         }
     }
     
+    /**
+     *  Called from SchedulerImpl
+     *
+     *  @since 0.9.23 moved here so we can use our timer
+     */
+    public void scheduleConnectionEvent(long msToWait) {
+        schedule(_connectionEvent, msToWait);
+    }
+    
+    /**
+     *  Schedule something on our timer.
+     *
+     *  @since 0.9.23
+     */
+    public void schedule(SimpleTimer.TimedEvent event, long msToWait) {
+        _timer.addEvent(event, msToWait);
+    }
+    
     private boolean _remotePeerSet = false;
     /** who are we talking with
      * @return peer Destination
@@ -874,7 +895,10 @@ class Connection {
      */
     public void setOptions(ConnectionOptions opts) { _options = opts; }
         
-    public I2PSession getSession() { return _connectionManager.getSession(); }
+    /** @since 0.9.21 */
+    public ConnectionManager getConnectionManager() { return _connectionManager; }
+
+    public I2PSession getSession() { return _session; }
     public I2PSocketFull getSocket() { return _socket; }
     public void setSocket(I2PSocketFull socket) { _socket = socket; }
     
@@ -1248,8 +1272,6 @@ class Connection {
         return buf.toString();
     }
 
-    public SimpleTimer.TimedEvent getConnectionEvent() { return _connectionEvent; }
-    
     /**
      * fired to reschedule event notification
      */
@@ -1289,7 +1311,9 @@ class Connection {
         }
         
         public long getNextSendTime() { return _nextSend; }
+
         public void timeReached() { retransmit(); }
+
         /**
          * Retransmit the packet if we need to.  
          *
@@ -1301,7 +1325,7 @@ class Connection {
          *
          * @return true if the packet was sent, false if it was not
          */
-        public boolean retransmit() {
+        private boolean retransmit() {
             if (_packet.getAckTime() > 0) 
                 return false;
             
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionDataReceiver.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionDataReceiver.java
index 8568e7c69b0a131b00799c971a83608da604c139..f103e6a3078741af77ea42f982cd568f2e36f492 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionDataReceiver.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionDataReceiver.java
@@ -204,7 +204,7 @@ class ConnectionDataReceiver implements MessageOutputStream.DataReceiver {
         //if ( (!ackOnly) && (packet.getSequenceNum() <= 0) ) {
         if (isFirst) {
             packet.setFlag(Packet.FLAG_SYNCHRONIZE);
-            packet.setOptionalFrom(con.getSession().getMyDestination());
+            packet.setOptionalFrom();
             packet.setOptionalMaxSize(con.getOptions().getMaxMessageSize());
         }
         packet.setLocalPort(con.getLocalPort());
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionHandler.java
index 3b13ec97fd685912e84d64fd566934c02e071c1b..b92648d0b86a6dbddd0e34db0e1de2432dcc852e 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionHandler.java
@@ -9,6 +9,7 @@ import net.i2p.I2PAppContext;
 import net.i2p.data.Destination;
 import net.i2p.util.Log;
 import net.i2p.util.SimpleTimer;
+import net.i2p.util.SimpleTimer2;
 
 /**
  * Receive new connection attempts
@@ -23,6 +24,7 @@ class ConnectionHandler {
     private final Log _log;
     private final ConnectionManager _manager;
     private final LinkedBlockingQueue<Packet> _synQueue;
+    private final SimpleTimer2 _timer;
     private volatile boolean _active;
     private int _acceptTimeout;
     
@@ -37,10 +39,11 @@ class ConnectionHandler {
     private static final int MAX_QUEUE_SIZE = 64;
     
     /** Creates a new instance of ConnectionHandler */
-    public ConnectionHandler(I2PAppContext context, ConnectionManager mgr) {
+    public ConnectionHandler(I2PAppContext context, ConnectionManager mgr, SimpleTimer2 timer) {
         _context = context;
         _log = context.logManager().getLog(ConnectionHandler.class);
         _manager = mgr;
+        _timer = timer;
         _synQueue = new LinkedBlockingQueue<Packet>(MAX_QUEUE_SIZE);
         _acceptTimeout = DEFAULT_ACCEPT_TIMEOUT;
     }
@@ -96,7 +99,7 @@ class ConnectionHandler {
         // also check if expiration of the head is long past for overload detection with peek() ?
         boolean success = _synQueue.offer(packet); // fail immediately if full
         if (success) {
-            _context.simpleTimer2().addEvent(new TimeoutSyn(packet), _acceptTimeout);
+            _timer.addEvent(new TimeoutSyn(packet), _acceptTimeout);
         } else {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Dropping new SYN request, as the queue is full");
@@ -243,14 +246,14 @@ class ConnectionHandler {
                 _log.warn("Received a spoofed SYN packet: they said they were " + packet.getOptionalFrom());
             return;
         }
-        PacketLocal reply = new PacketLocal(_context, packet.getOptionalFrom());
+        PacketLocal reply = new PacketLocal(_context, packet.getOptionalFrom(), packet.getSession());
         reply.setFlag(Packet.FLAG_RESET);
         reply.setFlag(Packet.FLAG_SIGNATURE_INCLUDED);
         reply.setAckThrough(packet.getSequenceNum());
         reply.setSendStreamId(packet.getReceiveStreamId());
         reply.setReceiveStreamId(0);
         // TODO remove this someday, as of 0.9.20 we do not require it
-        reply.setOptionalFrom(_manager.getSession().getMyDestination());
+        reply.setOptionalFrom();
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("Sending RST: " + reply + " because of " + packet);
         // this just sends the packet - no retries or whatnot
@@ -292,6 +295,7 @@ class ConnectionHandler {
         public static final int POISON_MAX_DELAY_REQUEST = Packet.MAX_DELAY_REQUEST + 1;
 
         public PoisonPacket() {
+            super(null);
             setOptionalDelay(POISON_MAX_DELAY_REQUEST);
         }
     }
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java
index 950670efc5c9d77fe04c9286f112faadee7ed83f..5861be6d1bada9d40979430a549ac0cdb1015e55 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionManager.java
@@ -74,11 +74,11 @@ class ConnectionManager {
         _pendingPings = new ConcurrentHashMap<Long,PingRequest>(4);
         _messageHandler = new MessageHandler(_context, this);
         _packetHandler = new PacketHandler(_context, this);
-        _connectionHandler = new ConnectionHandler(_context, this);
         _schedulerChooser = new SchedulerChooser(_context);
         _conPacketHandler = new ConnectionPacketHandler(_context);
         _timer = new RetransmissionTimer(_context, "Streaming Timer " +
                                          session.getMyDestination().calculateHash().toBase64().substring(0, 4));
+        _connectionHandler = new ConnectionHandler(_context, this, _timer);
         _tcbShare = new TCBShare(_context, _timer);
         // PROTO_ANY is for backward compatibility (pre-0.7.1)
         // TODO change proto to PROTO_STREAMING someday.
@@ -88,7 +88,7 @@ class ConnectionManager {
         // As of 0.9.1, listen on configured port (default 0 = all)
         int protocol = defaultOptions.getEnforceProtocol() ? I2PSession.PROTO_STREAMING : I2PSession.PROTO_ANY;
         _session.addMuxedSessionListener(_messageHandler, protocol, defaultOptions.getLocalPort());
-        _outboundQueue = new PacketQueue(_context, _session, this);
+        _outboundQueue = new PacketQueue(_context, _timer);
         _recentlyClosed = new LHMCache<Long, Object>(32);
         /** Socket timeout for accept() */
         _soTimeout = -1;
@@ -178,21 +178,24 @@ class ConnectionManager {
             if ((_defaultOptions.getMaxConnsPerMinute() > 0 || _defaultOptions.getMaxTotalConnsPerMinute() > 0) &&
                 _minuteThrottler == null) {
                _context.statManager().createRateStat("stream.con.throttledMinute", "Dropped for conn limit", "Stream", new long[] { 5*60*1000 });
-               _minuteThrottler = new ConnThrottler(_defaultOptions.getMaxConnsPerMinute(), _defaultOptions.getMaxTotalConnsPerMinute(), 60*1000);
+               _minuteThrottler = new ConnThrottler(_defaultOptions.getMaxConnsPerMinute(), _defaultOptions.getMaxTotalConnsPerMinute(),
+                                                    60*1000, _timer);
             } else if (_minuteThrottler != null) {
                _minuteThrottler.updateLimits(_defaultOptions.getMaxConnsPerMinute(), _defaultOptions.getMaxTotalConnsPerMinute());
             }
             if ((_defaultOptions.getMaxConnsPerHour() > 0 || _defaultOptions.getMaxTotalConnsPerHour() > 0) &&
                 _hourThrottler == null) {
                _context.statManager().createRateStat("stream.con.throttledHour", "Dropped for conn limit", "Stream", new long[] { 5*60*1000 });
-               _hourThrottler = new ConnThrottler(_defaultOptions.getMaxConnsPerHour(), _defaultOptions.getMaxTotalConnsPerHour(), 60*60*1000);
+               _hourThrottler = new ConnThrottler(_defaultOptions.getMaxConnsPerHour(), _defaultOptions.getMaxTotalConnsPerHour(),
+                                                  60*60*1000, _timer);
             } else if (_hourThrottler != null) {
                _hourThrottler.updateLimits(_defaultOptions.getMaxConnsPerHour(), _defaultOptions.getMaxTotalConnsPerHour());
             }
             if ((_defaultOptions.getMaxConnsPerDay() > 0 || _defaultOptions.getMaxTotalConnsPerDay() > 0) &&
                 _dayThrottler == null) {
                _context.statManager().createRateStat("stream.con.throttledDay", "Dropped for conn limit", "Stream", new long[] { 5*60*1000 });
-               _dayThrottler = new ConnThrottler(_defaultOptions.getMaxConnsPerDay(), _defaultOptions.getMaxTotalConnsPerDay(), 24*60*60*1000);
+               _dayThrottler = new ConnThrottler(_defaultOptions.getMaxConnsPerDay(), _defaultOptions.getMaxTotalConnsPerDay(),
+                                                 24*60*60*1000, _timer);
             } else if (_dayThrottler != null) {
                _dayThrottler.updateLimits(_defaultOptions.getMaxConnsPerDay(), _defaultOptions.getMaxTotalConnsPerDay());
             }
@@ -214,7 +217,8 @@ class ConnectionManager {
         ConnectionOptions opts = new ConnectionOptions(_defaultOptions);
         opts.setPort(synPacket.getRemotePort());
         opts.setLocalPort(synPacket.getLocalPort());
-        Connection con = new Connection(_context, this, _schedulerChooser, _timer, _outboundQueue, _conPacketHandler, opts, true);
+        Connection con = new Connection(_context, this, synPacket.getSession(), _schedulerChooser,
+                                        _timer, _outboundQueue, _conPacketHandler, opts, true);
         _tcbShare.updateOptsFromShare(con);
         boolean reject = false;
         int active = 0;
@@ -270,13 +274,13 @@ class ConnectionManager {
                     }
                 }
             }
-            PacketLocal reply = new PacketLocal(_context, from);
+            PacketLocal reply = new PacketLocal(_context, from, synPacket.getSession());
             reply.setFlag(Packet.FLAG_RESET);
             reply.setFlag(Packet.FLAG_SIGNATURE_INCLUDED);
             reply.setAckThrough(synPacket.getSequenceNum());
             reply.setSendStreamId(synPacket.getReceiveStreamId());
             reply.setReceiveStreamId(0);
-            reply.setOptionalFrom(_session.getMyDestination());
+            reply.setOptionalFrom();
             reply.setLocalPort(synPacket.getLocalPort());
             reply.setRemotePort(synPacket.getRemotePort());
             // this just sends the packet - no retries or whatnot
@@ -329,7 +333,7 @@ class ConnectionManager {
                 return false;
             }
         }
-        PacketLocal pong = new PacketLocal(_context, dest);
+        PacketLocal pong = new PacketLocal(_context, dest, ping.getSession());
         pong.setFlag(Packet.FLAG_ECHO | Packet.FLAG_NO_ACK);
         pong.setReceiveStreamId(ping.getSendStreamId());
         pong.setLocalPort(ping.getLocalPort());
@@ -393,9 +397,10 @@ class ConnectionManager {
      *
      * @param peer Destination to contact
      * @param opts Connection's options
+     * @param session generally the session from the constructor, but could be a subsession
      * @return new connection, or null if we have exceeded our limit
      */
-    public Connection connect(Destination peer, ConnectionOptions opts) {
+    public Connection connect(Destination peer, ConnectionOptions opts, I2PSession session) {
         Connection con = null;
         long expiration = _context.clock().now();
         long tmout = opts.getConnectTimeout();
@@ -429,7 +434,8 @@ class ConnectionManager {
                     // try { _connectionLock.wait(remaining); } catch (InterruptedException ie) {}
                     try { Thread.sleep(remaining/4); } catch (InterruptedException ie) {}
                 } else { 
-                    con = new Connection(_context, this, _schedulerChooser, _timer, _outboundQueue, _conPacketHandler, opts, false);
+                    con = new Connection(_context, this, session, _schedulerChooser, _timer,
+                                         _outboundQueue, _conPacketHandler, opts, false);
                     con.setRemotePeer(peer);
                     assignReceiveStreamId(con);
                     break; // stop looping as a psuedo-wait
@@ -590,7 +596,12 @@ class ConnectionManager {
 
     public MessageHandler getMessageHandler() { return _messageHandler; }
     public PacketHandler getPacketHandler() { return _packetHandler; }
+
+    /**
+     * This is the primary session only
+     */
     public I2PSession getSession() { return _session; }
+
     public void updateOptsFromShare(Connection con) { _tcbShare.updateOptsFromShare(con); }
     public void updateShareOpts(Connection con) { _tcbShare.updateShareOpts(con); }
     // Both of these methods are 
@@ -733,12 +744,12 @@ class ConnectionManager {
                         boolean blocking, PingNotifier notifier) {
         PingRequest req = new PingRequest(notifier);
         long id = assignPingId(req);
-        PacketLocal packet = new PacketLocal(_context, peer);
+        PacketLocal packet = new PacketLocal(_context, peer, _session);
         packet.setSendStreamId(id);
         packet.setFlag(Packet.FLAG_ECHO |
                        Packet.FLAG_NO_ACK |
                        Packet.FLAG_SIGNATURE_INCLUDED);
-        packet.setOptionalFrom(_session.getMyDestination());
+        packet.setOptionalFrom();
         packet.setLocalPort(fromPort);
         packet.setRemotePort(toPort);
         if (timeoutMs > MAX_PING_TIMEOUT)
@@ -779,12 +790,12 @@ class ConnectionManager {
                         byte[] payload) {
         PingRequest req = new PingRequest(null);
         long id = assignPingId(req);
-        PacketLocal packet = new PacketLocal(_context, peer);
+        PacketLocal packet = new PacketLocal(_context, peer, _session);
         packet.setSendStreamId(id);
         packet.setFlag(Packet.FLAG_ECHO |
                        Packet.FLAG_NO_ACK |
                        Packet.FLAG_SIGNATURE_INCLUDED);
-        packet.setOptionalFrom(_session.getMyDestination());
+        packet.setOptionalFrom();
         packet.setLocalPort(fromPort);
         packet.setRemotePort(toPort);
         packet.setPayload(new ByteArray(payload));
@@ -831,7 +842,7 @@ class ConnectionManager {
         private final PingNotifier _notifier;
 
         public PingFailed(Long id, PingNotifier notifier) { 
-            super(_context.simpleTimer2());
+            super(_timer);
             _id = id;
             _notifier = notifier;
         }
@@ -890,4 +901,12 @@ class ConnectionManager {
         if (req != null) 
             req.pong(payload);
     }
+
+    /**
+     *  @since 0.9.21
+     */
+    @Override
+    public String toString() {
+        return "ConnectionManager for " + _session;
+    }
 }
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java
index 51516c98d6b0f274a9454fcea9d21180d017a55e..f87b21e2511e795102a28516994f6b55e71cda03 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java
@@ -207,7 +207,7 @@ class ConnectionPacketHandler {
                     final long delay = nextSendTime - now;
                     if (_log.shouldLog(Log.INFO)) 
                         _log.info("scheduling ack in " + delay);
-                    _context.simpleTimer2().addEvent(new AckDup(con), delay);
+                    con.schedule(new AckDup(con), delay);
                 }
 
             } else {
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/I2PSocketManagerFull.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/I2PSocketManagerFull.java
index 630b1f0b6a4d668ee8cbcb0d03fe51c26dc8dca6..89310ebdae2ea5a3ed369ee89c32fbf082bfc0e8 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/I2PSocketManagerFull.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/I2PSocketManagerFull.java
@@ -1,26 +1,42 @@
 package net.i2p.client.streaming.impl;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.ConnectException;
 import java.net.NoRouteToHostException;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketTimeoutException;
 import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
+import java.util.StringTokenizer;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
+import net.i2p.client.I2PClient;
 import net.i2p.client.I2PSession;
 import net.i2p.client.I2PSessionException;
 import net.i2p.client.streaming.I2PServerSocket;
 import net.i2p.client.streaming.I2PSocket;
 import net.i2p.client.streaming.I2PSocketManager;
 import net.i2p.client.streaming.I2PSocketOptions;
+import net.i2p.crypto.SigAlgo;
+import net.i2p.crypto.SigType;
+import net.i2p.data.Certificate;
 import net.i2p.data.Destination;
+import net.i2p.data.Hash;
+import net.i2p.data.PrivateKey;
+import net.i2p.data.PublicKey;
+import net.i2p.data.SimpleDataStructure;
+import net.i2p.util.ConvertToHash;
+import net.i2p.util.ConcurrentHashSet;
 import net.i2p.util.Log;
 
 /**
@@ -37,6 +53,7 @@ public class I2PSocketManagerFull implements I2PSocketManager {
     private final I2PAppContext _context;
     private final Log _log;
     private final I2PSession _session;
+    private final Set<I2PSession> _subsessions;
     private final I2PServerSocketFull _serverSocket;
     private StandardServerSocket _realServerSocket;
     private final ConnectionOptions _defaultOptions;
@@ -45,7 +62,101 @@ public class I2PSocketManagerFull implements I2PSocketManager {
     private static final AtomicInteger __managerId = new AtomicInteger();
     private final ConnectionManager _connectionManager;
     private final AtomicBoolean _isDestroyed = new AtomicBoolean();
+
+    /**
+     *  Does not support EC
+     *  @since 0.9.21
+     */
+    private static final Set<Hash> _ecUnsupported = new HashSet<Hash>(16);
+    private static final String[] EC_UNSUPPORTED_HASHES = {
+        // list from http://zzz.i2p/topics/1682?page=1#p8414
+        // bzr.welterde.i2p
+        "Cvs1gCZTTkgD2Z2byh2J9atPmh5~I8~L7BNQnQl0hUE=",
+        // docs.i2p2.i2p
+        "WCXV87RdrF6j-mnn6qt7kVSBifHTlPL0PmVMFWwaolo=",
+        // flibusta.i2p
+        "yy2hYtqqfl84N9skwdRkeM7baFMXHKyDWU3XRShlEo8=",
+        // forum.i2p
+        "3t5Ar2NCTIOId70uzX2bZyJljR0aBogxMEzNyHirB7A=",
+        // i2jump.i2p
+        "9vaoGZbOaeqdRK2qEunlwRM9mUSW-I9R4OON35TDKK4=",
+        // irc.welterde.i2p
+        "5rjezx4McFk3bNhoJV-NTLlQW1AR~jiUcN6DOWMCCVc=",
+        // lists.i2p2.i2p
+        "qwtgoFoMSK0TOtbT4ovBX1jHUzCoZCPzrJVxjKD7RCg=",
+        // mtn.i2p2.i2p
+        "X5VDzYaoX9-P6bAWnrVSR5seGLkOeORP2l3Mh4drXPo=",
+        // nntp.welterde.i2p
+        "VXwmNIwMy1BcUVmut0oZ72jbWoqFzvxJukmS-G8kAAE=",
+        // paste.i2p2.i2p
+        "DoyMyUUgOSTddvRpqYfKHFPPjkkX~iQmResyfjjBYWs=",
+        // syndie.welterde.i2p
+        "xMxC54BFgyp-~zzrQI3F8m2CK--9XMcNmSAep6RH4Kk=",
+        // ugha.i2p
+        "zsu3WF~QLBxZXH-gHq9MuZE6y8ROZmMF7dA2MbMMKkY=",
+        // tracker.welterde.i2p
+        "EVkFgKkrDKyGfI7TIuDmlHoAmvHC~FbnY946DfujR0A=",
+        // www.i2p2.i2p
+        "im9gytzKT15mT1sB5LC9bHXCcwytQ4EPcrGQhoam-4w="
+    };
+
+    /**
+     *  Does not support Ed
+     *  @since 0.9.23
+     */
+    private static final Set<Hash> _edUnsupported = new HashSet<Hash>(16);
+    private static final String[] ED_UNSUPPORTED_HASHES = {
+        // list from http://zzz.i2p/topics/1682?page=1#p8414
+        // minus those tested to support Ed
+        // last tested 2015-11-04
+        // bzr.welterde.i2p
+        "Cvs1gCZTTkgD2Z2byh2J9atPmh5~I8~L7BNQnQl0hUE=",
+        // docs.i2p2.i2p
+        "WCXV87RdrF6j-mnn6qt7kVSBifHTlPL0PmVMFWwaolo=",
+        // i2jump.i2p
+        "9vaoGZbOaeqdRK2qEunlwRM9mUSW-I9R4OON35TDKK4=",
+        // irc.welterde.i2p
+        "5rjezx4McFk3bNhoJV-NTLlQW1AR~jiUcN6DOWMCCVc=",
+        // lists.i2p2.i2p
+        "qwtgoFoMSK0TOtbT4ovBX1jHUzCoZCPzrJVxjKD7RCg=",
+        // mtn.i2p2.i2p
+        "X5VDzYaoX9-P6bAWnrVSR5seGLkOeORP2l3Mh4drXPo=",
+        // nntp.welterde.i2p
+        "VXwmNIwMy1BcUVmut0oZ72jbWoqFzvxJukmS-G8kAAE=",
+        // paste.i2p2.i2p
+        "DoyMyUUgOSTddvRpqYfKHFPPjkkX~iQmResyfjjBYWs=",
+        // syndie.welterde.i2p
+        "xMxC54BFgyp-~zzrQI3F8m2CK--9XMcNmSAep6RH4Kk=",
+        // tracker.welterde.i2p
+        "EVkFgKkrDKyGfI7TIuDmlHoAmvHC~FbnY946DfujR0A=",
+        // www.i2p2.i2p
+        "im9gytzKT15mT1sB5LC9bHXCcwytQ4EPcrGQhoam-4w="
+    };
     
+    static {
+        for (int i = 0; i < EC_UNSUPPORTED_HASHES.length; i++) {
+            String s = EC_UNSUPPORTED_HASHES[i];
+            Hash h = ConvertToHash.getHash(s);
+            if (h != null)
+                _ecUnsupported.add(h);
+            else
+                System.out.println("Bad hash " + s);
+        }
+        for (int i = 0; i < ED_UNSUPPORTED_HASHES.length; i++) {
+            String s = ED_UNSUPPORTED_HASHES[i];
+            Hash h = ConvertToHash.getHash(s);
+            if (h != null)
+                _edUnsupported.add(h);
+            else
+                System.out.println("Bad hash " + s);
+        }
+    }
+
+    /** cache of the property to detect changes */
+    private static volatile String _userDsaList = "";
+    private static final Set<Hash> _userDsaOnly = new ConcurrentHashSet<Hash>(4);
+    private static final String PROP_DSALIST = "i2p.streaming.dsalist";
+
     /**
      * How long to wait for the client app to accept() before sending back CLOSE?
      * This includes the time waiting in the queue.  Currently set to 5 seconds.
@@ -80,6 +191,7 @@ public class I2PSocketManagerFull implements I2PSocketManager {
     public I2PSocketManagerFull(I2PAppContext context, I2PSession session, Properties opts, String name) {
         _context = context;
         _session = session;
+        _subsessions = new ConcurrentHashSet<I2PSession>(4);
         _log = _context.logManager().getLog(I2PSocketManagerFull.class);
         
         _name = name + " " + (__managerId.incrementAndGet());
@@ -120,6 +232,99 @@ public class I2PSocketManagerFull implements I2PSocketManager {
         return _session;
     }
     
+    /**
+     *  @return a new subsession, non-null
+     *  @param privateKeyStream null for transient, if non-null must have same encryption keys as primary session
+     *                          and different signing keys
+     *  @param opts subsession options if any, may be null
+     *  @since 0.9.21
+     */
+    public I2PSession addSubsession(InputStream privateKeyStream, Properties opts) throws I2PSessionException {
+        if (privateKeyStream == null) {
+            // We don't actually need the same pubkey in the dest, just in the LS.
+            // The dest one is unused. But this is how we find the LS keys
+            // to reuse in RequestLeaseSetMessageHandler.
+            ByteArrayOutputStream keyStream = new ByteArrayOutputStream(1024);
+            try {
+                SigType type = getSigType(opts);
+                if (type != SigType.DSA_SHA1) {
+                    // hassle, have to set up the padding and cert, see I2PClientImpl
+                    throw new I2PSessionException("type " + type + " unsupported");
+                }
+                PublicKey pub = _session.getMyDestination().getPublicKey();
+                PrivateKey priv = _session.getDecryptionKey();
+                SimpleDataStructure[] keys = _context.keyGenerator().generateSigningKeys(type);
+                pub.writeBytes(keyStream);
+                keys[0].writeBytes(keyStream); // signing pub
+                Certificate.NULL_CERT.writeBytes(keyStream);
+                priv.writeBytes(keyStream);
+                keys[1].writeBytes(keyStream); // signing priv
+            } catch (Exception e) {
+                throw new I2PSessionException("Error creating keys", e);
+            }
+            privateKeyStream = new ByteArrayInputStream(keyStream.toByteArray());
+        }
+        I2PSession rv = _session.addSubsession(privateKeyStream, opts);
+        boolean added = _subsessions.add(rv);
+        if (!added) {
+            // shouldn't happen
+            _session.removeSubsession(rv);
+            throw new I2PSessionException("dup");
+        }
+        ConnectionOptions defaultOptions = new ConnectionOptions(opts);
+        int protocol = defaultOptions.getEnforceProtocol() ? I2PSession.PROTO_STREAMING : I2PSession.PROTO_ANY;
+        rv.addMuxedSessionListener(_connectionManager.getMessageHandler(), protocol, defaultOptions.getLocalPort());
+        if (_log.shouldLog(Log.WARN))
+            _log.warn("Added subsession " + rv);
+        return rv;
+    }
+
+    /**
+     *  @param opts may be null
+     *  @since 0.9.21 copied from I2PSocketManagerFactory
+     */
+    private SigType getSigType(Properties opts) {
+        if (opts != null) {
+            String st = opts.getProperty(I2PClient.PROP_SIGTYPE);
+            if (st != null) {
+                SigType rv = SigType.parseSigType(st);
+                if (rv != null && rv.isAvailable())
+                    return rv;
+                if (rv != null)
+                    st = rv.toString();
+                _log.logAlways(Log.WARN, "Unsupported sig type " + st +
+                                         ", reverting to " + I2PClient.DEFAULT_SIGTYPE);
+                // TODO throw instead?
+            }
+        }
+        return I2PClient.DEFAULT_SIGTYPE;
+    }
+    
+    /**
+     *  Remove the subsession
+     *
+     *  @since 0.9.21
+     */
+    public void removeSubsession(I2PSession session) {
+        _session.removeSubsession(session);
+        boolean removed = _subsessions.remove(session);
+        if (removed) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Removeed subsession " + session);
+        } else {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Subsession not found to remove " + session);
+        }
+    }
+    
+    /**
+     *  @return a list of subsessions, non-null, does not include the primary session
+     *  @since 0.9.21
+     */
+    public List<I2PSession> getSubsessions() {
+        return _session.getSubsessions();
+    }
+    
     public ConnectionManager getConnectionManager() {
         return _connectionManager;
     }
@@ -127,6 +332,9 @@ public class I2PSocketManagerFull implements I2PSocketManager {
     /**
      * The accept() call.
      * 
+     * This only listens on the primary session. There is no way to get
+     * incoming connections on a subsession.
+     * 
      * @return connected I2PSocket, or null through 0.9.16, non-null as of 0.9.17
      * @throws I2PException if session is closed
      * @throws ConnectException (since 0.9.17; I2PServerSocket interface always declared it)
@@ -146,6 +354,8 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      *
      * Uses the ports from the default options.
      * 
+     * TODO There is no way to ping on a subsession.
+     * 
      * @param peer
      * @param timeoutMs timeout in ms, greater than zero
      * @return true on success, false on failure
@@ -163,6 +373,8 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      * the timeout specified, false otherwise.  This call blocks.
      *
      * Uses the ports specified.
+     * 
+     * TODO There is no way to ping on a subsession.
      *
      * @param peer Destination to ping
      * @param localPort 0 - 65535
@@ -186,6 +398,8 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      * the timeout specified, false otherwise.  This call blocks.
      *
      * Uses the ports specified.
+     * 
+     * TODO There is no way to ping on a subsession.
      *
      * @param peer Destination to ping
      * @param localPort 0 - 65535
@@ -219,6 +433,8 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      *  Parameters in the I2PSocketOptions interface may be changed directly
      *  with the setters; no need to use this method for those.
      *  This does NOT update the underlying I2CP or tunnel options; use getSession().updateOptions() for that.
+     * 
+     *  TODO There is no way to update the options on a subsession.
      *
      *  @param options as created from a call to buildOptions(properties), non-null
      */
@@ -233,6 +449,8 @@ public class I2PSocketManagerFull implements I2PSocketManager {
 
     /**
      *  Current options, not a copy, setters may be used to make changes.
+     * 
+     *  TODO There is no facility to specify the session.
      */
     public I2PSocketOptions getDefaultOptions() {
         return _defaultOptions;
@@ -242,6 +460,9 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      *  Returns non-null socket.
      *  This method does not throw exceptions, but methods on the returned socket
      *  may throw exceptions if the socket or socket manager is closed.
+     * 
+     *  This only listens on the primary session. There is no way to get
+     *  incoming connections on a subsession.
      *
      *  @return non-null
      */
@@ -252,6 +473,10 @@ public class I2PSocketManagerFull implements I2PSocketManager {
 
     /**
      *  Like getServerSocket but returns a real ServerSocket for easier porting of apps.
+     * 
+     *  This only listens on the primary session. There is no way to get
+     *  incoming connections on a subsession.
+     * 
      *  @since 0.8.4
      */
     public synchronized ServerSocket getStandardServerSocket() throws IOException {
@@ -262,11 +487,16 @@ public class I2PSocketManagerFull implements I2PSocketManager {
     }
 
     private void verifySession() throws I2PException {
+        verifySession(_connectionManager.getSession());
+    }
+
+    /** @since 0.9.21 */
+    private void verifySession(I2PSession session) throws I2PException {
         if (_isDestroyed.get())
             throw new I2PException("Session was closed");
-        if (!_connectionManager.getSession().isClosed())
+        if (!session.isClosed())
             return;
-        _connectionManager.getSession().connect();
+        session.connect();
     }
     
     /**
@@ -285,7 +515,6 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      */
     public I2PSocket connect(Destination peer, I2PSocketOptions options) 
                              throws I2PException, NoRouteToHostException {
-        verifySession();
         if (options == null)
             options = _defaultOptions;
         ConnectionOptions opts = null;
@@ -297,8 +526,27 @@ public class I2PSocketManagerFull implements I2PSocketManager {
         if (_log.shouldLog(Log.INFO))
             _log.info("Connecting to " + peer.calculateHash().toBase64().substring(0,6) 
                       + " with options: " + opts);
+        // pick the subsession here
+        I2PSession session = _session;
+        if (!_subsessions.isEmpty()) {
+            updateUserDsaList();
+            Hash h = peer.calculateHash();
+            SigAlgo myAlgo = session.getMyDestination().getSigType().getBaseAlgorithm();
+            if ((myAlgo == SigAlgo.EC && _ecUnsupported.contains(h)) ||
+                (myAlgo == SigAlgo.EdDSA && _edUnsupported.contains(h)) ||
+                (!_userDsaOnly.isEmpty() && _userDsaOnly.contains(h))) {
+                // FIXME just taking the first one for now
+                for (I2PSession sess : _subsessions) {
+                    if (sess.getMyDestination().getSigType() == SigType.DSA_SHA1) {
+                        session = sess;
+                        break;
+                    }
+                }
+            }
+        }
+        verifySession(session);
         // the following blocks unless connect delay > 0
-        Connection con = _connectionManager.connect(peer, opts);
+        Connection con = _connectionManager.connect(peer, opts, session);
         if (con == null)
             throw new TooManyStreamsException("Too many streams, max " + _defaultOptions.getMaxConns());
         I2PSocketFull socket = new I2PSocketFull(con,_context);
@@ -310,6 +558,40 @@ public class I2PSocketManagerFull implements I2PSocketManager {
         return socket;
     }
 
+    /**
+     * Update the global user DSA-only list.
+     * This does not affect the hardcoded Ex_UNSUPPORTED_HASHES lists above,
+     * the user can only add, not remove.
+     *
+     * @since 0.9.21
+     */
+    private void updateUserDsaList() {
+        String hashes = _context.getProperty(PROP_DSALIST, "");
+        if (!_userDsaList.equals(hashes)) {
+            // rebuild _userDsaOnly when property changes
+            synchronized(_userDsaOnly) {
+                if (hashes.length() > 0) {
+                    Set<Hash> newSet = new HashSet<Hash>();
+                    StringTokenizer tok = new StringTokenizer(hashes, ",; ");
+                    while (tok.hasMoreTokens()) {
+                        String hashstr = tok.nextToken();
+                        Hash hh = ConvertToHash.getHash(hashstr);
+                        if (hh != null)
+                            newSet.add(hh);
+                        else
+                            _log.error("Bad " + PROP_DSALIST + " entry: " + hashstr);
+                    }
+                    _userDsaOnly.addAll(newSet);
+                    _userDsaOnly.retainAll(newSet);
+                    _userDsaList = hashes;
+                } else {
+                    _userDsaOnly.clear();
+                    _userDsaList = "";
+                }
+            }
+        }
+    }
+
     /**
      * Create a new connected socket. Blocks until the socket is created,
      * unless the connectDelay option (i2p.streaming.connectDelay) is
@@ -381,6 +663,12 @@ public class I2PSocketManagerFull implements I2PSocketManager {
         }
         _connectionManager.setAllowIncomingConnections(false);
         _connectionManager.shutdown();
+        if (!_subsessions.isEmpty()) {
+            for (I2PSession sess : _subsessions) {
+                 removeSubsession(sess);
+            }
+        }
+
         // should we destroy the _session too?
         // yes, since the old lib did (and SAM wants it to, and i dont know why not)
         if ( (_session != null) && (!_session.isClosed()) ) {
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java
index 9da5568c4d6003a5cc4f724b40ced5b93b271c39..9725771a3c78ef78823c34aa1f737facfb6e4719 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageHandler.java
@@ -50,7 +50,7 @@ class MessageHandler implements I2PSessionMuxedListener {
      * @param size size of the message
      */
     public void messageAvailable(I2PSession session, int msgId, long size, int proto, int fromPort, int toPort) {
-        byte data[] = null;
+        byte data[];
         try {
             data = session.receiveMessage(msgId);
         } catch (I2PSessionException ise) {
@@ -59,8 +59,18 @@ class MessageHandler implements I2PSessionMuxedListener {
                 _log.warn("Error receiving the message", ise);
             return;
         }
-        if (data == null) return;
-        Packet packet = new Packet();
+        if (data == null) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Received null data on " + session + " proto: " + proto +
+                          " fromPort: " + fromPort + " toPort: " + toPort);
+            return;
+        }
+        if (_log.shouldLog(Log.DEBUG))
+            _log.debug("Received " + data.length + " bytes on " + session +
+                       " (" + _manager + ')' +
+                       " proto: " + proto +
+                       " fromPort: " + fromPort + " toPort: " + toPort);
+        Packet packet = new Packet(session);
         try {
             packet.readPacket(data, 0, data.length);
             packet.setRemotePort(fromPort);
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java
index 3897b28093d7b739a78c9a3f2fe5053c6801a26e..a77d282fe523ec33051dc55df4e108c2bbfa0d68 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java
@@ -568,6 +568,27 @@ class MessageInputStream extends InputStream {
     @Override
     public void close() {
         synchronized (_dataLock) {
+            if (_log.shouldLog(Log.DEBUG)) {
+                StringBuilder buf = new StringBuilder(128);
+                buf.append("close(), ready bytes: ");
+                long available = 0;
+                for (int i = 0; i < _readyDataBlocks.size(); i++) 
+                    available += _readyDataBlocks.get(i).getValid();
+                available -= _readyDataBlockIndex;
+                buf.append(available);
+                buf.append(" blocks: ").append(_readyDataBlocks.size());
+                buf.append(" not ready blocks: ");
+                long notAvailable = 0;
+                for (Long id : _notYetReadyBlocks.keySet()) {
+                    ByteArray ba = _notYetReadyBlocks.get(id);
+                    buf.append(id).append(" ");
+                    if (ba != null)
+                        notAvailable += ba.getValid();
+                }
+                buf.append("not ready bytes: ").append(notAvailable);
+                buf.append(" highest ready block: ").append(_highestReadyBlockId);
+                _log.debug(buf.toString());
+            }
             //while (_readyDataBlocks.size() > 0)
             //    _cache.release((ByteArray)_readyDataBlocks.remove(0));
             _readyDataBlocks.clear();
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java
index 77de1106186c01444210471153d5812c8b0d96a2..a872b2d77d0d7ccd534bcb2d218210cde985db07 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/Packet.java
@@ -5,6 +5,7 @@ import java.io.IOException;
 import java.util.Arrays;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSession;
 import net.i2p.crypto.SigType;
 import net.i2p.data.Base64;
 import net.i2p.data.ByteArray;
@@ -67,6 +68,7 @@ import net.i2p.util.Log;
  *
  */
 class Packet {
+    protected final I2PSession _session;
     private long _sendStreamId;
     private long _receiveStreamId;
     private long _sequenceNum;
@@ -167,8 +169,15 @@ class Packet {
      *  Does no initialization.
      *  See readPacket() for inbound packets, and the setters for outbound packets.
      */
-    public Packet() { }
+    public Packet(I2PSession session) {
+        _session = session;
+    }
     
+    /** @since 0.9.21 */
+    public I2PSession getSession() {
+        return _session;
+    }
+
     private boolean _sendStreamIdSet = false;
 
     /** what stream do we send data to the peer on?
@@ -334,10 +343,13 @@ class Packet {
      */
     public Destination getOptionalFrom() { return _optionFrom; }
 
-    public void setOptionalFrom(Destination from) { 
-        setFlag(FLAG_FROM_INCLUDED, from != null);
-        if (from == null) throw new RuntimeException("from is null!?");
-        _optionFrom = from; 
+    /** 
+     * This sets the from field in the packet to the Destination for the session
+     * provided in the constructor.
+     */
+    public void setOptionalFrom() { 
+        setFlag(FLAG_FROM_INCLUDED, true);
+        _optionFrom = _session.getMyDestination();
     }
     
     /** 
@@ -508,10 +520,10 @@ class Packet {
         return cur - offset;
     }
     
-    
     /**
      * how large would this packet be if we wrote it
      * @return How large the current packet would be
+     *
      * @throws IllegalStateException 
      */
     private int writtenSize() {
@@ -546,6 +558,8 @@ class Packet {
         
         return size;
     }
+    
+
     /**
      * Read the packet from the buffer (starting at the offset) and return
      * the number of bytes read.
@@ -619,7 +633,7 @@ class Packet {
             try {
                 Destination optionFrom = Destination.create(bais);
                 cur += optionFrom.size();
-                setOptionalFrom(optionFrom);
+                _optionFrom = optionFrom;
             } catch (IOException ioe) {
                 throw new IllegalArgumentException("Bad from field", ioe);
             } catch (DataFormatException dfe) {
@@ -766,7 +780,7 @@ class Packet {
         if (isFlagSet(FLAG_MAX_PACKET_SIZE_INCLUDED)) buf.append(" MS ").append(_optionMaxSize);
         if (isFlagSet(FLAG_PROFILE_INTERACTIVE)) buf.append(" INTERACTIVE");
         if (isFlagSet(FLAG_RESET)) buf.append(" RESET");
-        if (isFlagSet(FLAG_SIGNATURE_INCLUDED)) buf.append(" SIG");
+        if (isFlagSet(FLAG_SIGNATURE_INCLUDED)) buf.append(" SIG ").append(_optionSignature.length());
         if (isFlagSet(FLAG_SIGNATURE_REQUESTED)) buf.append(" SIGREQ");
         if (isFlagSet(FLAG_SYNCHRONIZE)) buf.append(" SYN");
     }
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java
index 500e62d565222dcb5a2d222f862ce76ed006f3b9..4a96693b4ba0a28dca9f8283cd725c7e5e0d650b 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java
@@ -231,6 +231,8 @@ class PacketHandler {
      *  This sends a reset back to the place this packet came from.
      *  If the packet has no 'optional from' or valid signature, this does nothing.
      *  This is not associated with a connection, so no con stats are updated.
+     *
+     *  @param packet incoming packet to be replied to
      */
     private void sendReset(Packet packet) {
         Destination from = packet.getOptionalFrom();
@@ -242,13 +244,13 @@ class PacketHandler {
                 _log.warn("Can't send reset after recv spoofed packet: " + packet);
             return;
         }
-        PacketLocal reply = new PacketLocal(_context, from);
+        PacketLocal reply = new PacketLocal(_context, from, packet.getSession());
         reply.setFlag(Packet.FLAG_RESET);
         reply.setFlag(Packet.FLAG_SIGNATURE_INCLUDED);
         reply.setSendStreamId(packet.getReceiveStreamId());
         reply.setReceiveStreamId(packet.getSendStreamId());
         // TODO remove this someday, as of 0.9.20 we do not require it
-        reply.setOptionalFrom(_manager.getSession().getMyDestination());
+        reply.setOptionalFrom();
         reply.setLocalPort(packet.getLocalPort());
         reply.setRemotePort(packet.getRemotePort());
         // this just sends the packet - no retries or whatnot
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java
index 83153af729c602f58a18226e15dd281c42c078b3..b6a55d351fc7daaff1d257e5c9766bb48796b18c 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java
@@ -6,6 +6,7 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSession;
 import net.i2p.data.Destination;
 import net.i2p.data.SessionKey;
 import net.i2p.data.SessionTag;
@@ -37,11 +38,20 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
     private volatile SimpleTimer2.TimedEvent _resendEvent;
     
     /** not bound to a connection */
-    public PacketLocal(I2PAppContext ctx, Destination to) {
-        this(ctx, to, null);
+    public PacketLocal(I2PAppContext ctx, Destination to, I2PSession session) {
+        super(session);
+        _context = ctx;
+        _createdOn = ctx.clock().now();
+        _log = ctx.logManager().getLog(PacketLocal.class);
+        _to = to;
+        _connection = null;
+        _lastSend = -1;
+        _cancelledOn = -1;
     }
 
+    /** bound to a connection */
     public PacketLocal(I2PAppContext ctx, Destination to, Connection con) {
+        super(con.getSession());
         _context = ctx;
         _createdOn = ctx.clock().now();
         _log = ctx.logManager().getLog(PacketLocal.class);
@@ -197,16 +207,17 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
      *
      * @param buffer data to be written
      * @param offset starting point in the buffer
-     * @param ctx Application Context
-     * @param key signing key
      * @return Count of bytes written
      * @throws IllegalStateException if there is data missing or otherwise b0rked
      * @since 0.9.20 moved from Packet
      */
-    public int writeSignedPacket(byte buffer[], int offset, I2PAppContext ctx, SigningPrivateKey key) throws IllegalStateException {
+    public int writeSignedPacket(byte buffer[], int offset) throws IllegalStateException {
         setFlag(FLAG_SIGNATURE_INCLUDED);
+        SigningPrivateKey key = _session.getPrivateKey();
         int size = writePacket(buffer, offset, key.getType().getSigLen());
-        _optionSignature = ctx.dsa().sign(buffer, offset, size, key);
+        _optionSignature = _context.dsa().sign(buffer, offset, size, key);
+        if (_optionSignature == null)
+            throw new IllegalStateException("Signature failed");
         //if (false) {
         //    Log l = ctx.logManager().getLog(Packet.class);
         //    l.error("Signing: " + toString());
@@ -258,7 +269,7 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
             Connection con = _connection;
             if (con != null) {
                 buf.append(" from ");
-                Destination local = con.getSession().getMyDestination();
+                Destination local = _session.getMyDestination();
                 if (local != null)
                     buf.append(local.calculateHash().toBase64().substring(0,4));
                 else
@@ -275,7 +286,7 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
         }
         return buf;
     }
-    
+
     ////// begin WriteStatus methods
 
     /**
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
index 1eb10c7fbe8a7d79432b06d84d435ab46492a9bc..943a0c03f5bb76f71fbb96697762f75c599090f4 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketQueue.java
@@ -1,5 +1,6 @@
 package net.i2p.client.streaming.impl;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.util.Iterator;
 import java.util.Map;
@@ -25,11 +26,9 @@ import net.i2p.util.SimpleTimer2;
  *<p>
  * MessageOutputStream -> ConnectionDataReceiver -> Connection -> PacketQueue -> I2PSession
  */
-class PacketQueue implements SendMessageStatusListener {
+class PacketQueue implements SendMessageStatusListener, Closeable {
     private final I2PAppContext _context;
     private final Log _log;
-    private final I2PSession _session;
-    private final ConnectionManager _connectionManager;
     private final ByteCache _cache = ByteCache.getInstance(64, 36*1024);
     private final Map<Long, Connection> _messageStatusMap;
     private volatile boolean _dead;
@@ -46,13 +45,11 @@ class PacketQueue implements SendMessageStatusListener {
     private static final long REMOVE_EXPIRED_TIME = 67*1000;
     private static final boolean ENABLE_STATUS_LISTEN = true;
 
-    public PacketQueue(I2PAppContext context, I2PSession session, ConnectionManager mgr) {
+    public PacketQueue(I2PAppContext context, SimpleTimer2 timer) {
         _context = context;
-        _session = session;
-        _connectionManager = mgr;
         _log = context.logManager().getLog(PacketQueue.class);
         _messageStatusMap = new ConcurrentHashMap<Long, Connection>(16);
-        new RemoveExpired();
+        new RemoveExpired(timer);
         // all createRateStats in ConnectionManager
     }
 
@@ -101,7 +98,7 @@ class PacketQueue implements SendMessageStatusListener {
             int size = 0;
             long beforeWrite = System.currentTimeMillis();
             if (packet.shouldSign())
-                size = packet.writeSignedPacket(buf, 0, _context, _session.getPrivateKey());
+                size = packet.writeSignedPacket(buf, 0);
             else
                 size = packet.writePacket(buf, 0);
             long writeTime = System.currentTimeMillis() - beforeWrite;
@@ -155,14 +152,15 @@ class PacketQueue implements SendMessageStatusListener {
                     options.setTagThreshold(thresh);
                 }
             }
+            I2PSession session = packet.getSession();
             if (listenForStatus) {
-                long id = _session.sendMessage(packet.getTo(), buf, 0, size,
+                long id = session.sendMessage(packet.getTo(), buf, 0, size,
                                  I2PSession.PROTO_STREAMING, packet.getLocalPort(), packet.getRemotePort(),
                                  options, this);
                 _messageStatusMap.put(Long.valueOf(id), packet.getConnection());
                 sent = true;
             } else {
-                sent = _session.sendMessage(packet.getTo(), buf, 0, size,
+                sent = session.sendMessage(packet.getTo(), buf, 0, size,
                                  I2PSession.PROTO_STREAMING, packet.getLocalPort(), packet.getRemotePort(),
                                  options);
             }
@@ -199,9 +197,10 @@ class PacketQueue implements SendMessageStatusListener {
             //packet.setTagsSent(tagsSent);
             packet.incrementSends();
             Connection c = packet.getConnection();
-            String suffix = (c != null ? "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO() : null);
-            if (_log.shouldDebug())
-                _connectionManager.getPacketHandler().displayPacket(packet, "SEND", suffix);
+            if (c != null && _log.shouldDebug()) {
+                String suffix = "wsize " + c.getOptions().getWindowSize() + " rto " + c.getOptions().getRTO();
+                c.getConnectionManager().getPacketHandler().displayPacket(packet, "SEND", suffix);
+            }
             if (I2PSocketManagerFull.pcapWriter != null &&
                 _context.getBooleanProperty(I2PSocketManagerFull.PROP_PCAP))
                 packet.logTCPDump();
@@ -329,8 +328,8 @@ class PacketQueue implements SendMessageStatusListener {
      */
     private class RemoveExpired extends SimpleTimer2.TimedEvent {
         
-        public RemoveExpired() {
-             super(_context.simpleTimer2(), REMOVE_EXPIRED_TIME);
+        public RemoveExpired(SimpleTimer2 timer) {
+             super(timer, REMOVE_EXPIRED_TIME);
         }
 
         public void timeReached() {
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
index 9a3c3e0be4006c3a9c868d476ff2fd7b5e988e6c..1c704f02e3e0708f6621f60c0ca46cf4fda0c060 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PcapWriter.java
@@ -1,8 +1,10 @@
 package net.i2p.client.streaming.impl;
 
 import java.io.BufferedOutputStream;
+import java.io.Closeable;
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.Flushable;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -41,7 +43,7 @@ import net.i2p.data.DataHelper;
  *
  *  @since 0.9.4
  */
-public class PcapWriter {
+public class PcapWriter implements Closeable, Flushable {
 
     /** big-endian, see file format ref - 24 bytes */
     private static final byte[] FILE_HEADER = { (byte) 0xa1, (byte) 0xb2, (byte) 0xc3, (byte) 0xd4,
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/SchedulerImpl.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/SchedulerImpl.java
index 41085a30d25760ea56a7f4f4c54774571d9cd223..bc54ba3c8016e2952129a3b08cdff068c9d97ef3 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/SchedulerImpl.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/SchedulerImpl.java
@@ -16,7 +16,7 @@ abstract class SchedulerImpl implements TaskScheduler {
     }
     
     protected void reschedule(long msToWait, Connection con) {
-        _context.simpleTimer2().addEvent(con.getConnectionEvent(), msToWait);
+        con.scheduleConnectionEvent(msToWait);
     }
 
     @Override
diff --git a/apps/susidns/locale/messages_en.po b/apps/susidns/locale/messages_en.po
index af1287e525a282216af328b1e1391fb767feff25..f2c41273ea85fb59cd3b673b8c2636829d6209f5 100644
--- a/apps/susidns/locale/messages_en.po
+++ b/apps/susidns/locale/messages_en.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P susidns\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
+"POT-Creation-Date: 2015-07-17 01:33+0000\n"
 "PO-Revision-Date: 2010-06-15 14:09+0100\n"
 "Last-Translator: duck <duck@mail.i2p>\n"
 "Language-Team: duck <duck@mail.i2p>\n"
@@ -222,7 +222,7 @@ msgstr ""
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or \"reload"
 "\" button on your browser. Please resubmit."
@@ -231,14 +231,14 @@ msgstr ""
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr ""
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -249,7 +249,7 @@ msgid "Configuration saved."
 msgstr ""
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -278,16 +278,16 @@ msgstr ""
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr ""
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr ""
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr ""
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr ""
 
diff --git a/apps/susidns/locale/messages_hu.po b/apps/susidns/locale/messages_hu.po
index db07c5772508f0061a21b23580a8b6518ded656f..48827fbd40a77ec861366e229cb2f33a1ddc93e3 100644
--- a/apps/susidns/locale/messages_hu.po
+++ b/apps/susidns/locale/messages_hu.po
@@ -4,13 +4,14 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# benewfy <benewfy@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-06-29 12:27+0000\n"
+"Last-Translator: benewfy <benewfy@gmail.com>\n"
 "Language-Team: Hungarian (http://www.transifex.com/projects/p/I2P/language/hu/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -66,7 +67,7 @@ msgstr "Aláírt"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:233
 msgid "Key"
-msgstr ""
+msgstr "Kulcs"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:235
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:260
@@ -222,7 +223,7 @@ msgstr "HIBA: Nem sikerült a címjegyzék-fálj írása."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -231,14 +232,14 @@ msgstr "Úrlap küldése sikertelen, valószínűleg a \"vissza\" vagy az \"újr
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
-msgstr ""
+msgstr "Ha a probléma fennáll, ellenőrizd, hogy a sütik engedélyezve vannak-e a böngésződben."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -249,7 +250,7 @@ msgid "Configuration saved."
 msgstr "Beállítás elmentve."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -278,16 +279,16 @@ msgstr "{0} Célállomás hozzáadása sikertelen a {1} névszolgáltatóhoz"
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "{0} Célállomás törlése sikertelen a {1} névszolgáltatóból"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "Feliratkozás elmentve, címjegyzék a feliratkozási források használatával frissítés alatt."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Feliratkozások elmentve."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Feliratkozások újratöltve."
 
@@ -435,7 +436,7 @@ msgstr "Mégse"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "Exportálás hosts.txt formátumba"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
@@ -549,7 +550,7 @@ msgstr "Fájl, ami a működést naplózza (megváltoztathatod /dev/null -ra, ha
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:200
 msgid "Name of the theme to use (defaults to 'light')"
-msgstr ""
+msgstr "Használni kívánt téma neve (alapértelmezett 'light')"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
 msgid "addressbook"
@@ -629,7 +630,7 @@ msgstr "Elosztott források vagy \"feliratkozások\" használata a hosts.txt fá
 #, java-format
 msgid ""
 "In the default configuration, the address book is only subscribed to {0}."
-msgstr ""
+msgstr "Az alapértelmezett konfigurációban a címjegyzék csak ehhez van feliratkozva: {0}."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
 msgid ""
@@ -641,7 +642,7 @@ msgstr "További oldalakra való feliratkozás egyszerű, pusztán add hozzá a
 msgid ""
 "For more information on naming in I2P, see <a href=\"http://i2p-"
 "projekt.i2p/naming.html\" target=\"_top\">the overview</a>."
-msgstr ""
+msgstr "További információkért az I2P-ben történő névadásról nézd meg <a href=\"http://i2p-projekt.i2p/naming.html\" target=\"_top\">az áttekintést</a>."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
 msgid "How does the addressbook application work?"
@@ -706,7 +707,7 @@ msgstr "Azok az URL-ek közzétett hosts.txt fájlokra hivatkoznak."
 msgid ""
 "The default subscription is the hosts.txt from {0}, which is updated "
 "infrequently."
-msgstr ""
+msgstr "Az alapértelmezett feliratkozás a hosts.txt tőle: {0}, ami ritkán volt frissítve."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:161
 msgid ""
diff --git a/apps/susidns/locale/messages_ja.po b/apps/susidns/locale/messages_ja.po
index d069b5dd332e01fe0dc97d40aa231c88ae0a3270..42651fe9087e5debb9bafcf15add741884640e82 100644
--- a/apps/susidns/locale/messages_ja.po
+++ b/apps/susidns/locale/messages_ja.po
@@ -4,16 +4,17 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# タカハシ <gomidori@live.jp>, 2013-2014
+# タカハシ <indexial@outlook.jp>, 2013-2014
+# タカハシ <indexial@outlook.jp>, 2015
 # rafe <rafe.kun@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/ja/)\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-08-31 08:07+0000\n"
+"Last-Translator: タカハシ <indexial@outlook.jp>\n"
+"Language-Team: Japanese (http://www.transifex.com/otf/I2P/language/ja/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -219,7 +220,7 @@ msgstr "エラー: アドレスブックファイルに書き込めません。"
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -228,14 +229,14 @@ msgstr "無効なフォームからの送信、おそらく、ブラウザで「
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "問題が続く場合、クッキーがブラウザで有効になっているか確認してください。"
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -246,7 +247,7 @@ msgid "Configuration saved."
 msgstr "設定が保存されました。"
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -275,16 +276,16 @@ msgstr "ネーミング・サービス {1} への {0} の宛先を追加する
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "ネーミング・サービス {1} から {0} の宛先を削除するのに失敗しました"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "購読が保存されました、現在購読ソースからアドレスブックを更新しています。"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "購読が保存されました。"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "購読が再読込されました。"
 
@@ -432,7 +433,7 @@ msgstr "キャンセル"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "hosts.txt 形式でエクスポート"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
diff --git a/apps/susidns/locale/messages_pl.po b/apps/susidns/locale/messages_pl.po
index 3302d8258d228fc0ae11e585fd3fe9cad0ed27c2..94307af66e6ca8590ce631f69723a52796dbea6c 100644
--- a/apps/susidns/locale/messages_pl.po
+++ b/apps/susidns/locale/messages_pl.po
@@ -5,16 +5,16 @@
 # 
 # Translators:
 # PolishAnon <b790979@klzlk.com>, 2011, 2012
-# seb, 2014
+# seb, 2014-2015
 # Smert i2p <Smert@safe-mail.net>, 2013
 # Tracerneo <ziolkoneo@gmail.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-06-09 20:53+0000\n"
+"Last-Translator: seb\n"
 "Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -70,7 +70,7 @@ msgstr "Podpisano"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:233
 msgid "Key"
-msgstr ""
+msgstr "Klucz"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:235
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:260
@@ -231,7 +231,7 @@ msgstr "BŁĄD: Nie można zapisać pliku książki adresowej."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -240,14 +240,14 @@ msgstr "Nieprawidłowy formularz, prawdopodobnie dlatego, że użyto przycisku \
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "Jeśli problem będzie się powtarzał, sprawdź, czy masz włączoną obsługę plików cookie w przeglądarce."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -258,7 +258,7 @@ msgid "Configuration saved."
 msgstr "Konfiguracja zapisana."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -287,16 +287,16 @@ msgstr "Nie udało się dodać Miejsca Przeznaczenia dla {0} do serwisu nazewnic
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "Nie udało się usunąć Miejsca Przeznaczenia dla {0} z serwisu nazewnictwa {1}"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "Subskrypcje zapisane, trwa teraz aktualizowanie książki adresowej ze źródeł subskrypcji."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Subskrypcje zapisane."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Subskrypcje przeładowane."
 
@@ -444,7 +444,7 @@ msgstr "Anuluj"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "Eksportuj w formacie hosts.txt"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
@@ -638,7 +638,7 @@ msgstr "Regularnie aktualizuje twoj plik hosts.txt z rozproszonych źródeł lub
 #, java-format
 msgid ""
 "In the default configuration, the address book is only subscribed to {0}."
-msgstr ""
+msgstr "W domyślnej konfiguracji, książka adresowa jest subskrybowana tylko do {0}."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
 msgid ""
@@ -715,7 +715,7 @@ msgstr "Te URL odnoszą się do opublikowanych plików hosts.txt."
 msgid ""
 "The default subscription is the hosts.txt from {0}, which is updated "
 "infrequently."
-msgstr ""
+msgstr "Domyślna subskrypcja to hosts.txt z {0}, która jest rzadko aktualizowana."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:161
 msgid ""
diff --git a/apps/susidns/locale/messages_pt.po b/apps/susidns/locale/messages_pt.po
index 9cc75333e61f7a8b77577786593d3ba9e6738de1..25e64bd5e513a320743e7be0fb7b4645361d6974 100644
--- a/apps/susidns/locale/messages_pt.po
+++ b/apps/susidns/locale/messages_pt.po
@@ -4,6 +4,7 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
+# wtfisthis <low_fps11@yahoo.com>, 2015
 # Rafael Ferrari, 2013
 # Rafael Ferrari, 2013
 # Ruthein Alex <rutweiller@hotmail.com>, 2012
@@ -11,9 +12,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-06-08 21:12+0000\n"
+"Last-Translator: wtfisthis <low_fps11@yahoo.com>\n"
 "Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/pt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -69,7 +70,7 @@ msgstr "Assinado"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:233
 msgid "Key"
-msgstr ""
+msgstr "Chave"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:235
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:260
@@ -225,7 +226,7 @@ msgstr "ERRO: Não foi possível gravar no arquivo do livro de endereços."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -234,14 +235,14 @@ msgstr "Requisição inválida, por favor tentar novamente."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "Se o problema persistir, verificar se o seu navegador está aceitando cookies."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -252,7 +253,7 @@ msgid "Configuration saved."
 msgstr "Configuração salva."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -281,16 +282,16 @@ msgstr "Falha ao adicionar o Destino para {0} ao serviço de nomes {1}"
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "Falha ao remover o Destino para {0} do serviço de nomes {1}"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "Inscrições salvas, atualizando o livro de endereços agora."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Inscrições salvas."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Inscrições recarregadas."
 
@@ -438,7 +439,7 @@ msgstr "Cancelar"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "Exportar em formato host.txt"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
@@ -632,7 +633,7 @@ msgstr "Ele atualiza o seu arquivo hosts.txt regularmente de fontes distribuída
 #, java-format
 msgid ""
 "In the default configuration, the address book is only subscribed to {0}."
-msgstr ""
+msgstr "Na configuração padrão, o livro de endereços está inscrito apenas no  {0}."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
 msgid ""
diff --git a/apps/susidns/locale/messages_pt_BR.po b/apps/susidns/locale/messages_pt_BR.po
index 9dd306ac7c18a5675da438f38e712bd71a11dfd5..0ed73cf87f248e9e5205f315fb96440921c978ad 100644
--- a/apps/susidns/locale/messages_pt_BR.po
+++ b/apps/susidns/locale/messages_pt_BR.po
@@ -11,8 +11,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-19 12:59+0000\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-06-09 20:07+0000\n"
 "Last-Translator: blueboy\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
@@ -65,7 +65,7 @@ msgstr "Oculto"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:231
 msgid "Signed"
-msgstr ""
+msgstr "Assinado"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:233
 msgid "Key"
@@ -114,7 +114,7 @@ msgstr[1] "O livro de endereços contém {0} entradas."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:222
 #, java-format
 msgid "Showing {0} of {1}"
-msgstr ""
+msgstr "Exibindo {0} de {1}"
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:244
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:232
@@ -134,7 +134,7 @@ msgstr "Substituir"
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
 #, java-format
 msgid "Host name {0} is already in address book, unchanged."
-msgstr ""
+msgstr "O nome de host {0} já consta no livro de endereços, não modificado."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:256
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:245
@@ -225,7 +225,7 @@ msgstr "ERRO: não foi possível escrever no arquivo do livro de endereços."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -234,14 +234,14 @@ msgstr ""
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "Se o problema persistir, verifique se o seu navegador está configurado para permitir cookies."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -252,7 +252,7 @@ msgid "Configuration saved."
 msgstr "Configuração salva."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -281,16 +281,16 @@ msgstr ""
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr ""
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr ""
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Subscrições salvas"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Subscrições recarregadas."
 
@@ -369,7 +369,7 @@ msgstr "Configuração"
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:136
 msgid "Address book"
-msgstr ""
+msgstr "Livro de endereços"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:156
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:141
@@ -438,7 +438,7 @@ msgstr "Cancelar"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "Exportar no formato hosts.txt"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
@@ -459,7 +459,7 @@ msgstr "configuração"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:162
 msgid "Hints"
-msgstr ""
+msgstr "Dicas"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:164
 msgid ""
@@ -524,7 +524,7 @@ msgstr "O seu livro de endereços privado nunca é publicado"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:188
 msgid "Port for your eepProxy (no need to change)"
-msgstr ""
+msgstr "Porta do seu eepProxy (não precisa ser mudada)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:190
 msgid "Hostname for your eepProxy (no need to change)"
diff --git a/apps/susidns/locale/messages_ro.po b/apps/susidns/locale/messages_ro.po
index 9d458e94ab471a3d82f97a1f3cc58e2d90e749ab..7f5792acd411dfd14b8f4ffc0e4d44249d400be2 100644
--- a/apps/susidns/locale/messages_ro.po
+++ b/apps/susidns/locale/messages_ro.po
@@ -7,14 +7,15 @@
 # CimpianAlin <inactive+CimpianAlin@transifex.com>, 2013
 # Petre Catalin Alexandru <cosmoreddog@gmail.com>, 2014
 # pol polearnik <polearnik@mail.ru>, 2013
+# ROXANA MOHAN <roxanna_p10@yahoo.com>, 2015
 # titus <titus0818@gmail.com>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-06-25 10:44+0000\n"
+"Last-Translator: ROXANA MOHAN <roxanna_p10@yahoo.com>\n"
 "Language-Team: Romanian (http://www.transifex.com/projects/p/I2P/language/ro/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -231,7 +232,7 @@ msgstr "EROARE: Nu sa putut scrie fișierul agendă."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -240,14 +241,14 @@ msgstr "Trimiterea formularului este invalidă, probabil pentru că ați folosit
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "Dacă problema persistă, verificați dacă aveți activate cookie-urile în browser-ul dumneavoastră."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -258,7 +259,7 @@ msgid "Configuration saved."
 msgstr "Configurare salvată."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -287,16 +288,16 @@ msgstr "Adăugarea destinație pentru {0} la serviciul-nume {1} e eșuat"
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "Ștergerea destinației pentru {0} la serviciul-nume {1} a eșuat"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "Subscrierile salvate, actualizare la adresa de carte de la sursele de subscriere salvată acum."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Subscrieri salvate."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Subscrieri reîncărcate."
 
@@ -444,7 +445,7 @@ msgstr "Anulează"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "Exportare în format hosts.txt"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
diff --git a/apps/susidns/locale/messages_tr.po b/apps/susidns/locale/messages_tr.po
index 267a58f1d1ce0d9dd143964a5a4954da5dabb110..5ce6b39635590a85dcfed4ba498cff147ba0f98b 100644
--- a/apps/susidns/locale/messages_tr.po
+++ b/apps/susidns/locale/messages_tr.po
@@ -4,15 +4,15 @@
 # To contribute translations, see http://www.i2p2.de/newdevelopers
 # 
 # Translators:
-# Kaya Zeren <kayazeren@gmail.com>, 2013
+# Kaya Zeren <kayazeren@gmail.com>, 2013,2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-08-05 15:31+0000\n"
+"Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
+"Language-Team: Turkish (Turkey) (http://www.transifex.com/otf/I2P/language/tr_TR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -22,58 +22,58 @@ msgstr ""
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:131
 #, java-format
 msgid "Host name \"{0}\" contains illegal character {1}"
-msgstr ""
+msgstr "\"{0}\" sunucu adında {1} geçersiz karakteri bulunuyor"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:144
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:146
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:153
 #, java-format
 msgid "Host name cannot start with \"{0}\""
-msgstr ""
+msgstr "Sunucu adı \"{0}\" ile başlayamaz"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:148
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:150
 #, java-format
 msgid "Host name cannot end with \"{0}\""
-msgstr ""
+msgstr "Sunucu adı \"{0}\" ile bitemez"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:155
 #, java-format
 msgid "Host name cannot contain \"{0}\""
-msgstr ""
+msgstr "Sunucu adında \"{0}\" bulunamaz"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:158
 #, java-format
 msgid ""
 "Host name \"{0}\" requires conversion to ASCII but the conversion library is"
 " unavailable in this JVM"
-msgstr ""
+msgstr "\"{0}\" sunucu adının ASCII karakterlerine dönüştürülmesi gerekiyor ancak bu JVM için dönüştürme kitaplığı kullanılamıyor"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:219
 msgid "None"
-msgstr ""
+msgstr "Yok"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:227
 msgid "Hashcash"
-msgstr ""
+msgstr "Hashcash"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:229
 msgid "Hidden"
-msgstr ""
+msgstr "Gizli"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:231
 msgid "Signed"
-msgstr ""
+msgstr "İmzalanmış"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:233
 msgid "Key"
-msgstr ""
+msgstr "Anahtar"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:235
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:260
 #, java-format
 msgid "Type {0}"
-msgstr ""
+msgstr "Tip {0}"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:247
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:254
@@ -85,25 +85,25 @@ msgstr "DSA 1024 bit"
 #, java-format
 msgid "One result for search within filtered list."
 msgid_plural "{0} results for search within filtered list."
-msgstr[0] ""
+msgstr[0] "Süzülmüş listede arama için {0} sonuç bulundu"
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:192
 #, java-format
 msgid "Filtered list contains 1 entry."
 msgid_plural "Filtered list contains {0} entries."
-msgstr[0] ""
+msgstr[0] "Süzülmüş listede {0} kayıt bulundu"
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:197
 #, java-format
 msgid "One result for search."
 msgid_plural "{0} results for search."
-msgstr[0] ""
+msgstr[0] "Arama için {0} sonuç bulundu."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:206
 #, java-format
 msgid "Address book contains 1 entry."
 msgid_plural "Address book contains {0} entries."
-msgstr[0] ""
+msgstr[0] "Adres defterinde {0} kayıt var."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:222
 #, java-format
@@ -128,7 +128,7 @@ msgstr "DeÄŸiÅŸtirin"
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:243
 #, java-format
 msgid "Host name {0} is already in address book, unchanged."
-msgstr ""
+msgstr "{0} sunucu adı zaten adres defterinde var, değiştirilmedi."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:256
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:245
@@ -136,7 +136,7 @@ msgstr ""
 msgid ""
 "Host name {0} is already in address book with a different destination. Click"
 " \"Replace\" to overwrite."
-msgstr ""
+msgstr "{0} sunucu adı zaten adres defterinde var ancak farklı bir hedefi gösteriyor. Değiştirmek için \"Değiştir\" üzerine tıklayın."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:269
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:258
@@ -153,7 +153,7 @@ msgstr "{0} için hedef değiştirildi."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:273
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:262
 msgid "Warning - host name does not end with \".i2p\""
-msgstr ""
+msgstr "Uyarı - sunucu adı \".i2p\" ile bitemez"
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:278
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:270
@@ -164,7 +164,7 @@ msgstr "Base 64 hedefi geçersiz."
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:276
 #, java-format
 msgid "Invalid host name \"{0}\"."
-msgstr ""
+msgstr "\"{0}\" sunucu adı geçersiz."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:287
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:279
@@ -178,7 +178,7 @@ msgstr "Lütfen bir sunucu adı ve hedef yazın"
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:308
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:270
 msgid "Delete Entry"
-msgstr ""
+msgstr "Kaydı Silin"
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:291
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:283
@@ -199,17 +199,17 @@ msgstr "{0} hedefi silindi."
 #, java-format
 msgid "1 destination deleted."
 msgid_plural "{0} destinations deleted."
-msgstr[0] ""
+msgstr[0] "{0} hedef silindi."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:310
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:305
 msgid "No entries selected to delete."
-msgstr ""
+msgstr "Silinmek için seçilmiş bir kayıt yok."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:318
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:312
 msgid "Address book saved."
-msgstr ""
+msgstr "Adres defteri kaydedildi."
 
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:321
 msgid "ERROR: Could not write addressbook file."
@@ -218,7 +218,7 @@ msgstr "HATA: Adres defteri dosyasına yazılamadı."
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -227,14 +227,14 @@ msgstr "Büyük olasılıkla web tarayıcınızdaki \"Geri\" ya da \"Yenile\" d
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
-msgstr ""
+msgstr "Sorun sürerse, tarayıcınızda çerezlerin etkinleştirilmiş olduğuna emin olun."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -245,7 +245,7 @@ msgid "Configuration saved."
 msgstr "Ayarlar kaydedildi."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -258,32 +258,32 @@ msgstr "Ayarlar yeniden yüklendi"
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:104
 #, java-format
 msgid "{0} address book in {1} database"
-msgstr ""
+msgstr "{0} adres defteri {1} veritabanında "
 
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:253
 msgid "Manually added via SusiDNS"
-msgstr ""
+msgstr "SusiDNS üzerine el ile eklendi"
 
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:267
 #, java-format
 msgid "Failed to add Destination for {0} to naming service {1}"
-msgstr ""
+msgstr "{0} hedefi {1} ad hizmetine eklenemedi"
 
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:291
 #, java-format
 msgid "Failed to delete Destination for {0} from naming service {1}"
-msgstr ""
+msgstr "{0} hedefi {1} ad hizmetinden silinemedi"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "Abonelikler kaydedildi, adres defteri abonelik kaynaklarına göre güncelleniyor."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Abonelikler kaydedildi."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Abonelikler yeniden yüklendi"
 
@@ -431,7 +431,7 @@ msgstr "Ä°ptal"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "hosts.txt biçiminde verin"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
@@ -521,31 +521,31 @@ msgstr "eepProxy kapınız (değiştirilmesine gerek yok)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:190
 msgid "Hostname for your eepProxy (no need to change)"
-msgstr ""
+msgstr "eepProxy sunucu adınız (değiştirilmesine gerek yok)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:192
 msgid "Whether to update the published addressbook"
-msgstr ""
+msgstr "Yayınlanmış adres defteri güncellensin"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:194
 msgid ""
 "File containing the etags header from the fetched subscription URLs (no need"
 " to change)"
-msgstr ""
+msgstr "Alınan abonelik İnternet adresinde etags üst bilgisini içeren dosya (değiştirilmesine gerek yok)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:196
 msgid ""
 "File containing the modification timestamp for each fetched subscription URL"
 " (no need to change)"
-msgstr ""
+msgstr "Alınan her bir abonelik İnternet adresi için değişiklik zaman damgasını içeren dosya (değiştirilmesine gerek yok)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:198
 msgid "File to log activity to (change to /dev/null if you like)"
-msgstr ""
+msgstr "İşlem günlük kayıtlarının yazılacağı dosya (/dev/null olarak değiştirebilirsiniz)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:200
 msgid "Name of the theme to use (defaults to 'light')"
-msgstr ""
+msgstr "Kullanılacak temanın adı (varsayılan 'açık')"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:112
 msgid "addressbook"
@@ -561,7 +561,7 @@ msgstr "Base 32 Adresi"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:204
 msgid "Base 64 Hash"
-msgstr ""
+msgstr "Base 64 Karma"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:210
 msgid "Address Helper"
@@ -605,80 +605,80 @@ msgstr "Notlar"
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:115
 msgid "Introduction"
-msgstr ""
+msgstr "GiriÅŸ"
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:137
 msgid "What is the addressbook?"
-msgstr ""
+msgstr "Adres defteri nedir?"
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:139
 msgid "The addressbook application is part of your I2P installation."
-msgstr ""
+msgstr "Adres defteri uygulaması I2P yazılımının bir parçasıdır."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:141
 msgid ""
 "It regularly updates your hosts.txt file from distributed sources or "
 "\"subscriptions\"."
-msgstr ""
+msgstr "hosts.txt dosyanızı düzenli olarak dağıtılmışkaynaklar ya da \"aboneliklerden\" günceller."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:143
 #, java-format
 msgid ""
 "In the default configuration, the address book is only subscribed to {0}."
-msgstr ""
+msgstr "Varsayılan ayarlarda, adres defteri yalnız {0} üzerine abonedir."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:145
 msgid ""
 "Subscribing to additional sites is easy, just add them to your <a "
 "href=\"subscriptions\">subscriptions</a> file."
-msgstr ""
+msgstr "Ek sitelere kolayca abone olabilirsiniz. Yalnızca siteleri <a href=\"subscriptions\">subscriptions</a> dosyasına ekleyin."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:147
 msgid ""
 "For more information on naming in I2P, see <a href=\"http://i2p-"
 "projekt.i2p/naming.html\" target=\"_top\">the overview</a>."
-msgstr ""
+msgstr "I2P adlandırmaları hakkında ayrıntılı bilgi almak için <a href=\"http://i2p-projekt.i2p/naming.html\" target=\"_top\">özet bölümüne</a> bakın."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:149
 msgid "How does the addressbook application work?"
-msgstr ""
+msgstr "Adres defteri uygulaması nasıl çalışır?"
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:151
 msgid ""
 "The addressbook application regularly polls your subscriptions and merges "
 "their content into your \"router\" address book."
-msgstr ""
+msgstr "Adres defteri uygulaması düzenli olarak aboneliklerinizi denetleyerek içeriklerini \"yöneltici\" adres defterinize aktarır."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:153
 msgid ""
 "Then it merges your \"master\" address book into the router address book as "
 "well."
-msgstr ""
+msgstr "Ardından \"ana\" adres defterinizi yönelticinin adres defterine aktarır."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:155
 msgid ""
 "If configured, the router address book is now written to the \"published\" "
 "address book, which will be publicly available if you are running an "
 "eepsite."
-msgstr ""
+msgstr "Eepsite çalıştırıyorsanız ve uygun seçeneği etkinleştirdiyseniz, yöneltici adres defteri herkes tarafından görülebilecek \"yayınlanmış\" adres defterine yazılır."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:157
 msgid ""
 "The router also uses a private address book (not shown in the picture), "
 "which is not merged or published."
-msgstr ""
+msgstr "Yöneltici ayrıca aktarılmayan ya da yayınlanmayan bir kişisel adres defteri (görselde görüntülenmeyen) kullanır."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:159
 msgid ""
 "Hosts in the private address book can be accessed by you but their addresses"
 " are never distributed to others."
-msgstr ""
+msgstr "Kişisel adres defterindeki sunuculara yalnız siz erişebilirsiniz. Bu adresler asla diğer kişiler ile paylaşılmaz."
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:161
 msgid ""
 "The private address book can also be used for aliases of hosts in your other"
 " address books."
-msgstr ""
+msgstr "Kişisel adres defteri ayrıca diğer adres defterlerinizdeki sunucu kısaltmaları için kullanılabilir."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:117
 msgid "subscriptions"
@@ -686,30 +686,30 @@ msgstr "abonelikler"
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:153
 msgid "The subscription file contains a list of i2p URLs."
-msgstr ""
+msgstr "Abonelik dosyasında I2P İnternet adreslerinin listesi bulunur."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:155
 msgid ""
 "The addressbook application regularly checks this list for new eepsites."
-msgstr ""
+msgstr "Adres defteri uygulaması düzenli olarak yeni eepsiteleri için bu listeyi denetler."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:157
 msgid "Those URLs refer to published hosts.txt files."
-msgstr ""
+msgstr "Bu İnternet adresleri yayınlanmış hosts.txt dosyalarını gösterir."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:159
 #, java-format
 msgid ""
 "The default subscription is the hosts.txt from {0}, which is updated "
 "infrequently."
-msgstr ""
+msgstr "hosts.txt  dosyasındaki varsayılan abonelik olan {0} sık güncellenmez."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:161
 msgid ""
 "So it is a good idea to add additional subscriptions to sites that have the "
 "latest addresses."
-msgstr ""
+msgstr "Bu nedenle güncel adresleri bulunduran sitelerin aboneliğini eklemek iyi olur."
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:163
 msgid "See the FAQ for a list of subscription URLs."
-msgstr ""
+msgstr "Abonelik İnternet adreslerinin listesi için SSS bölümüne bakın."
diff --git a/apps/susidns/locale/messages_uk.po b/apps/susidns/locale/messages_uk.po
index 916d1af3f781db590670cb91589225a459e9d8f9..8151a05b1ada3a3fe83b5a03a5b582b398d7b547 100644
--- a/apps/susidns/locale/messages_uk.po
+++ b/apps/susidns/locale/messages_uk.po
@@ -6,22 +6,23 @@
 # Translators:
 # 007 <Andrik007d@rambler.ru>, 2014
 # 007 <Andrik007d@rambler.ru>, 2014
-# Denis Blank <gribua@gmail.com>, 2011-2012
-# Denis Blank <gribua@gmail.com>, 2011
-# Denis Blank <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011-2012
+# Denis Lysenko <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011
 # LinuxChata, 2014
 # LinuxChata, 2014
 # madjong <madjong@i2pmail.org>, 2014
 # madjong <madjong@i2pmail.org>, 2014
-# Denis Blank <gribua@gmail.com>, 2012
+# Maxym Mykhalchuk, 2015
+# Denis Lysenko <gribua@gmail.com>, 2012
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-08-07 16:52+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -237,7 +238,7 @@ msgstr "ПОМИЛКА: Не вдалось зберегти файл адрес
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -246,14 +247,14 @@ msgstr "Форма не прийнята, скоріше всього це ві
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "Якщо проблема не усунена, то перевірте, чи у вашому браузері увімкнено куки (cookies)."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -264,7 +265,7 @@ msgid "Configuration saved."
 msgstr "Налаштування збережені."
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -293,16 +294,16 @@ msgstr "Не вдалося додати адресу призначення д
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "Не вдалося видалити адресу призначення для {0} із служби імен {1}"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "Підписки збережені, запущено завантаження підписок і оновлення адресної книги."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "Підписки збережені."
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "Підписки перезавантаженні."
 
@@ -450,7 +451,7 @@ msgstr "Відмінити"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "Експорт у форматі hosts.txt"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
diff --git a/apps/susidns/locale/messages_zh.po b/apps/susidns/locale/messages_zh.po
index 51367c7ebad291361f8884400497c0a7691f4e06..429591c45b4e0daac1cfe2db0e64568c9dcbe74a 100644
--- a/apps/susidns/locale/messages_zh.po
+++ b/apps/susidns/locale/messages_zh.po
@@ -9,14 +9,14 @@
 # walking <walking@i2pmail.org>, 2011
 # walking <waling@mail.i2p>, 2013
 # walking <walking@i2pmail.org>, 2011
-# YF <yfdyh000@gmail.com>, 2014
+# YF <yfdyh000@gmail.com>, 2014-2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-14 08:33+0000\n"
-"PO-Revision-Date: 2015-05-14 08:34+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"POT-Creation-Date: 2015-07-17 01:13+0000\n"
+"PO-Revision-Date: 2015-06-08 10:13+0000\n"
+"Last-Translator: YF <yfdyh000@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -64,7 +64,7 @@ msgstr "Hashcash"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:229
 msgid "Hidden"
-msgstr "隐藏"
+msgstr "隐身"
 
 #: ../src/java/src/i2p/susi/dns/AddressBean.java:231
 msgid "Signed"
@@ -223,7 +223,7 @@ msgstr "错误:无法写入地址簿文件"
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:326
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:108
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:316
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:157
 msgid ""
 "Invalid form submission, probably because you used the \"back\" or "
 "\"reload\" button on your browser. Please resubmit."
@@ -232,14 +232,14 @@ msgstr "提交数据无效,可能的原因是您使用了浏览器中的“前
 #: ../src/java/src/i2p/susi/dns/AddressbookBean.java:328
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:110
 #: ../src/java/src/i2p/susi/dns/NamingServiceBean.java:318
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:155
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:159
 msgid ""
 "If the problem persists, verify that you have cookies enabled in your "
 "browser."
 msgstr "如果问题持续出现,请检查您的浏览器是否已启用cookie。"
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:99
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:128
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:131
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:160
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:151
 msgid "Save"
@@ -250,7 +250,7 @@ msgid "Configuration saved."
 msgstr "配置已保存"
 
 #: ../src/java/src/i2p/susi/dns/ConfigBean.java:102
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:147
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:151
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:158
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:149
 msgid "Reload"
@@ -279,16 +279,16 @@ msgstr "域名服务{1}中的目标{0}添加失败。"
 msgid "Failed to delete Destination for {0} from naming service {1}"
 msgstr "域名服务{1}中的目标{0}删除失败。"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:140
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:144
 msgid ""
 "Subscriptions saved, updating addressbook from subscription sources now."
 msgstr "订阅已保存,正在通过订阅地址更新地址簿。"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:145
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
 msgid "Subscriptions saved."
 msgstr "订阅已保存。"
 
-#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:149
+#: ../src/java/src/i2p/susi/dns/SubscriptionsBean.java:153
 msgid "Subscriptions reloaded."
 msgstr "订阅设置已重新载入。"
 
@@ -372,7 +372,7 @@ msgstr "地址簿"
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:156
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:141
 msgid "Storage"
-msgstr "储存"
+msgstr "存储"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:174
 msgid "Filter"
@@ -436,7 +436,7 @@ msgstr "取消"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:373
 msgid "Export in hosts.txt format"
-msgstr ""
+msgstr "导出 hosts.txt 格式"
 
 #: ../src/tmp/i2p/susi/dns/jsp/addressbook_jsp.java:396
 msgid "This address book is empty."
@@ -506,11 +506,11 @@ msgstr "更新周期(小时)"
 msgid ""
 "Your public hosts.txt file (choose a path within your webserver document "
 "root)"
-msgstr "您发布的公开地址簿 hosts.txt (请指定为您Web服务器目录中的某个路径以便发布。)"
+msgstr "您公开发布的地址簿 hosts.txt 文件 (请在您的Web服务器目录中选择一个位置以便发布。)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:182
 msgid "Your hosts.txt (don't change)"
-msgstr "您的 host.txt (无需修改)"
+msgstr "您的 hosts.txt (不要修改)"
 
 #: ../src/tmp/i2p/susi/dns/jsp/config_jsp.java:184
 msgid "Your personal addressbook, these hosts will be published"
@@ -586,7 +586,7 @@ msgstr "ElGamal 2048位"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:226
 msgid "Signing Key"
-msgstr "签名钥匙"
+msgstr "签名密钥"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:232
 msgid "Certificate"
@@ -594,7 +594,7 @@ msgstr "证书"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:238
 msgid "Added Date"
-msgstr "加入日期"
+msgstr "添加时间"
 
 #: ../src/tmp/i2p/susi/dns/jsp/details_jsp.java:244
 msgid "Source"
@@ -624,7 +624,7 @@ msgstr "地址簿程序是I2P软件的一部分。"
 msgid ""
 "It regularly updates your hosts.txt file from distributed sources or "
 "\"subscriptions\"."
-msgstr "他通过分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 host.txt。"
+msgstr "它定期从分散的来源或称地址簿“订阅”(概念类似RSS)更新您的地址簿文件 hosts.txt。"
 
 #: ../src/tmp/i2p/susi/dns/jsp/index_jsp.java:143
 #, java-format
@@ -700,14 +700,14 @@ msgstr "地址簿程序定期通过这些链接检查是否有新的I2P匿名网
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:157
 msgid "Those URLs refer to published hosts.txt files."
-msgstr "这些URL指向公开发布的hosts.txt文件。"
+msgstr "这些URL指向公开发布的 hosts.txt 文件。"
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:159
 #, java-format
 msgid ""
 "The default subscription is the hosts.txt from {0}, which is updated "
 "infrequently."
-msgstr "默认订阅是来自 {0} 的 hosts.txt,这很少更新。"
+msgstr "默认订阅是来自 {0} 的 hosts.txt,它很少更新。"
 
 #: ../src/tmp/i2p/susi/dns/jsp/subscriptions_jsp.java:161
 msgid ""
diff --git a/apps/susidns/src/bundle-messages.sh b/apps/susidns/src/bundle-messages.sh
index 02b13080b2d8587464930a36e6a03cedbb98b37d..25bfae4d7a24d8ccccb15a3df2633267dcf19019 100755
--- a/apps/susidns/src/bundle-messages.sh
+++ b/apps/susidns/src/bundle-messages.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../src/ so the refs will work in the po file
 JPATHS="../src/java/ ../src/tmp/"
@@ -63,15 +63,15 @@ do
 	 	echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
-		# intl._("foo")
+		# intl._t("foo")
 		# In a jsp, you must use a helper or handler that has the context set.
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean updater.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x --keyword=intl._ --keyword=intl.title \
+	                 --keyword=_t --keyword=_x --keyword=intl._ --keyword=intl.title \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/AddressBean.java b/apps/susidns/src/java/src/i2p/susi/dns/AddressBean.java
index 70b29e72fa0b9f6df7b81e3aef21c0adeeb25f17..9cd3821df2a8f1e00ab41d02198720f2061e81b1 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/AddressBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/AddressBean.java
@@ -128,7 +128,7 @@ public class AddressBean
 			    c >= 0x5b && c <= 0x60 ||
 			    c >= 0x7b && c <= 0x7f) {
 				String bad = "\"" + c + "\" (0x" + Integer.toHexString(c) + ')';
-				throw new IllegalArgumentException(_("Host name \"{0}\" contains illegal character {1}",
+				throw new IllegalArgumentException(_t("Host name \"{0}\" contains illegal character {1}",
                                                                      host, bad));
 			}
 			if (c == DOT2)
@@ -141,21 +141,21 @@ public class AddressBean
 				needsIDN = true;
 		}
 		if (host.startsWith("-"))
-			throw new IllegalArgumentException(_("Host name cannot start with \"{0}\"", "-"));
+			throw new IllegalArgumentException(_t("Host name cannot start with \"{0}\"", "-"));
 		if (host.startsWith("."))
-			throw new IllegalArgumentException(_("Host name cannot start with \"{0}\"", "."));
+			throw new IllegalArgumentException(_t("Host name cannot start with \"{0}\"", "."));
 		if (host.endsWith("-"))
-			throw new IllegalArgumentException(_("Host name cannot end with \"{0}\"", "-"));
+			throw new IllegalArgumentException(_t("Host name cannot end with \"{0}\"", "-"));
 		if (host.endsWith("."))
-			throw new IllegalArgumentException(_("Host name cannot end with \"{0}\"", "."));
+			throw new IllegalArgumentException(_t("Host name cannot end with \"{0}\"", "."));
 		if (needsIDN) {
 			if (host.startsWith("xn--"))
-				throw new IllegalArgumentException(_("Host name cannot start with \"{0}\"", "xn--"));
+				throw new IllegalArgumentException(_t("Host name cannot start with \"{0}\"", "xn--"));
 			if (host.contains(".xn--"))
-				throw new IllegalArgumentException(_("Host name cannot contain \"{0}\"", ".xn--"));
+				throw new IllegalArgumentException(_t("Host name cannot contain \"{0}\"", ".xn--"));
 			if (haveIDN)
 				return IDN.toASCII(host, IDN.ALLOW_UNASSIGNED);
-			throw new IllegalArgumentException(_("Host name \"{0}\" requires conversion to ASCII but the conversion library is unavailable in this JVM", host));
+			throw new IllegalArgumentException(_t("Host name \"{0}\" requires conversion to ASCII but the conversion library is unavailable in this JVM", host));
 		}
 		return host;
 	}
@@ -216,7 +216,7 @@ public class AddressBean
 		// (4 / 3) * (pubkey length + signing key length)
 		String cert = destination.substring(512);
                 if (cert.equals("AAAA"))
-			return _("None");
+			return _t("None");
 		byte[] enc = Base64.decode(cert);
 		if (enc == null)
 			// shouldn't happen
@@ -224,15 +224,15 @@ public class AddressBean
 		int type = enc[0] & 0xff;
 		switch (type) {
 			case Certificate.CERTIFICATE_TYPE_HASHCASH:
-				return _("Hashcash");
+				return _t("Hashcash");
 			case Certificate.CERTIFICATE_TYPE_HIDDEN:
-				return _("Hidden");
+				return _t("Hidden");
 			case Certificate.CERTIFICATE_TYPE_SIGNED:
-				return _("Signed");
+				return _t("Signed");
 			case Certificate.CERTIFICATE_TYPE_KEY:
-				return _("Key");
+				return _t("Key");
 			default:
-				return _("Type {0}", type);
+				return _t("Type {0}", type);
 		}
 	}
 
@@ -244,20 +244,20 @@ public class AddressBean
 		// (4 / 3) * (pubkey length + signing key length)
 		String cert = destination.substring(512);
 		if (cert.equals("AAAA"))
-			return _("DSA 1024 bit");
+			return _t("DSA 1024 bit");
 		byte[] enc = Base64.decode(cert);
 		if (enc == null)
 			// shouldn't happen
 			return "invalid";
 		int type = enc[0] & 0xff;
 		if (type != Certificate.CERTIFICATE_TYPE_KEY)
-			return _("DSA 1024 bit");
+			return _t("DSA 1024 bit");
 		int st = ((enc[3] & 0xff) << 8) | (enc[4] & 0xff);
 		if (st == 0)
-			return _("DSA 1024 bit");
+			return _t("DSA 1024 bit");
 		SigType stype = SigType.getByCode(st);
                 if (stype == null)
-			return _("Type {0}", st);
+			return _t("Type {0}", st);
                 return stype.toString();
 	}
 
@@ -281,17 +281,17 @@ public class AddressBean
 	}
 
 	/** translate */
-	private static String _(String s) {
+	private static String _t(String s) {
 		return Messages.getString(s);
 	}
 
 	/** translate */
-	private static String _(String s, Object o) {
+	private static String _t(String s, Object o) {
 		return Messages.getString(s, o);
 	}
 
 	/** translate */
-	private static String _(String s, Object o, Object o2) {
+	private static String _t(String s, Object o, Object o2) {
 		return Messages.getString(s, o, o2);
 	}
 }
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java b/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java
index 4e616e2618d4782c9fbdff0363dbdc70c7a00342..360310682a9f4845c4107bafee031127f4c6a931 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java
@@ -200,7 +200,7 @@ public class AddressbookBean extends BaseBean
 		} else {
 			if (resultCount <= 0)
 				// covered in jsp
-				//message = _("This addressbook is empty.");
+				//message = _t("This addressbook is empty.");
 				message = "";
 			else
 				message = ngettext("Address book contains 1 entry.",
@@ -219,7 +219,7 @@ public class AddressbookBean extends BaseBean
 				           "&amp;begin=" + newBegin + "&amp;end=" + newEnd + "\">" + (newBegin+1) +
 				           '-' + (newEnd+1) + "</a> | ";
 	       		}
-			message += ' ' + _("Showing {0} of {1}", "" + (getBeginInt()+1) + '-' + (getEndInt()+1), Integer.valueOf(resultCount));
+			message += ' ' + _t("Showing {0} of {1}", "" + (getBeginInt()+1) + '-' + (getEndInt()+1), Integer.valueOf(resultCount));
 			if (getEndInt() < resultCount - 1) {
 				int newBegin = Math.min(resultCount - 1, getEndInt() + 1);
 				int newEnd = Math.min(resultCount, getEndInt() + DISPLAY_SIZE);
@@ -241,7 +241,7 @@ public class AddressbookBean extends BaseBean
                         if (_context.getBooleanProperty(PROP_PW_ENABLE) ||
 			    (serial != null && serial.equals(lastSerial))) {
 				boolean changed = false;
-				if (action.equals(_("Add")) || action.equals(_("Replace"))) {
+				if (action.equals(_t("Add")) || action.equals(_t("Replace"))) {
 					if( addressbook != null && hostname != null && destination != null ) {
 						try {
 							// throws IAE with translated message
@@ -251,9 +251,9 @@ public class AddressbookBean extends BaseBean
 
 							String oldDest = (String) addressbook.get(host);
 							if (destination.equals(oldDest)) {
-								message = _("Host name {0} is already in address book, unchanged.", displayHost);
-							} else if (oldDest != null && !action.equals(_("Replace"))) {
-								message = _("Host name {0} is already in address book with a different destination. Click \"Replace\" to overwrite.", displayHost);
+								message = _t("Host name {0} is already in address book, unchanged.", displayHost);
+							} else if (oldDest != null && !action.equals(_t("Replace"))) {
+								message = _t("Host name {0} is already in address book with a different destination. Click \"Replace\" to overwrite.", displayHost);
 							} else {
 								boolean valid = true;
 								try {
@@ -266,29 +266,29 @@ public class AddressbookBean extends BaseBean
 									addressbook.put( host, destination );
 									changed = true;
 									if (oldDest == null)
-										message = _("Destination added for {0}.", displayHost);
+										message = _t("Destination added for {0}.", displayHost);
 									else
-										message = _("Destination changed for {0}.", displayHost);
+										message = _t("Destination changed for {0}.", displayHost);
 									if (!host.endsWith(".i2p"))
-										message += "<br>" + _("Warning - host name does not end with \".i2p\"");
+										message += "<br>" + _t("Warning - host name does not end with \".i2p\"");
 									// clear form
 									hostname = null;
 									destination = null;
 								} else {
-									message = _("Invalid Base 64 destination.");
+									message = _t("Invalid Base 64 destination.");
 								}
 							}
 						} catch (IllegalArgumentException iae) {
 							message = iae.getMessage();
 							if (message == null)
-								message = _("Invalid host name \"{0}\".", hostname);
+								message = _t("Invalid host name \"{0}\".", hostname);
 						}
 					} else {
-						message = _("Please enter a host name and destination");
+						message = _t("Please enter a host name and destination");
 					}
 					// clear search when adding
 					search = null;
-				} else if (action.equals(_("Delete Selected")) || action.equals(_("Delete Entry"))) {
+				} else if (action.equals(_t("Delete Selected")) || action.equals(_t("Delete Entry"))) {
 					String name = null;
 					int deleted = 0;
 					for (String n : deletionMarks) {
@@ -302,30 +302,30 @@ public class AddressbookBean extends BaseBean
 					}
 					if( changed ) {
 						if (deleted == 1)
-							message = _("Destination {0} deleted.", name);
+							message = _t("Destination {0} deleted.", name);
 						else
 							// parameter will always be >= 2
 							message = ngettext("1 destination deleted.", "{0} destinations deleted.", deleted);
 					} else {
-						message = _("No entries selected to delete.");
+						message = _t("No entries selected to delete.");
 					}
-					if (action.equals(_("Delete Entry")))
+					if (action.equals(_t("Delete Entry")))
 						search = null;
 				}
 				if( changed ) {
 					try {
 						save();
-						message += "<br>" + _("Address book saved.");
+						message += "<br>" + _t("Address book saved.");
 					} catch (Exception e) {
 						warn(e);
-						message += "<br>" + _("ERROR: Could not write addressbook file.");
+						message += "<br>" + _t("ERROR: Could not write addressbook file.");
 					}
 				}
 			}			
 			else {
-				message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
+				message = _t("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
                                           + ' ' +
-                                          _("If the problem persists, verify that you have cookies enabled in your browser.");
+                                          _t("If the problem persists, verify that you have cookies enabled in your browser.");
 			}
 		}
 		
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java b/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java
index 08ca6dd31353397809c212771ad9960d9c805d96..e4449a4e088eb8cad3fa3f0f48338310bbeae5ec 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/BaseBean.java
@@ -165,7 +165,7 @@ public class BaseBean
      * Translate
      * @since 0.9.13 moved from subclasses
      */
-    protected static String _(String s) {
+    protected static String _t(String s) {
         return Messages.getString(s);
     }
 
@@ -173,7 +173,7 @@ public class BaseBean
      * Translate
      * @since 0.9.13 moved from subclasses
      */
-    protected static String _(String s, Object o) {
+    protected static String _t(String s, Object o) {
         return Messages.getString(s, o);
     }
 
@@ -181,7 +181,7 @@ public class BaseBean
      * Translate
      * @since 0.9.13 moved from subclasses
      */
-    protected static String _(String s, Object o, Object o2) {
+    protected static String _t(String s, Object o, Object o2) {
         return Messages.getString(s, o, o2);
     }
 
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java b/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java
index 57f8fefe5530b1261465956f0a9466245877c5f9..d5f3e0955a209247a71f3f30c63c37b17fb0c8c8 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/ConfigBean.java
@@ -96,18 +96,18 @@ public class ConfigBean extends BaseBean implements Serializable {
 		if( action != null ) {
                         if (I2PAppContext.getGlobalContext().getBooleanProperty(BaseBean.PROP_PW_ENABLE) ||
 			    (serial != null && serial.equals(lastSerial))) {
-				if(action.equals(_("Save"))) {
+				if(action.equals(_t("Save"))) {
 					save();
-					message = _("Configuration saved.");
-				} else if (action.equals(_("Reload"))) {
+					message = _t("Configuration saved.");
+				} else if (action.equals(_t("Reload"))) {
 					reload();
-					message = _("Configuration reloaded.");
+					message = _t("Configuration reloaded.");
 				}
 			}			
 			else {
-				message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
+				message = _t("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
                                           + ' ' +
-                                          _("If the problem persists, verify that you have cookies enabled in your browser.");
+                                          _t("If the problem persists, verify that you have cookies enabled in your browser.");
 			}
 		}
 		if( message.length() > 0 )
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/Messages.java b/apps/susidns/src/java/src/i2p/susi/dns/Messages.java
index 99aa07c0f5b2c1795472de635259557235bb1631..940a341f8cdf664552b79bc116417db9d3cd3b3a 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/Messages.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/Messages.java
@@ -16,12 +16,12 @@ public class Messages {
     }
 
     /** lang in routerconsole.lang property, else current locale */
-    public String _(String key) {
+    public String _t(String key) {
         return Translate.getString(key, _context, BUNDLE_NAME);
     }
 
     /** @since 0.9.11 */
-    public String _(String key, Object o) {
+    public String _t(String key, Object o) {
         return Translate.getString(key, o, _context, BUNDLE_NAME);
     }
 
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java b/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java
index 2faefb8531e1d5eb7934ec40a7b993ae37add129..14eaebbd732779766e6fc08aa68573c907b34685 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/NamingServiceBean.java
@@ -101,7 +101,7 @@ public class NamingServiceBean extends AddressbookBean
 		if (isDirect())
 			return super.getDisplayName();
 		loadConfig();
-		return _("{0} address book in {1} database", getFileName(), getNamingService().getName());
+		return _t("{0} address book in {1} database", getFileName(), getNamingService().getName());
 	}
 
 	/** depth-first search */
@@ -229,7 +229,7 @@ public class NamingServiceBean extends AddressbookBean
                         if (_context.getBooleanProperty(PROP_PW_ENABLE) ||
 			    (serial != null && serial.equals(lastSerial))) {
 				boolean changed = false;
-				if (action.equals(_("Add")) || action.equals(_("Replace"))) {
+				if (action.equals(_t("Add")) || action.equals(_t("Replace"))) {
 					if(hostname != null && destination != null) {
 						try {
 							// throws IAE with translated message
@@ -240,9 +240,9 @@ public class NamingServiceBean extends AddressbookBean
 							Properties outProperties= new Properties();
 							Destination oldDest = getNamingService().lookup(host, nsOptions, outProperties);
 							if (oldDest != null && destination.equals(oldDest.toBase64())) {
-								message = _("Host name {0} is already in address book, unchanged.", displayHost);
-							} else if (oldDest != null && !action.equals(_("Replace"))) {
-								message = _("Host name {0} is already in address book with a different destination. Click \"Replace\" to overwrite.", displayHost);
+								message = _t("Host name {0} is already in address book, unchanged.", displayHost);
+							} else if (oldDest != null && !action.equals(_t("Replace"))) {
+								message = _t("Host name {0} is already in address book with a different destination. Click \"Replace\" to overwrite.", displayHost);
 							} else {
 								try {
 									Destination dest = new Destination(destination);
@@ -250,37 +250,37 @@ public class NamingServiceBean extends AddressbookBean
 										nsOptions.putAll(outProperties);
 							                        nsOptions.setProperty("m", Long.toString(_context.clock().now()));
 									}
-						                        nsOptions.setProperty("s", _("Manually added via SusiDNS"));
+						                        nsOptions.setProperty("s", _t("Manually added via SusiDNS"));
 									boolean success = getNamingService().put(host, dest, nsOptions);
 									if (success) {
 										changed = true;
 										if (oldDest == null)
-											message = _("Destination added for {0}.", displayHost);
+											message = _t("Destination added for {0}.", displayHost);
 										else
-											message = _("Destination changed for {0}.", displayHost);
+											message = _t("Destination changed for {0}.", displayHost);
 										if (!host.endsWith(".i2p"))
-											message += "<br>" + _("Warning - host name does not end with \".i2p\"");
+											message += "<br>" + _t("Warning - host name does not end with \".i2p\"");
 										// clear form
 										hostname = null;
 										destination = null;
 									} else {
-										message = _("Failed to add Destination for {0} to naming service {1}", displayHost, getNamingService().getName()) + "<br>";
+										message = _t("Failed to add Destination for {0} to naming service {1}", displayHost, getNamingService().getName()) + "<br>";
 									}
 								} catch (DataFormatException dfe) {
-									message = _("Invalid Base 64 destination.");
+									message = _t("Invalid Base 64 destination.");
 								}
 							}
 						} catch (IllegalArgumentException iae) {
 							message = iae.getMessage();
 							if (message == null)
-								message = _("Invalid host name \"{0}\".", hostname);
+								message = _t("Invalid host name \"{0}\".", hostname);
 						}
 					} else {
-						message = _("Please enter a host name and destination");
+						message = _t("Please enter a host name and destination");
 					}
 					// clear search when adding
 					search = null;
-				} else if (action.equals(_("Delete Selected")) || action.equals(_("Delete Entry"))) {
+				} else if (action.equals(_t("Delete Selected")) || action.equals(_t("Delete Entry"))) {
 					String name = null;
 					int deleted = 0;
 					for (String n : deletionMarks) {
@@ -288,7 +288,7 @@ public class NamingServiceBean extends AddressbookBean
 						String uni = AddressBean.toUnicode(n);
 						String displayHost = uni.equals(n) ? n :  uni + " (" + n + ')';
 						if (!success) {
-							message += _("Failed to delete Destination for {0} from naming service {1}", displayHost, getNamingService().getName()) + "<br>";
+							message += _t("Failed to delete Destination for {0} from naming service {1}", displayHost, getNamingService().getName()) + "<br>";
 						} else if (deleted++ == 0) {
 							changed = true;
 							name = displayHost;
@@ -297,25 +297,25 @@ public class NamingServiceBean extends AddressbookBean
 					if( changed ) {
 						if (deleted == 1)
 							// parameter is a host name
-							message += _("Destination {0} deleted.", name);
+							message += _t("Destination {0} deleted.", name);
 						else
 							// parameter will always be >= 2
 							message = ngettext("1 destination deleted.", "{0} destinations deleted.", deleted);
 					} else {
-						message = _("No entries selected to delete.");
+						message = _t("No entries selected to delete.");
 					}
 					// clear search when deleting
-					if (action.equals(_("Delete Entry")))
+					if (action.equals(_t("Delete Entry")))
 						search = null;
 				}
 				if( changed ) {
-					message += "<br>" + _("Address book saved.");
+					message += "<br>" + _t("Address book saved.");
 				}
 			}			
 			else {
-				message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
+				message = _t("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
                                           + ' ' +
-                                          _("If the problem persists, verify that you have cookies enabled in your browser.");
+                                          _t("If the problem persists, verify that you have cookies enabled in your browser.");
 			}
 		}
 		
diff --git a/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java b/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java
index e1088557ab86031f9afc82b7f47d39ea5719d3b2..c1043260f29ea192f0a637516fc516d6875c7cdc 100644
--- a/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java
+++ b/apps/susidns/src/java/src/i2p/susi/dns/SubscriptionsBean.java
@@ -27,9 +27,11 @@ package i2p.susi.dns;
 import java.io.ByteArrayInputStream;
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileReader;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -71,7 +73,7 @@ public class SubscriptionsBean extends BaseBean
 			StringBuilder buf = new StringBuilder();
 			BufferedReader br = null;
 			try {
-				br = new BufferedReader( new FileReader( file ) );
+				br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
 				String line;
 				while( ( line = br.readLine() ) != null ) {
 					buf.append( line );
@@ -108,7 +110,7 @@ public class SubscriptionsBean extends BaseBean
                                     urls.add(line);
 			}
 			Collections.sort(urls);
-			PrintWriter out = new PrintWriter( new SecureFileOutputStream( file ) );
+			PrintWriter out = new PrintWriter(new OutputStreamWriter(new SecureFileOutputStream(file), "UTF-8"));
 			for (String url : urls) {
 				out.println(url);
 			}
@@ -126,7 +128,7 @@ public class SubscriptionsBean extends BaseBean
 		if( action != null ) {
                         if (_context.getBooleanProperty(PROP_PW_ENABLE) ||
 			    (serial != null && serial.equals(lastSerial))) {
-				if (action.equals(_("Save"))) {
+				if (action.equals(_t("Save"))) {
 					save();
 				/*******
 					String nonce = System.getProperty("addressbook.nonce");
@@ -139,22 +141,22 @@ public class SubscriptionsBean extends BaseBean
 				*******/
 					if (content != null && content.length() > 2 &&
 					    _context.portMapper().getPort(PortMapper.SVC_HTTP_PROXY) > 0) {
-						message = _("Subscriptions saved, updating addressbook from subscription sources now.");
+						message = _t("Subscriptions saved, updating addressbook from subscription sources now.");
 						          // + "<img height=\"1\" width=\"1\" alt=\"\" " +
 						          // "src=\"/addressbook/?wakeup=1&nonce=" + nonce + "\">";
 						_context.namingService().requestUpdate(null);
 					} else {
-						message = _("Subscriptions saved.");
+						message = _t("Subscriptions saved.");
 					}
-				} else if (action.equals(_("Reload"))) {
+				} else if (action.equals(_t("Reload"))) {
 					reloadSubs();
-					message = _("Subscriptions reloaded.");
+					message = _t("Subscriptions reloaded.");
 				}
 			}			
 			else {
-				message = _("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
+				message = _t("Invalid form submission, probably because you used the \"back\" or \"reload\" button on your browser. Please resubmit.")
                                           + ' ' +
-                                          _("If the problem persists, verify that you have cookies enabled in your browser.");
+                                          _t("If the problem persists, verify that you have cookies enabled in your browser.");
 			}
 		}
 		if( message.length() > 0 )
diff --git a/apps/susidns/src/jsp/addressbook.jsp b/apps/susidns/src/jsp/addressbook.jsp
index 806504b516f4455eb93ab6a9e2f4dbe3a4178cab..20ff0bfef010c609c458fc2e901a2dbcf4e1d5b6 100644
--- a/apps/susidns/src/jsp/addressbook.jsp
+++ b/apps/susidns/src/jsp/addressbook.jsp
@@ -48,31 +48,31 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>${book.book} <%=intl._("address book")%> - susidns</title>
+<title>${book.book} <%=intl._t("address book")%> - susidns</title>
 <link rel="stylesheet" type="text/css" href="<%=book.getTheme()%>susidns.css">
 </head>
 <body>
 <div class="page">
 <div id="logo">
-<a href="index"><img src="<%=book.getTheme()%>images/logo.png" alt="" title="<%=intl._("Overview")%>" border="0"/></a>
+<a href="index"><img src="<%=book.getTheme()%>images/logo.png" alt="" title="<%=intl._t("Overview")%>" border="0"/></a>
 </div>
 <hr>
 <div id="navi">
 <p>
-<%=intl._("Address books")%>:
-<a href="addressbook?book=private&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("private")%></a> |
-<a href="addressbook?book=master&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("master")%></a> |
-<a href="addressbook?book=router&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("router")%></a> |
-<a href="addressbook?book=published&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("published")%></a> *
-<a href="subscriptions"><%=intl._("Subscriptions")%></a> *
-<a href="config"><%=intl._("Configuration")%></a> *
-<a href="index"><%=intl._("Overview")%></a>
+<%=intl._t("Address books")%>:
+<a href="addressbook?book=private&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("private")%></a> |
+<a href="addressbook?book=master&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("master")%></a> |
+<a href="addressbook?book=router&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("router")%></a> |
+<a href="addressbook?book=published&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("published")%></a> *
+<a href="subscriptions"><%=intl._t("Subscriptions")%></a> *
+<a href="config"><%=intl._t("Configuration")%></a> *
+<a href="index"><%=intl._t("Overview")%></a>
 </p>
 </div>
 <hr>
 <div id="headline">
-<h3><%=intl._("Address book")%>: <%=intl._(book.getBook())%></h3>
-<h4><%=intl._("Storage")%>: ${book.displayName}</h4>
+<h3><%=intl._t("Address book")%>: <%=intl._t(book.getBook())%></h3>
+<h4><%=intl._t("Storage")%>: ${book.displayName}</h4>
 </div>
 
 <div id="messages">${book.messages}</div>
@@ -81,7 +81,7 @@ ${book.loadBookMessages}
 
 <c:if test="${book.notEmpty}">
 <div id="filter">
-<p><%=intl._("Filter")%>:
+<p><%=intl._t("Filter")%>:
 <a href="addressbook?filter=a&amp;begin=0&amp;end=49">a</a>
 <a href="addressbook?filter=b&amp;begin=0&amp;end=49">b</a>
 <a href="addressbook?filter=c&amp;begin=0&amp;end=49">c</a> 
@@ -109,11 +109,11 @@ ${book.loadBookMessages}
 <a href="addressbook?filter=y&amp;begin=0&amp;end=49">y</a>
 <a href="addressbook?filter=z&amp;begin=0&amp;end=49">z</a>
 <a href="addressbook?filter=0-9&amp;begin=0&amp;end=49">0-9</a>
-<a href="addressbook?filter=xn--&amp;begin=0&amp;end=49"><%=intl._("other")%></a>
-<a href="addressbook?filter=none&amp;begin=0&amp;end=49"><%=intl._("all")%></a></p>
+<a href="addressbook?filter=xn--&amp;begin=0&amp;end=49"><%=intl._t("other")%></a>
+<a href="addressbook?filter=none&amp;begin=0&amp;end=49"><%=intl._t("all")%></a></p>
 <c:if test="${book.hasFilter}">
-<p><%=intl._("Current filter")%>: ${book.filter}
-(<a href="addressbook?filter=none&amp;begin=0&amp;end=49"><%=intl._("clear filter")%></a>)</p>
+<p><%=intl._t("Current filter")%>: ${book.filter}
+(<a href="addressbook?filter=none&amp;begin=0&amp;end=49"><%=intl._t("clear filter")%></a>)</p>
 </c:if>
 </div>
 
@@ -122,8 +122,8 @@ ${book.loadBookMessages}
 <input type="hidden" name="begin" value="0">
 <input type="hidden" name="end" value="49">
 <table><tr>
-<td class="search"><%=intl._("Search")%>: <input class="search" type="text" name="search" value="${book.search}" size="20" ></td>
-<td class="search"><input class="search" type="submit" name="submitsearch" value="<%=intl._("Search")%>" ></td>
+<td class="search"><%=intl._t("Search")%>: <input class="search" type="text" name="search" value="${book.search}" size="20" ></td>
+<td class="search"><input class="search" type="submit" name="submitsearch" value="<%=intl._t("Search")%>" ></td>
 </tr>
 </table>
 </form></div>
@@ -147,37 +147,43 @@ ${book.loadBookMessages}
 <th>&nbsp;</th>
 </c:if>
 
-<th><%=intl._("Name")%></th>
-<th colspan="2"><%=intl._("Links")%></th>
-<th><%=intl._("Destination")%></th>
+<% if (book.getEntries().length > 0) { /* Don't show if no results. Can't figure out how to do this with c:if */ %>
+<th><%=intl._t("Name")%></th>
+<th colspan="2"><%=intl._t("Links")%></th>
+<th><%=intl._t("Destination")%></th>
 </tr>
 <!-- limit iterator, or "Form too large" may result on submit, and is a huge web page if we don't -->
 <c:forEach items="${book.entries}" var="addr" begin="${book.resultBegin}" end="${book.resultEnd}">
 <tr class="list${book.trClass}">
 <c:if test="${book.master || book.router || book.published || book.private}">
-<td class="checkbox"><input type="checkbox" name="checked" value="${addr.name}" title="<%=intl._("Mark for deletion")%>"></td>
+<td class="checkbox"><input type="checkbox" name="checked" value="${addr.name}" title="<%=intl._t("Mark for deletion")%>"></td>
 </c:if>
 <td class="names"><a href="http://${addr.name}/" target="_top">${addr.displayName}</a>
 </td><td class="names">
-<span class="addrhlpr"><a href="http://${addr.b32}/" target="_top" title="<%=intl._("Base 32 address")%>">b32</a></span>
+<span class="addrhlpr"><a href="http://${addr.b32}/" target="_top" title="<%=intl._t("Base 32 address")%>">b32</a></span>
 </td><td class="names">
-<span class="addrhlpr"><a href="details?h=${addr.name}" title="<%=intl._("More information on this entry")%>"><%=intl._("details")%></a></span>
+<span class="addrhlpr"><a href="details?h=${addr.name}" title="<%=intl._t("More information on this entry")%>"><%=intl._t("details")%></a></span>
 </td>
 <td class="destinations"><textarea rows="1" style="height:3em;" wrap="off" cols="40" readonly="readonly" name="dest_${addr.name}" >${addr.destination}</textarea></td>
 </tr>
 </c:forEach>
+<% } /* book..getEntries().length() > 0 */ %>
 </table>
 </div>
 
+<% if (book.getEntries().length > 0) { /* Don't show if no results. Can't figure out how to do this with c:if */ %>
 <c:if test="${book.master || book.router || book.published || book.private}">
 <div id="buttons">
 <p class="buttons">
-<input class="cancel" type="reset" value="<%=intl._("Cancel")%>" >
-<input class="delete" type="submit" name="action" value="<%=intl._("Delete Selected")%>" >
+<input class="cancel" type="reset" value="<%=intl._t("Cancel")%>" >
+<input class="delete" type="submit" name="action" value="<%=intl._t("Delete Selected")%>" >
 </p>
-</div></form>
+</div>
 </c:if>
+<% } /* book..getEntries().length() > 0 */ %>
+</form>
 
+<% if (book.getEntries().length > 0) { /* Don't show if no results. Can't figure out how to do this with c:if */ %>
 <form action="export" method="GET" target="_top">
 <div id="buttons">
 <p class="buttons">
@@ -188,14 +194,15 @@ ${book.loadBookMessages}
 <c:if test="${book.hasFilter}">
 <input type="hidden" name="filter" value="${book.filter}">
 </c:if>
-<input type="submit" class="export" value="<%=intl._("Export in hosts.txt format")%>" />
+<input type="submit" class="export" value="<%=intl._t("Export in hosts.txt format")%>" />
 </p></div></form>
+<% } /* book..getEntries().length() > 0 */ %>
 
 </c:if><% /* book.notEmpty */ %>
 
 <c:if test="${book.isEmpty}">
 <div id="book">
-<p class="book"><%=intl._("This address book is empty.")%></p>
+<p class="book"><%=intl._t("This address book is empty.")%></p>
 </div>
 </c:if>
 
@@ -204,16 +211,16 @@ ${book.loadBookMessages}
 <input type="hidden" name="begin" value="0">
 <input type="hidden" name="end" value="49">
 <div id="add">
-<h3><%=intl._("Add new destination")%>:</h3>
+<h3><%=intl._t("Add new destination")%>:</h3>
 <table><tr><td>
-<b><%=intl._("Host Name")%></b></td><td><input type="text" name="hostname" value="${book.hostname}" size="54">
+<b><%=intl._t("Host Name")%></b></td><td><input type="text" name="hostname" value="${book.hostname}" size="54">
 </td></tr><tr><td>
-<b><%=intl._("Destination")%></b></td><td><textarea name="destination" rows="1" style="height:3em" wrap="off" cols="70" spellcheck="false">${book.destination}</textarea>
+<b><%=intl._t("Destination")%></b></td><td><textarea name="destination" rows="1" style="height:3em" wrap="off" cols="70" spellcheck="false">${book.destination}</textarea>
 </td></tr></table>
 <p class="buttons">
-<input class="cancel" type="reset" value="<%=intl._("Cancel")%>" >
-<input class="accept" type="submit" name="action" value="<%=intl._("Replace")%>" >
-<input class="add" type="submit" name="action" value="<%=intl._("Add")%>" >
+<input class="cancel" type="reset" value="<%=intl._t("Cancel")%>" >
+<input class="accept" type="submit" name="action" value="<%=intl._t("Replace")%>" >
+<input class="add" type="submit" name="action" value="<%=intl._t("Add")%>" >
 </p>
 </div></form>
 
diff --git a/apps/susidns/src/jsp/config.jsp b/apps/susidns/src/jsp/config.jsp
index 6a650d3f5d1d5ed19e458562978ef1d2e3c531d9..27e57a6e9099f9d451f2fb9db54b718f2e3349ac 100644
--- a/apps/susidns/src/jsp/config.jsp
+++ b/apps/susidns/src/jsp/config.jsp
@@ -44,24 +44,24 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title><%=intl._("configuration")%> - susidns</title>
+<title><%=intl._t("configuration")%> - susidns</title>
 <link rel="stylesheet" type="text/css" href="<%=base.getTheme()%>susidns.css">
 </head>
 <body>
 <div class="page">
 <div id="logo">
-<a href="index"><img src="<%=base.getTheme()%>images/logo.png" alt="" title="<%=intl._("Overview")%>" border="0"/></a>
+<a href="index"><img src="<%=base.getTheme()%>images/logo.png" alt="" title="<%=intl._t("Overview")%>" border="0"/></a>
 </div><hr>
 <div id="navi">
 <p>
-<%=intl._("Address books")%>:
-<a href="addressbook?book=private"><%=intl._("private")%></a> |
-<a href="addressbook?book=master"><%=intl._("master")%></a> |
-<a href="addressbook?book=router"><%=intl._("router")%></a> |
-<a href="addressbook?book=published"><%=intl._("published")%></a> *
-<a href="subscriptions"><%=intl._("Subscriptions")%></a> *
-<%=intl._("Configuration")%> *
-<a href="index"><%=intl._("Overview")%></a>
+<%=intl._t("Address books")%>:
+<a href="addressbook?book=private"><%=intl._t("private")%></a> |
+<a href="addressbook?book=master"><%=intl._t("master")%></a> |
+<a href="addressbook?book=router"><%=intl._t("router")%></a> |
+<a href="addressbook?book=published"><%=intl._t("published")%></a> *
+<a href="subscriptions"><%=intl._t("Subscriptions")%></a> *
+<%=intl._t("Configuration")%> *
+<a href="index"><%=intl._t("Overview")%></a>
 </p>
 </div><hr>
 <div id="headline">
@@ -74,65 +74,65 @@
 <textarea name="config" rows="10" cols="80">${cfg.config}</textarea>
 </div>
 <div id="buttons">
-<input class="reload" type="submit" name="action" value="<%=intl._("Reload")%>" >
-<input class="accept" type="submit" name="action" value="<%=intl._("Save")%>" >
+<input class="reload" type="submit" name="action" value="<%=intl._t("Reload")%>" >
+<input class="accept" type="submit" name="action" value="<%=intl._t("Save")%>" >
 </div>
 </form>
 <div id="help">
-<h3><%=intl._("Hints")%></h3>
+<h3><%=intl._t("Hints")%></h3>
 <ol>
 <li>
-<%=intl._("File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows).")%>
+<%=intl._t("File and directory paths here are relative to the addressbook's working directory, which is normally ~/.i2p/addressbook/ (Linux) or %APPDATA%\\I2P\\addressbook\\ (Windows).")%>
 </li>
 <li>
-<%=intl._("If you want to manually add lines to an addressbook, add them to the private or master addressbooks.")%>
-<%=intl._("The router addressbook and the published addressbook are updated by the addressbook application.")%>
+<%=intl._t("If you want to manually add lines to an addressbook, add them to the private or master addressbooks.")%>
+<%=intl._t("The router addressbook and the published addressbook are updated by the addressbook application.")%>
 </li>
 <li>
-<%=intl._("When you publish your addressbook, ALL destinations from the master and router addressbooks appear there.")%>
-<%=intl._("Use the private addressbook for private destinations, these are not published.")%>
+<%=intl._t("When you publish your addressbook, ALL destinations from the master and router addressbooks appear there.")%>
+<%=intl._t("Use the private addressbook for private destinations, these are not published.")%>
 </li>
 </ol>
-<h3><%=intl._("Options")%></h3>
+<h3><%=intl._t("Options")%></h3>
 <ul>
 <li><b>subscriptions</b> -
-<%=intl._("File containing the list of subscriptions URLs (no need to change)")%>
+<%=intl._t("File containing the list of subscriptions URLs (no need to change)")%>
 </li>
 <li><b>update_delay</b> -
-<%=intl._("Update interval in hours")%>
+<%=intl._t("Update interval in hours")%>
 </li>
 <li><b>published_addressbook</b> -
-<%=intl._("Your public hosts.txt file (choose a path within your webserver document root)")%>
+<%=intl._t("Your public hosts.txt file (choose a path within your webserver document root)")%>
 </li>
 <li><b>router_addressbook</b> -
-<%=intl._("Your hosts.txt (don't change)")%>
+<%=intl._t("Your hosts.txt (don't change)")%>
 </li>
 <li><b>master_addressbook</b> -
-<%=intl._("Your personal addressbook, these hosts will be published")%>
+<%=intl._t("Your personal addressbook, these hosts will be published")%>
 </li>
 <li><b>private_addressbook</b> -
-<%=intl._("Your private addressbook, it is never published")%>
+<%=intl._t("Your private addressbook, it is never published")%>
 </li>
 <li><b>proxy_port</b> -
-<%=intl._("Port for your eepProxy (no need to change)")%>
+<%=intl._t("Port for your eepProxy (no need to change)")%>
 </li>
 <li><b>proxy_host</b> -
-<%=intl._("Hostname for your eepProxy (no need to change)")%>
+<%=intl._t("Hostname for your eepProxy (no need to change)")%>
 </li>
 <li><b>should_publish</b> -
-<%=intl._("Whether to update the published addressbook")%>
+<%=intl._t("Whether to update the published addressbook")%>
 </li>
 <li><b>etags</b> -
-<%=intl._("File containing the etags header from the fetched subscription URLs (no need to change)")%>
+<%=intl._t("File containing the etags header from the fetched subscription URLs (no need to change)")%>
 </li>
 <li><b>last_modified</b> -
-<%=intl._("File containing the modification timestamp for each fetched subscription URL (no need to change)")%>
+<%=intl._t("File containing the modification timestamp for each fetched subscription URL (no need to change)")%>
 </li>
 <li><b>log</b> -
-<%=intl._("File to log activity to (change to /dev/null if you like)")%>
+<%=intl._t("File to log activity to (change to /dev/null if you like)")%>
 </li>
 <li><b>theme</b> -
-<%=intl._("Name of the theme to use (defaults to 'light')")%>
+<%=intl._t("Name of the theme to use (defaults to 'light')")%>
 </li>
 </ul>
 </div>
diff --git a/apps/susidns/src/jsp/details.jsp b/apps/susidns/src/jsp/details.jsp
index 9334e43ca74d01533933d57973daa78dcf15eb6b..a5660b67739c436d863a9b59d3ed3ec2a544a41f 100644
--- a/apps/susidns/src/jsp/details.jsp
+++ b/apps/susidns/src/jsp/details.jsp
@@ -42,31 +42,31 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>${book.book} <%=intl._("addressbook")%> - susidns</title>
+<title>${book.book} <%=intl._t("addressbook")%> - susidns</title>
 <link rel="stylesheet" type="text/css" href="<%=book.getTheme()%>susidns.css">
 </head>
 <body>
 <div class="page">
 <div id="logo">
-<a href="index"><img src="<%=book.getTheme()%>images/logo.png" alt="" title="<%=intl._("Overview")%>" border="0"/></a>
+<a href="index"><img src="<%=book.getTheme()%>images/logo.png" alt="" title="<%=intl._t("Overview")%>" border="0"/></a>
 </div>
 <hr>
 <div id="navi">
 <p>
-<%=intl._("Address books")%>:
-<a href="addressbook?book=private&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("private")%></a> |
-<a href="addressbook?book=master&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("master")%></a> |
-<a href="addressbook?book=router&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("router")%></a> |
-<a href="addressbook?book=published&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._("published")%></a> *
-<a href="subscriptions"><%=intl._("Subscriptions")%></a> *
-<a href="config"><%=intl._("Configuration")%></a> *
-<a href="index"><%=intl._("Overview")%></a>
+<%=intl._t("Address books")%>:
+<a href="addressbook?book=private&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("private")%></a> |
+<a href="addressbook?book=master&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("master")%></a> |
+<a href="addressbook?book=router&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("router")%></a> |
+<a href="addressbook?book=published&amp;filter=none&amp;begin=0&amp;end=49"><%=intl._t("published")%></a> *
+<a href="subscriptions"><%=intl._t("Subscriptions")%></a> *
+<a href="config"><%=intl._t("Configuration")%></a> *
+<a href="index"><%=intl._t("Overview")%></a>
 </p>
 </div>
 <hr>
 <div id="headline">
-<h3><%=intl._("Address book")%>: <%=intl._(book.getBook())%></h3>
-<h4><%=intl._("Storage")%>: ${book.displayName}</h4>
+<h3><%=intl._t("Address book")%>: <%=intl._t(book.getBook())%></h3>
+<h4><%=intl._t("Storage")%>: ${book.displayName}</h4>
 </div>
 
 <div id="book">
@@ -85,49 +85,49 @@
 <jsp:setProperty name="book" property="trClass"	value="0" />
 <table class="book" cellspacing="0" cellpadding="5">
 <tr class="list${book.trClass}">
-<td><%=intl._("Host Name")%></td>
+<td><%=intl._t("Host Name")%></td>
 <td><a href="http://<%=addr.getName()%>/" target="_top"><%=addr.getDisplayName()%></a></td>
 </tr><tr class="list${book.trClass}">
 <%
     if (addr.isIDN()) {
 %>
-<td><%=intl._("Encoded Name")%></td>
+<td><%=intl._t("Encoded Name")%></td>
 <td><a href="http://<%=addr.getName()%>/" target="_top"><%=addr.getName()%></a></td>
 </tr><tr class="list${book.trClass}">
 <%
     }
 %>
-<td><%=intl._("Base 32 Address")%></td>
+<td><%=intl._t("Base 32 Address")%></td>
 <td><a href="http://<%=b32%>/" target="_top"><%=b32%></a></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Base 64 Hash")%></td>
+<td><%=intl._t("Base 64 Hash")%></td>
 <td><%=addr.getB64()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Address Helper")%></td>
-<td><a href="http://<%=addr.getName()%>/?i2paddresshelper=<%=addr.getDestination()%>" target="_top"><%=intl._("link")%></a></td>
+<td><%=intl._t("Address Helper")%></td>
+<td><a href="http://<%=addr.getName()%>/?i2paddresshelper=<%=addr.getDestination()%>" target="_top"><%=intl._t("link")%></a></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Public Key")%></td>
-<td><%=intl._("ElGamal 2048 bit")%></td>
+<td><%=intl._t("Public Key")%></td>
+<td><%=intl._t("ElGamal 2048 bit")%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Signing Key")%></td>
+<td><%=intl._t("Signing Key")%></td>
 <td><%=addr.getSigType()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Certificate")%></td>
+<td><%=intl._t("Certificate")%></td>
 <td><%=addr.getCert()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Added Date")%></td>
+<td><%=intl._t("Added Date")%></td>
 <td><%=addr.getAdded()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Source")%></td>
+<td><%=intl._t("Source")%></td>
 <td><%=addr.getSource()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Last Modified")%></td>
+<td><%=intl._t("Last Modified")%></td>
 <td><%=addr.getModded()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Notes")%></td>
+<td><%=intl._t("Notes")%></td>
 <td><%=addr.getNotes()%></td>
 </tr><tr class="list${book.trClass}">
-<td><%=intl._("Destination")%></td>
+<td><%=intl._t("Destination")%></td>
 <td class="destinations"><textarea rows="1" style="height:3em;" wrap="off" cols="70" readonly="readonly" ><%=addr.getDestination()%></textarea></td>
 </tr></table>
 </div>
@@ -138,7 +138,7 @@
 <input type="hidden" name="begin" value="0">
 <input type="hidden" name="end" value="49">
 <input type="hidden" name="checked" value="<%=detail%>">
-<input class="delete" type="submit" name="action" value="<%=intl._("Delete Entry")%>" >
+<input class="delete" type="submit" name="action" value="<%=intl._t("Delete Entry")%>" >
 </p>
 </form>
 </div>
diff --git a/apps/susidns/src/jsp/index.jsp b/apps/susidns/src/jsp/index.jsp
index 505beeec7fd017b0fe8652a4024d5618d1cbab1e..67c96c6801507d2ebd87bd20d69ffc151bc65832 100644
--- a/apps/susidns/src/jsp/index.jsp
+++ b/apps/susidns/src/jsp/index.jsp
@@ -42,7 +42,7 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title><%=intl._("Introduction")%> - SusiDNS</title>
+<title><%=intl._t("Introduction")%> - SusiDNS</title>
 <link rel="stylesheet" type="text/css" href="<%=base.getTheme()%>susidns.css">
 </head>
 <body>
@@ -53,39 +53,39 @@
 <hr>
 <div id="navi">
 <p>
-<%=intl._("Address books")%>:
-<a href="addressbook?book=private"><%=intl._("private")%></a> |
-<a href="addressbook?book=master"><%=intl._("master")%></a> |
-<a href="addressbook?book=router"><%=intl._("router")%></a> |
-<a href="addressbook?book=published"><%=intl._("published")%></a> *
-<a href="subscriptions"><%=intl._("Subscriptions")%></a> *
-<a href="config"><%=intl._("Configuration")%></a> *
-<%=intl._("Overview")%>
+<%=intl._t("Address books")%>:
+<a href="addressbook?book=private"><%=intl._t("private")%></a> |
+<a href="addressbook?book=master"><%=intl._t("master")%></a> |
+<a href="addressbook?book=router"><%=intl._t("router")%></a> |
+<a href="addressbook?book=published"><%=intl._t("published")%></a> *
+<a href="subscriptions"><%=intl._t("Subscriptions")%></a> *
+<a href="config"><%=intl._t("Configuration")%></a> *
+<%=intl._t("Overview")%>
 </p>
 </div>
 <hr>
 <div id="content">
-<h3><%=intl._("What is the addressbook?")%></h3>
+<h3><%=intl._t("What is the addressbook?")%></h3>
 <p>
-<%=intl._("The addressbook application is part of your I2P installation.")%>
-<%=intl._("It regularly updates your hosts.txt file from distributed sources or \"subscriptions\".")%>
+<%=intl._t("The addressbook application is part of your I2P installation.")%>
+<%=intl._t("It regularly updates your hosts.txt file from distributed sources or \"subscriptions\".")%>
 </p>
 <p>
-<%=intl._("In the default configuration, the address book is only subscribed to {0}.", "i2p-projekt.i2p")%>
-<%=intl._("Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions\">subscriptions</a> file.")%>
+<%=intl._t("In the default configuration, the address book is only subscribed to {0}.", "i2p-projekt.i2p")%>
+<%=intl._t("Subscribing to additional sites is easy, just add them to your <a href=\"subscriptions\">subscriptions</a> file.")%>
 </p>
 <p>
-<%=intl._("For more information on naming in I2P, see <a href=\"http://i2p-projekt.i2p/naming.html\" target=\"_top\">the overview</a>.")%>
+<%=intl._t("For more information on naming in I2P, see <a href=\"http://i2p-projekt.i2p/naming.html\" target=\"_top\">the overview</a>.")%>
 </p>
-<h3><%=intl._("How does the addressbook application work?")%></h3>
+<h3><%=intl._t("How does the addressbook application work?")%></h3>
 <p>
-<%=intl._("The addressbook application regularly polls your subscriptions and merges their content into your \"router\" address book.")%>
-<%=intl._("Then it merges your \"master\" address book into the router address book as well.")%>
-<%=intl._("If configured, the router address book is now written to the \"published\" address book, which will be publicly available if you are running an eepsite.")%>
+<%=intl._t("The addressbook application regularly polls your subscriptions and merges their content into your \"router\" address book.")%>
+<%=intl._t("Then it merges your \"master\" address book into the router address book as well.")%>
+<%=intl._t("If configured, the router address book is now written to the \"published\" address book, which will be publicly available if you are running an eepsite.")%>
 </p><p>
-<%=intl._("The router also uses a private address book (not shown in the picture), which is not merged or published.")%>
-<%=intl._("Hosts in the private address book can be accessed by you but their addresses are never distributed to others.")%>
-<%=intl._("The private address book can also be used for aliases of hosts in your other address books.")%>
+<%=intl._t("The router also uses a private address book (not shown in the picture), which is not merged or published.")%>
+<%=intl._t("Hosts in the private address book can be accessed by you but their addresses are never distributed to others.")%>
+<%=intl._t("The private address book can also be used for aliases of hosts in your other address books.")%>
 </p>
 <center><img src="/themes/susidns/images/how.png" border="0" alt="address book working scheme" title="How the address book works" class="illustrate" /></center>
 </div>
diff --git a/apps/susidns/src/jsp/subscriptions.jsp b/apps/susidns/src/jsp/subscriptions.jsp
index db588c6a8dd52d27ecfdae4a3128802b7ed17b6c..25ec212612482c268884f1cb590c5277c5969423 100644
--- a/apps/susidns/src/jsp/subscriptions.jsp
+++ b/apps/susidns/src/jsp/subscriptions.jsp
@@ -43,24 +43,24 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title><%=intl._("subscriptions")%> - susidns</title>
+<title><%=intl._t("subscriptions")%> - susidns</title>
 <link rel="stylesheet" type="text/css" href="<%=subs.getTheme()%>susidns.css">
 </head>
 <body>
 <div class="page">
 <div id="logo">
-<a href="index"><img src="<%=subs.getTheme()%>images/logo.png" alt="" title="<%=intl._("Overview")%>" border="0"/></a>
+<a href="index"><img src="<%=subs.getTheme()%>images/logo.png" alt="" title="<%=intl._t("Overview")%>" border="0"/></a>
 </div><hr>
 <div id="navi">
 <p>
-<%=intl._("Address books")%>:
-<a href="addressbook?book=private"><%=intl._("private")%></a> |
-<a href="addressbook?book=master"><%=intl._("master")%></a> |
-<a href="addressbook?book=router"><%=intl._("router")%></a> |
-<a href="addressbook?book=published"><%=intl._("published")%></a> *
-<%=intl._("Subscriptions")%> *
-<a href="config"><%=intl._("Configuration")%></a> *
-<a href="index"><%=intl._("Overview")%></a>
+<%=intl._t("Address books")%>:
+<a href="addressbook?book=private"><%=intl._t("private")%></a> |
+<a href="addressbook?book=master"><%=intl._t("master")%></a> |
+<a href="addressbook?book=router"><%=intl._t("router")%></a> |
+<a href="addressbook?book=published"><%=intl._t("published")%></a> *
+<%=intl._t("Subscriptions")%> *
+<a href="config"><%=intl._t("Configuration")%></a> *
+<a href="index"><%=intl._t("Overview")%></a>
 </p>
 </div><hr>
 <div id="headline">
@@ -73,18 +73,18 @@
 <textarea name="content" rows="10" cols="80">${subs.content}</textarea>
 </div>
 <div id="buttons">
-<input class="reload" type="submit" name="action" value="<%=intl._("Reload")%>" >
-<input class="accept" type="submit" name="action" value="<%=intl._("Save")%>" >
+<input class="reload" type="submit" name="action" value="<%=intl._t("Reload")%>" >
+<input class="accept" type="submit" name="action" value="<%=intl._t("Save")%>" >
 </div>
 </form>
 <div id="help">
 <p class="help">
-<%=intl._("The subscription file contains a list of i2p URLs.")%>
-<%=intl._("The addressbook application regularly checks this list for new eepsites.")%>
-<%=intl._("Those URLs refer to published hosts.txt files.")%>
-<%=intl._("The default subscription is the hosts.txt from {0}, which is updated infrequently.", "i2p-projekt.i2p")%>
-<%=intl._("So it is a good idea to add additional subscriptions to sites that have the latest addresses.")%>
-<a href="http://i2p-projekt.i2p/faq.html#subscriptions" target="_top"><%=intl._("See the FAQ for a list of subscription URLs.")%></a>
+<%=intl._t("The subscription file contains a list of i2p URLs.")%>
+<%=intl._t("The addressbook application regularly checks this list for new eepsites.")%>
+<%=intl._t("Those URLs refer to published hosts.txt files.")%>
+<%=intl._t("The default subscription is the hosts.txt from {0}, which is updated infrequently.", "i2p-projekt.i2p")%>
+<%=intl._t("So it is a good idea to add additional subscriptions to sites that have the latest addresses.")%>
+<a href="http://i2p-projekt.i2p/faq.html#subscriptions" target="_top"><%=intl._t("See the FAQ for a list of subscription URLs.")%></a>
 </p>
 </div>
 <div id="footer">
diff --git a/apps/susimail/bundle-messages.sh b/apps/susimail/bundle-messages.sh
index 115aafe7246f91435f842a640d896f3733741cb4..8d8b55fc54cfee727ee9c141be04c20c5bc84901 100644
--- a/apps/susimail/bundle-messages.sh
+++ b/apps/susimail/bundle-messages.sh
@@ -30,7 +30,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 # add ../java/ so the refs will work in the po file
 JPATHS="src"
@@ -63,13 +63,13 @@ do
         echo "Updating the $i file from the tags..."
 		# extract strings from java and jsp files, and update messages.po files
 		# translate calls must be one of the forms:
-		# _("foo")
+		# _t("foo")
 		# _x("foo")
 		# To start a new translation, copy the header from an old translation to the new .po file,
 		# then ant distclean poupdate.
 		find $JPATHS -name *.java > $TMPFILE
 		xgettext -f $TMPFILE -F -L java --from-code=UTF-8 --add-comments\
-	                 --keyword=_ --keyword=_x \
+	                 --keyword=_t --keyword=_x \
 		         -o ${i}t
 		if [ $? -ne 0 ]
 		then
diff --git a/apps/susimail/locale/messages_cs.po b/apps/susimail/locale/messages_cs.po
index a7b3c6b21db6a73a5b14e7b556f5121720f28de7..8740bb96de9fb7f5b6981518eb378f6f6e6ba5ba 100644
--- a/apps/susimail/locale/messages_cs.po
+++ b/apps/susimail/locale/messages_cs.po
@@ -352,16 +352,16 @@ msgstr "Nová"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Zkontrolovat mail"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Odhlásit"
diff --git a/apps/susimail/locale/messages_da.po b/apps/susimail/locale/messages_da.po
index efec2fa73a1b293ccf150bc142c381b3a187163b..fce02a28998bbdb28c1bfd621a430b22990ce901 100644
--- a/apps/susimail/locale/messages_da.po
+++ b/apps/susimail/locale/messages_da.po
@@ -349,16 +349,16 @@ msgstr ""
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr ""
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr ""
diff --git a/apps/susimail/locale/messages_de.po b/apps/susimail/locale/messages_de.po
index 461230f0002f3b7485325917d1ca1806a2c9f6cd..28062f93200c209d0d166cdba951b68397ebf36b 100644
--- a/apps/susimail/locale/messages_de.po
+++ b/apps/susimail/locale/messages_de.po
@@ -356,16 +356,16 @@ msgstr "Verfassen"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Nachrichten abrufen"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Abmelden"
diff --git a/apps/susimail/locale/messages_en.po b/apps/susimail/locale/messages_en.po
index 022acdd90841451f36bd5dfcbf86d04057f6d078..052b9c554ebf80fcd91acdac67be13a7dd9a6094 100644
--- a/apps/susimail/locale/messages_en.po
+++ b/apps/susimail/locale/messages_en.po
@@ -346,16 +346,16 @@ msgstr ""
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2188
 msgid "Check Mail"
 msgstr ""
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2191
 msgid "Logout"
 msgstr ""
diff --git a/apps/susimail/locale/messages_es.po b/apps/susimail/locale/messages_es.po
index 40cb63878535367b1c75bf41a6babf468968da6c..0bfd0f9ddb62ccaf6c27b3270c33155705f1e5c7 100644
--- a/apps/susimail/locale/messages_es.po
+++ b/apps/susimail/locale/messages_es.po
@@ -356,16 +356,16 @@ msgstr "Nuevo"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Comprobar correo"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Desconectarse"
diff --git a/apps/susimail/locale/messages_fi.po b/apps/susimail/locale/messages_fi.po
index c37c070e2e7a0bbc6153ab160745516c0d62391a..9ce897ac0787f649abc23c4322572c688e6a9ea3 100644
--- a/apps/susimail/locale/messages_fi.po
+++ b/apps/susimail/locale/messages_fi.po
@@ -350,16 +350,16 @@ msgstr "Uusi"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Tarkista posti"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Kirjaudu ulos"
diff --git a/apps/susimail/locale/messages_fr.po b/apps/susimail/locale/messages_fr.po
index 8ee42b197f9c0f3130fb91ba762eeebe7692ac3f..595bf77cb768e6be290a6143d0515e6f99f51cea 100644
--- a/apps/susimail/locale/messages_fr.po
+++ b/apps/susimail/locale/messages_fr.po
@@ -354,16 +354,16 @@ msgstr "Nouveau message"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Relever le courrier"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Déconnexion"
diff --git a/apps/susimail/locale/messages_hu.po b/apps/susimail/locale/messages_hu.po
index c5dd2c31f89e5f7f5e9c4a1a5ebc4454d2f618ec..5d8352900e4ef4adbd6671a34b682b9b8c91fef3 100644
--- a/apps/susimail/locale/messages_hu.po
+++ b/apps/susimail/locale/messages_hu.po
@@ -348,16 +348,16 @@ msgstr "Új"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Új Levelek Ellenőrzése"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Kijelentkezés"
diff --git a/apps/susimail/locale/messages_in.po b/apps/susimail/locale/messages_in.po
index f858cc350b5c5a8af7a568a68dc68731932c1d40..db4feaf7a4e11b0cbd8d81cd4614b0b11adb82da 100644
--- a/apps/susimail/locale/messages_in.po
+++ b/apps/susimail/locale/messages_in.po
@@ -347,16 +347,16 @@ msgstr "Baru"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Periksa Surat"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Keluar"
diff --git a/apps/susimail/locale/messages_it.po b/apps/susimail/locale/messages_it.po
index cc9dc0ab350445d2814bc1a8c36b465e54fc3e64..e540a8d81a08a744e280d83ae77fcc49a0429969 100644
--- a/apps/susimail/locale/messages_it.po
+++ b/apps/susimail/locale/messages_it.po
@@ -351,16 +351,16 @@ msgstr "Nuovo"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Controlla Mail"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Disconnettiti"
diff --git a/apps/susimail/locale/messages_ja.po b/apps/susimail/locale/messages_ja.po
index 640fccf36ee9c9e1768bd7c117a2d881944143c0..1a610362fc57d2040e309e50093d8ea69b349be6 100644
--- a/apps/susimail/locale/messages_ja.po
+++ b/apps/susimail/locale/messages_ja.po
@@ -349,16 +349,16 @@ msgstr "新着"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "メールをチェック"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "ログアウト"
diff --git a/apps/susimail/locale/messages_mg.po b/apps/susimail/locale/messages_mg.po
index 8b974d0931cce86283e9f8b163fd6e561f9fb0ac..a830530d9f8199e18f864f40393730f2eb9b68ee 100644
--- a/apps/susimail/locale/messages_mg.po
+++ b/apps/susimail/locale/messages_mg.po
@@ -349,16 +349,16 @@ msgstr "Vaovao"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2188
 msgid "Check Mail"
 msgstr "Sintony ny mailaka"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2191
 msgid "Logout"
 msgstr "Mialà"
diff --git a/apps/susimail/locale/messages_nl.po b/apps/susimail/locale/messages_nl.po
index e03d7961a558914b198f1b4abbe0b616d747b19f..440cf79ea0880188229a4d87c0b532e85f0f2338 100644
--- a/apps/susimail/locale/messages_nl.po
+++ b/apps/susimail/locale/messages_nl.po
@@ -352,16 +352,16 @@ msgstr "Nieuw"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2188
 msgid "Check Mail"
 msgstr "Controlleer Mail"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2191
 msgid "Logout"
 msgstr "Uitloggen"
diff --git a/apps/susimail/locale/messages_pl.po b/apps/susimail/locale/messages_pl.po
index e583c169d5e2b4af5300f4319bed40d518e6e328..6d15f2ecf5102fccaf3a0beb1ee85e88e84d3c04 100644
--- a/apps/susimail/locale/messages_pl.po
+++ b/apps/susimail/locale/messages_pl.po
@@ -353,16 +353,16 @@ msgstr "Nowy list"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Sprawdź pocztę"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Wyloguj siÄ™"
diff --git a/apps/susimail/locale/messages_pt.po b/apps/susimail/locale/messages_pt.po
index 5bfc5d278fab938a1a0250cd2b9c3b543741edfc..93c12dcf282e3ff1af7e297c3204237060076639 100644
--- a/apps/susimail/locale/messages_pt.po
+++ b/apps/susimail/locale/messages_pt.po
@@ -350,16 +350,16 @@ msgstr "Novo"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Verificar e-mail"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Desconectar"
diff --git a/apps/susimail/locale/messages_pt_BR.po b/apps/susimail/locale/messages_pt_BR.po
index c2490e90405acb159772eb57caef5ee12f6d3e08..03e36703c2b115dbbc9104be5844c1382e6258a8 100644
--- a/apps/susimail/locale/messages_pt_BR.po
+++ b/apps/susimail/locale/messages_pt_BR.po
@@ -353,16 +353,16 @@ msgstr "Novo"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2188
 msgid "Check Mail"
 msgstr "Verificar correio"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2191
 msgid "Logout"
 msgstr "Sair"
diff --git a/apps/susimail/locale/messages_ro.po b/apps/susimail/locale/messages_ro.po
index e9e785d97a130f1cdfa5756df6f0658dc2e13941..e0c01d01a908c7c36eb2c5ab59f8bab7633bab27 100644
--- a/apps/susimail/locale/messages_ro.po
+++ b/apps/susimail/locale/messages_ro.po
@@ -352,16 +352,16 @@ msgstr "Nou"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Verifica e-mail"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Ieșire"
diff --git a/apps/susimail/locale/messages_ru.po b/apps/susimail/locale/messages_ru.po
index 94c01edac9f872b6cc7b76a592f277aa204e89ec..d2420e6e074b0b24e9a8dfce68fbe79821694871 100644
--- a/apps/susimail/locale/messages_ru.po
+++ b/apps/susimail/locale/messages_ru.po
@@ -353,16 +353,16 @@ msgstr "Новое"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Проверить почту"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Выйти"
diff --git a/apps/susimail/locale/messages_sq.po b/apps/susimail/locale/messages_sq.po
index 16888a368c9cd77b4f6a62242233988070d9dfc6..ff9ef6a80c579e632bb0c6283cf379f91e4c1079 100644
--- a/apps/susimail/locale/messages_sq.po
+++ b/apps/susimail/locale/messages_sq.po
@@ -349,16 +349,16 @@ msgstr "I ri / e re"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Shiko E-postin"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Logout"
diff --git a/apps/susimail/locale/messages_sv.po b/apps/susimail/locale/messages_sv.po
index cfe5ba58217838462e29d7d117028fc19983b5a6..6635560a1c54ee045aa8c245935766aae8435cdc 100644
--- a/apps/susimail/locale/messages_sv.po
+++ b/apps/susimail/locale/messages_sv.po
@@ -350,16 +350,16 @@ msgstr "Ny"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2188
 msgid "Check Mail"
 msgstr "Kolla e-post"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2191
 msgid "Logout"
 msgstr "Logga ut"
diff --git a/apps/susimail/locale/messages_uk.po b/apps/susimail/locale/messages_uk.po
index 4860d7be6c2f004b69e030ea4fc179ddba9ad63c..db88df98fbb7d14dc7713a652d5c09f5d68e3a16 100644
--- a/apps/susimail/locale/messages_uk.po
+++ b/apps/susimail/locale/messages_uk.po
@@ -5,8 +5,8 @@
 # 
 # Translators:
 # 007 <Andrik007d@rambler.ru>, 2014
-# Denis Blank <gribua@gmail.com>, 2011
-# Denis Blank <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011
+# Denis Lysenko <gribua@gmail.com>, 2011
 # LinuxChata, 2014
 # madjong <madjong@i2pmail.org>, 2014-2015
 msgid ""
@@ -14,9 +14,9 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2015-03-29 14:30+0000\n"
-"PO-Revision-Date: 2015-04-08 19:55+0000\n"
-"Last-Translator: madjong <madjong@i2pmail.org>\n"
-"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/projects/p/I2P/language/uk_UA/)\n"
+"PO-Revision-Date: 2015-08-07 16:53+0000\n"
+"Last-Translator: Denis Lysenko <gribua@gmail.com>\n"
+"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/otf/I2P/language/uk_UA/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -355,16 +355,16 @@ msgstr "Новий"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2188
 msgid "Check Mail"
 msgstr "Перевірити пошту"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2191
 msgid "Logout"
 msgstr "Вийти"
diff --git a/apps/susimail/locale/messages_vi.po b/apps/susimail/locale/messages_vi.po
index 4c72fd72d03f33eeb808fd10713ba1e1f3f35985..da70b584537125f0687177ef0125383d873678c7 100644
--- a/apps/susimail/locale/messages_vi.po
+++ b/apps/susimail/locale/messages_vi.po
@@ -347,16 +347,16 @@ msgstr "Má»›i"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "Lấy thư"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "Đăng xuất"
diff --git a/apps/susimail/locale/messages_zh.po b/apps/susimail/locale/messages_zh.po
index ed7c143b81605f5a4f35df2dafcd8bf2d762f3bb..8c11975976f3470a23149bc0b3e4e135d8fada8c 100644
--- a/apps/susimail/locale/messages_zh.po
+++ b/apps/susimail/locale/messages_zh.po
@@ -350,16 +350,16 @@ msgstr "新建"
 
 #. In theory, these are valid and will apply to the first checked message,
 #. but that's not obvious and did it work?
-#. button( REPLY, _("Reply") ) +
-#. button( REPLYALL, _("Reply All") ) +
-#. button( FORWARD, _("Forward") ) + spacer +
-#. button( DELETE, _("Delete") ) + spacer +
+#. button( REPLY, _t("Reply") ) +
+#. button( REPLYALL, _t("Reply All") ) +
+#. button( FORWARD, _t("Forward") ) + spacer +
+#. button( DELETE, _t("Delete") ) + spacer +
 #: src/src/i2p/susi/webmail/WebMail.java:2186
 msgid "Check Mail"
 msgstr "检查邮件"
 
 #. if (Config.hasConfigFile())
-#. out.println(button( RELOAD, _("Reload Config") ) + spacer);
+#. out.println(button( RELOAD, _t("Reload Config") ) + spacer);
 #: src/src/i2p/susi/webmail/WebMail.java:2189
 msgid "Logout"
 msgstr "注销"
diff --git a/apps/susimail/src/src/i2p/susi/util/ReadBuffer.java b/apps/susimail/src/src/i2p/susi/util/ReadBuffer.java
index 32d54c77e45c873609eb486686bfd62ea7a083f4..fb65e33a16021f541aaf2cfcea7318a853353903 100644
--- a/apps/susimail/src/src/i2p/susi/util/ReadBuffer.java
+++ b/apps/susimail/src/src/i2p/susi/util/ReadBuffer.java
@@ -23,6 +23,8 @@
  */
 package i2p.susi.util;
 
+import net.i2p.data.DataHelper;
+
 /**
  * @author susi
  */
@@ -39,6 +41,6 @@ public class ReadBuffer {
 
 	public String toString()
 	{
-		return content != null ? new String( content, offset, length ) : "";
+		return content != null ? DataHelper.getUTF8(content, offset, length) : "";
 	}
 }
diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
index 45aa601b83955dc057130d28f501e01c79b659a3..278a4e120087a298a41ac843f9accbb40a55b031 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/MailCache.java
@@ -109,6 +109,7 @@ class MailCache {
 	 * @param mode CACHE_ONLY to not pull from pop server
 	 * @return An e-mail or null
 	 */
+        @SuppressWarnings({"unchecked", "rawtypes"})
 	public Mail getMail(String uidl, FetchMode mode) {
 		
 		Mail mail = null, newMail = null;
@@ -163,6 +164,7 @@ class MailCache {
 	 * @return true if any were fetched
 	 * @since 0.9.13
 	 */
+        @SuppressWarnings({"unchecked", "rawtypes"})
 	public boolean getMail(FetchMode mode) {
 		if (mode == FetchMode.CACHE_ONLY)
 			throw new IllegalArgumentException();
diff --git a/apps/susimail/src/src/i2p/susi/webmail/MailPart.java b/apps/susimail/src/src/i2p/susi/webmail/MailPart.java
index bda56ba58950fc0975c5a1d1ee73844367b85876..0ec32abe9361154ab124710a85815fb291271123 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/MailPart.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/MailPart.java
@@ -204,7 +204,7 @@ class MailPart {
 		}
 		Encoding enc = EncodingFactory.getEncoding(encg);
 		if(enc == null)
-			throw new DecodingException(_("No encoder found for encoding \\''{0}\\''.", WebMail.quoteHTML(encg)));
+			throw new DecodingException(_t("No encoder found for encoding \\''{0}\\''.", WebMail.quoteHTML(encg)));
 		return enc.decode(buffer.content, beginBody + offset, end - beginBody - offset);
 	}
 
@@ -294,7 +294,7 @@ class MailPart {
 	}
 
 	/** translate */
-	private static String _(String s, Object o) {
+	private static String _t(String s, Object o) {
 		return Messages.getString(s, o);
 	}
 }
diff --git a/apps/susimail/src/src/i2p/susi/webmail/Messages.java b/apps/susimail/src/src/i2p/susi/webmail/Messages.java
index 84b97450e2e7ee1a807f67f584d9f91dd4339516..4d1263447f349355c58834953e700077e9ae92c9 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/Messages.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/Messages.java
@@ -16,7 +16,7 @@ public class Messages {
     }
 
     /** lang in routerconsole.lang property, else current locale */
-    public String _(String key) {
+    public String _t(String key) {
         return Translate.getString(key, _context, BUNDLE_NAME);
     }
 
diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
index 4df447af8516764775c5b96dbe260ed74a3f7324..9ff4b933b74cff3016131aba49029f1d7e97568d 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
@@ -288,7 +288,7 @@ public class WebMail extends HttpServlet
 	 */
 	private static class SenderSorter extends SorterBase {
 
-		private final Comparator collator = Collator.getInstance();
+		private final Comparator<Object> collator = Collator.getInstance();
 
 		public SenderSorter( MailCache mailCache )
 		{
@@ -307,7 +307,7 @@ public class WebMail extends HttpServlet
 	 * @author susi
 	 */
 	private static class SubjectSorter extends SorterBase {
-		private final Comparator collator = Collator.getInstance();
+		private final Comparator<Object> collator = Collator.getInstance();
 
 		public SubjectSorter( MailCache mailCache )
 		{
@@ -322,11 +322,11 @@ public class WebMail extends HttpServlet
 			} else if (as.toLowerCase().startsWith("fwd:")) {
 				as = as.substring(4).trim();
 			} else {
-				String xre = _("Re:").toLowerCase();
+				String xre = _t("Re:").toLowerCase();
 				if (as.toLowerCase().startsWith(xre)) {
 					as = as.substring(xre.length()).trim();
 				} else {
-					String xfwd = _("Fwd:").toLowerCase();
+					String xfwd = _t("Fwd:").toLowerCase();
 					if (as.toLowerCase().startsWith(xfwd))
 						as = as.substring(xfwd.length()).trim();
 				}
@@ -336,11 +336,11 @@ public class WebMail extends HttpServlet
 			} else if (bs.toLowerCase().startsWith("fwd:")) {
 				bs = bs.substring(4).trim();
 			} else {
-				String xre = _("Re:").toLowerCase();
+				String xre = _t("Re:").toLowerCase();
 				if (bs.toLowerCase().startsWith(xre)) {
 					bs = bs.substring(xre.length()).trim();
 				} else {
-					String xfwd = _("Fwd:").toLowerCase();
+					String xfwd = _t("Fwd:").toLowerCase();
 					if (bs.toLowerCase().startsWith(xfwd))
 						bs = bs.substring(xfwd.length()).trim();
 				}
@@ -577,7 +577,7 @@ public class WebMail extends HttpServlet
 					( mailPart.description != null ? mailPart.description + ", " : "" ) +
 					( mailPart.filename != null ? mailPart.filename + ", " : "" ) +
 					( mailPart.name != null ? mailPart.name + ", " : "" ) +
-					( mailPart.type != null ? '(' + mailPart.type + ')' : _("unknown") ) );
+					( mailPart.type != null ? '(' + mailPart.type + ')' : _t("unknown") ) );
 			
 			if( level == 0 && mailPart.version == null ) {
 				/*
@@ -598,7 +598,7 @@ public class WebMail extends HttpServlet
 						charset = "US-ASCII";
 						// don't show this in text mode which is used to include the mail in the reply or forward
 						if (html)
-							reason += _("Warning: no charset found, fallback to US-ASCII.") + br;
+							reason += _t("Warning: no charset found, fallback to US-ASCII.") + br;
 					}
 					try {
 						ReadBuffer decoded = mailPart.decode(0);
@@ -612,11 +612,11 @@ public class WebMail extends HttpServlet
 					}
 					catch( UnsupportedEncodingException uee ) {
 						showBody = false;
-						reason = _("Charset \\''{0}\\'' not supported.", quoteHTML( mailPart.charset )) + br;
+						reason = _t("Charset \\''{0}\\'' not supported.", quoteHTML( mailPart.charset )) + br;
 					}
 					catch (Exception e1) {
 						showBody = false;
-						reason += _("Part ({0}) not shown, because of {1}", ident, e1.toString()) + br;
+						reason += _t("Part ({0}) not shown, because of {1}", ident, e1.toString()) + br;
 					}
 			}
 			if( html )
@@ -652,16 +652,16 @@ public class WebMail extends HttpServlet
 						type.equals("application/x-7z-compressed") || type.equals("application/x-rar-compressed") ||
 						type.equals("application/x-tar") || type.equals("application/x-bzip2"))) {
 						out.println( "<a href=\"" + myself + "?" + RAW_ATTACHMENT + "=" +
-							 mailPart.hashCode() + "\">" + _("Download attachment {0}", ident) + "</a>");
+							 mailPart.hashCode() + "\">" + _t("Download attachment {0}", ident) + "</a>");
 					} else {
 						out.println( "<a target=\"_blank\" href=\"" + myself + "?" + DOWNLOAD + "=" +
-							 mailPart.hashCode() + "\">" + _("Download attachment {0}", ident) + "</a>" +
-							 " (" + _("File is packed into a zipfile for security reasons.") + ')');
+							 mailPart.hashCode() + "\">" + _t("Download attachment {0}", ident) + "</a>" +
+							 " (" + _t("File is packed into a zipfile for security reasons.") + ')');
 					}
 					out.println( "</p>" );					
 				}
 				else {
-					out.println( _("Attachment ({0}).", ident) );
+					out.println( _t("Attachment ({0}).", ident) );
 				}
 			}
 			if( html )
@@ -712,52 +712,52 @@ public class WebMail extends HttpServlet
 			if (buttonPressed(request, LOGIN) || offline) {
 				
 				if( user == null || user.length() == 0 ) {
-					sessionObject.error += _("Need username for authentication.") + '\n';
+					sessionObject.error += _t("Need username for authentication.") + '\n';
 					doContinue = false;
 				}
 				if( pass == null || pass.length() == 0 ) {
-					sessionObject.error += _("Need password for authentication.") + '\n';
+					sessionObject.error += _t("Need password for authentication.") + '\n';
 					doContinue = false;
 				}
 				if( host == null || host.length() == 0 ) {
-					sessionObject.error += _("Need hostname for connect.") + '\n';
+					sessionObject.error += _t("Need hostname for connect.") + '\n';
 					doContinue = false;
 				}
 				int pop3PortNo = 0;
 				if( pop3Port == null || pop3Port.length() == 0 ) {
-					sessionObject.error += _("Need port number for pop3 connect.") + '\n';
+					sessionObject.error += _t("Need port number for pop3 connect.") + '\n';
 					doContinue = false;
 				}
 				else {
 					try {
 						pop3PortNo = Integer.parseInt( pop3Port );
 						if( pop3PortNo < 0 || pop3PortNo > 65535 ) {
-							sessionObject.error += _("POP3 port number is not in range 0..65535.") + '\n';
+							sessionObject.error += _t("POP3 port number is not in range 0..65535.") + '\n';
 							doContinue = false;
 						}
 					}
 					catch( NumberFormatException nfe )
 					{
-						sessionObject.error += _("POP3 port number is invalid.") + '\n';
+						sessionObject.error += _t("POP3 port number is invalid.") + '\n';
 						doContinue = false;
 					}
 				}
 				int smtpPortNo = 0;
 				if( smtpPort == null || smtpPort.length() == 0 ) {
-					sessionObject.error += _("Need port number for smtp connect.") + '\n';
+					sessionObject.error += _t("Need port number for smtp connect.") + '\n';
 					doContinue = false;
 				}
 				else {
 					try {
 						smtpPortNo = Integer.parseInt( smtpPort );
 						if( smtpPortNo < 0 || smtpPortNo > 65535 ) {
-							sessionObject.error += _("SMTP port number is not in range 0..65535.") + '\n';
+							sessionObject.error += _t("SMTP port number is not in range 0..65535.") + '\n';
 							doContinue = false;
 						}
 					}
 					catch( NumberFormatException nfe )
 					{
-						sessionObject.error += _("SMTP port number is invalid.") + '\n';
+						sessionObject.error += _t("SMTP port number is invalid.") + '\n';
 						doContinue = false;
 					}
 				}
@@ -831,10 +831,10 @@ public class WebMail extends HttpServlet
 				sessionObject.mailbox = null;
 				sessionObject.mailCache = null;
 			}
-			sessionObject.info += _("User logged out.") + '\n';
+			sessionObject.info += _t("User logged out.") + '\n';
 			sessionObject.state = STATE_AUTH;
 		} else if( sessionObject.mailbox == null ) {
-			sessionObject.error += _("Internal error, lost connection.") + '\n';
+			sessionObject.error += _t("Internal error, lost connection.") + '\n';
 			sessionObject.state = STATE_AUTH;
 		}
 	}
@@ -988,10 +988,10 @@ public class WebMail extends HttpServlet
 								sessionObject.replyTo = mail.reply;
 							else if( mail.sender != null && Mail.validateAddress( mail.sender ) )
 								sessionObject.replyTo = mail.sender;
-							sessionObject.subject = _("Re:") + ' ' + mail.formattedSubject;
+							sessionObject.subject = _t("Re:") + ' ' + mail.formattedSubject;
 							StringWriter text = new StringWriter();
 							PrintWriter pw = new PrintWriter( text );
-							pw.println( _("On {0} {1} wrote:", mail.formattedDate + " UTC", sessionObject.replyTo) );
+							pw.println( _t("On {0} {1} wrote:", mail.formattedDate + " UTC", sessionObject.replyTo) );
 							StringWriter text2 = new StringWriter();
 							PrintWriter pw2 = new PrintWriter( text2 );
 							showPart( pw2, part, 0, TEXT_ONLY );
@@ -1026,7 +1026,7 @@ public class WebMail extends HttpServlet
 								sessionObject.replyCC = buf.toString();
 						}
 						if( forward ) {
-							sessionObject.subject = _("Fwd:") + ' ' + mail.formattedSubject;
+							sessionObject.subject = _t("Fwd:") + ' ' + mail.formattedSubject;
 							String sender = null;
 							if( mail.reply != null && Mail.validateAddress( mail.reply ) )
 								sender = Mail.getAddress( mail.reply );
@@ -1038,7 +1038,7 @@ public class WebMail extends HttpServlet
 							pw.println();
 							pw.println();
 							pw.println();
-							pw.println( "---- " + _("begin forwarded mail") + " ----" );
+							pw.println( "---- " + _t("begin forwarded mail") + " ----" );
 							pw.println( "From: " + sender );
 							if( mail.to != null ) {
 								String pad = "To: ";
@@ -1060,14 +1060,14 @@ public class WebMail extends HttpServlet
 								pw.print( "Date: " + mail.dateString );
 							pw.println();
 							showPart( pw, part, 0, TEXT_ONLY );
-							pw.println( "----  " + _("end forwarded mail") + "  ----" );
+							pw.println( "----  " + _t("end forwarded mail") + "  ----" );
 							pw.flush();
 							sessionObject.body = text.toString();
 						}
 						sessionObject.state = STATE_NEW;
 					}
 					else {
-						sessionObject.error += _("Could not fetch mail body.") + '\n';
+						sessionObject.error += _t("Could not fetch mail body.") + '\n';
 					}
 				}
 			}
@@ -1097,7 +1097,7 @@ public class WebMail extends HttpServlet
 				}
 				catch( NumberFormatException nfe )
 				{
-					sessionObject.error += _("Message id not valid.") + '\n';
+					sessionObject.error += _t("Message id not valid.") + '\n';
 				}
 			}
 		}
@@ -1135,7 +1135,7 @@ public class WebMail extends HttpServlet
 			int pageSize = Config.getProperty( Folder.PAGESIZE, Folder.DEFAULT_PAGESIZE );
 			if( pageSize != oldPageSize )
 				sessionObject.folder.setPageSize( pageSize );
-			sessionObject.info = _("Configuration reloaded");
+			sessionObject.info = _t("Configuration reloaded");
 		}
 		if( buttonPressed( request, REFRESH ) ) {
 			// TODO how to do a "No new mail" message?
@@ -1196,16 +1196,16 @@ public class WebMail extends HttpServlet
 								);
 							}
 							else {
-								sessionObject.error += _("No Encoding found for {0}", encodeTo) + '\n';
+								sessionObject.error += _t("No Encoding found for {0}", encodeTo) + '\n';
 							}
 						}
 						catch (EncodingException e1) {
-							sessionObject.error += _("Could not encode data: {0}", e1.getMessage());
+							sessionObject.error += _t("Could not encode data: {0}", e1.getMessage());
 						}
 					}
 				}
 				catch (IOException e) {
-					sessionObject.error += _("Error reading uploaded file: {0}", e.getMessage()) + '\n';
+					sessionObject.error += _t("Error reading uploaded file: {0}", e.getMessage()) + '\n';
 				}
 			}
 		}
@@ -1290,10 +1290,10 @@ public class WebMail extends HttpServlet
 				}
 			} catch( NumberFormatException nfe ) {}
 			// error if we get here
-			sessionObject.error += _("Attachment not found.");
+			sessionObject.error += _t("Attachment not found.");
 			if (isRaw) {
 				try {
-					response.sendError(404, _("Attachment not found."));
+					response.sendError(404, _t("Attachment not found."));
 				} catch (IOException ioe) {}
 			}
 		}
@@ -1320,9 +1320,9 @@ public class WebMail extends HttpServlet
 				return true;
 		}
 		// error if we get here
-		sessionObject.error += _("Message not found.");
+		sessionObject.error += _t("Message not found.");
 		try {
-			response.sendError(404, _("Message not found."));
+			response.sendError(404, _t("Message not found."));
 		} catch (IOException ioe) {}
 		return true;
 	}
@@ -1367,7 +1367,7 @@ public class WebMail extends HttpServlet
 					sessionObject.folder.setPageSize( pageSize );
 			}
 			catch( NumberFormatException nfe ) {
-				sessionObject.error += _("Invalid pagesize number, resetting to default value.") + '\n';
+				sessionObject.error += _t("Invalid pagesize number, resetting to default value.") + '\n';
 			}
 		}
 		if( buttonPressed( request, PREVPAGE ) ) {
@@ -1391,7 +1391,7 @@ public class WebMail extends HttpServlet
 			if (m > 0)
 				sessionObject.reallyDelete = true;
 			else
-				sessionObject.error += _("No messages marked for deletion.") + '\n';
+				sessionObject.error += _t("No messages marked for deletion.") + '\n';
 		}
 		else {
 			if( buttonPressed( request, REALLYDELETE ) ) {
@@ -1408,7 +1408,7 @@ public class WebMail extends HttpServlet
 					sessionObject.folder.removeElements(toDelete);
 					sessionObject.pageChanged = true;
 					sessionObject.info += ngettext("1 message deleted.", "{0} messages deleted.", numberDeleted);
-					//sessionObject.error += _("Error deleting message: {0}", sessionObject.mailbox.lastError()) + '\n';
+					//sessionObject.error += _t("Error deleting message: {0}", sessionObject.mailbox.lastError()) + '\n';
 				}
 			}
 			sessionObject.reallyDelete = false;
@@ -1474,7 +1474,7 @@ public class WebMail extends HttpServlet
 				boolean release = !Boolean.parseBoolean(props.getProperty(CONFIG_DEBUG));
 				Debug.setLevel( release ? Debug.ERROR : Debug.DEBUG );
 				sessionObject.state = sessionObject.folder != null ? STATE_LIST : STATE_AUTH;
-				sessionObject.info = _("Configuration saved");
+				sessionObject.info = _t("Configuration saved");
 			} catch (IOException ioe) {
 				sessionObject.error = ioe.toString();
 			}
@@ -1495,7 +1495,7 @@ public class WebMail extends HttpServlet
 			} catch (IOException ioe) {
 				sessionObject.error = ioe.toString();
 			} catch( NumberFormatException nfe ) {
-				sessionObject.error += _("Invalid pagesize number, resetting to default value.") + '\n';
+				sessionObject.error += _t("Invalid pagesize number, resetting to default value.") + '\n';
 			}
 		} else if (buttonPressed(request, CANCEL)) {
 			sessionObject.state = (sessionObject.folder != null) ? STATE_LIST : STATE_AUTH;
@@ -1694,7 +1694,7 @@ public class WebMail extends HttpServlet
 				 * build subtitle
 				 */
 				if( sessionObject.state == STATE_AUTH )
-					subtitle = _("Login");
+					subtitle = _t("Login");
 				else if( sessionObject.state == STATE_LIST ) {
 					// mailbox.getNumMails() forces a connection, don't use it
 					// Not only does it slow things down, but a failure causes all our messages to "vanish"
@@ -1705,11 +1705,11 @@ public class WebMail extends HttpServlet
 					if (mail != null && mail.shortSubject != null)
 						subtitle = mail.shortSubject; // already HTML encoded
 					else
-						subtitle = _("Show Message");
+						subtitle = _t("Show Message");
 				} else if( sessionObject.state == STATE_NEW ) {
-					subtitle = _("New Message");
+					subtitle = _t("New Message");
 				} else if( sessionObject.state == STATE_CONFIG ) {
-					subtitle = _("Configuration");
+					subtitle = _t("Configuration");
 				}
 
 				response.setContentType( "text/html" );
@@ -1720,7 +1720,7 @@ public class WebMail extends HttpServlet
 				out.println( "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n" +
 					"<head>\n" +
 					"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" +
-					"<title>" + _("SusiMail") + " - " + subtitle + "</title>\n" +
+					"<title>" + _t("SusiMail") + " - " + subtitle + "</title>\n" +
 					"<link rel=\"stylesheet\" type=\"text/css\" href=\"" + sessionObject.themePath + "susimail.css\">\n" );
 				if (sessionObject.isMobile ) {
 					out.println( "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes\" />\n" +
@@ -1733,7 +1733,7 @@ public class WebMail extends HttpServlet
 					out.println(
 						"<script type=\"text/javascript\">\n" +
 							"window.onbeforeunload = function () {" +
-								"return \"" + _("Message has not been sent. Do you want to discard it?") + "\";" +
+								"return \"" + _t("Message has not been sent. Do you want to discard it?") + "\";" +
 							"};\n" +
 						"</script>"
 					);
@@ -1795,7 +1795,7 @@ public class WebMail extends HttpServlet
 						content = part.decode(2);
 					}
 					catch (DecodingException e) {
-						sessionObject.error += _("Error decoding content: {0}", e.getMessage()) + '\n';
+						sessionObject.error += _t("Error decoding content: {0}", e.getMessage()) + '\n';
 						content = null;
 					}
 			}
@@ -1904,7 +1904,7 @@ public class WebMail extends HttpServlet
 		String to = request.getParameter( NEW_TO );
 		String cc = request.getParameter( NEW_CC );
 		String bcc = request.getParameter( NEW_BCC );
-		String subject = request.getParameter( NEW_SUBJECT, _("no subject") );
+		String subject = request.getParameter( NEW_SUBJECT, _t("no subject") );
 		String text = request.getParameter( NEW_TEXT, "" );
 
 		boolean fixed = Boolean.parseBoolean(Config.getProperty( CONFIG_SENDER_FIXED, "true" ));
@@ -1921,13 +1921,13 @@ public class WebMail extends HttpServlet
 		
 		if( from == null || !Mail.validateAddress( from ) ) {
 			ok = false;
-			sessionObject.error += _("Found no valid sender address.") + '\n';
+			sessionObject.error += _t("Found no valid sender address.") + '\n';
 		}
 		else {
 			sender = Mail.getAddress( from );
 			if( sender == null || sender.length() == 0 ) {
 				ok = false;
-				sessionObject.error += _("Found no valid address in \\''{0}\\''.", quoteHTML( from )) + '\n';
+				sessionObject.error += _t("Found no valid address in \\''{0}\\''.", quoteHTML( from )) + '\n';
 			}
 		}
 		
@@ -1948,7 +1948,7 @@ public class WebMail extends HttpServlet
 		
 		if( toList.isEmpty() ) {
 			ok = false;
-			sessionObject.error += _("No recipients found.") + '\n';
+			sessionObject.error += _t("No recipients found.") + '\n';
 		}
 		Encoding qp = EncodingFactory.getEncoding( "quoted-printable" );
 		Encoding hl = EncodingFactory.getEncoding( "HEADERLINE" );
@@ -2012,7 +2012,7 @@ public class WebMail extends HttpServlet
 						sessionObject.user, sessionObject.pass,
 						sender, recipients.toArray(), sessionObject.sentMail ) ) {
 					
-					sessionObject.info += _("Mail sent.");
+					sessionObject.info += _t("Mail sent.");
 					
 					sessionObject.sentMail = null;	
 					if( sessionObject.attachments != null )
@@ -2056,12 +2056,12 @@ public class WebMail extends HttpServlet
 	private static void showCompose( PrintWriter out, SessionObject sessionObject, RequestWrapper request )
 	{
 		out.println("<div class=\"topbuttons\">");
-		out.println( button( SEND, _("Send") ) + spacer +
-				button( CANCEL, _("Cancel") ));
+		out.println( button( SEND, _t("Send") ) + spacer +
+				button( CANCEL, _t("Cancel") ));
 		out.println("</div>");
 		//if (Config.hasConfigFile())
-		//	out.println(button( RELOAD, _("Reload Config") ) + spacer);
-		//out.println(button( LOGOUT, _("Logout") ) );
+		//	out.println(button( RELOAD, _t("Reload Config") ) + spacer);
+		//out.println(button( LOGOUT, _t("Logout") ) );
 
 		String from = request.getParameter( NEW_FROM );
 		boolean fixed = Boolean.parseBoolean(Config.getProperty( CONFIG_SENDER_FIXED, "true" ));
@@ -2100,23 +2100,23 @@ public class WebMail extends HttpServlet
 		
 		out.println( "<table cellspacing=\"0\" cellpadding=\"5\">\n" +
 				"<tr><td colspan=\"2\" align=\"center\"><hr></td></tr>\n" +
-				"<tr><td align=\"right\">" + _("From") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_FROM + "\" value=\"" + quoteHTML(from) + "\" " + ( fixed ? "disabled" : "" ) +"></td></tr>\n" +
-				"<tr><td align=\"right\">" + _("To") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_TO + "\" value=\"" + quoteHTML(to) + "\"></td></tr>\n" +
-				"<tr><td align=\"right\">" + _("Cc") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_CC + "\" value=\"" + quoteHTML(cc) + "\"></td></tr>\n" +
-				"<tr><td align=\"right\">" + _("Bcc") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_BCC + "\" value=\"" + quoteHTML(bcc) + "\"></td></tr>\n" +
-				"<tr><td align=\"right\">" + _("Bcc to self") + ": </td><td align=\"left\"><input type=\"checkbox\" class=\"optbox\" name=\"" + NEW_BCC_TO_SELF + "\" value=\"1\" " + (sessionObject.bccToSelf ? "checked" : "" ) + "></td></tr>\n" +
-				"<tr><td align=\"right\">" + _("Subject") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_SUBJECT + "\" value=\"" + quoteHTML(subject) + "\"></td></tr>\n" +
+				"<tr><td align=\"right\">" + _t("From") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_FROM + "\" value=\"" + quoteHTML(from) + "\" " + ( fixed ? "disabled" : "" ) +"></td></tr>\n" +
+				"<tr><td align=\"right\">" + _t("To") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_TO + "\" value=\"" + quoteHTML(to) + "\"></td></tr>\n" +
+				"<tr><td align=\"right\">" + _t("Cc") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_CC + "\" value=\"" + quoteHTML(cc) + "\"></td></tr>\n" +
+				"<tr><td align=\"right\">" + _t("Bcc") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_BCC + "\" value=\"" + quoteHTML(bcc) + "\"></td></tr>\n" +
+				"<tr><td align=\"right\">" + _t("Bcc to self") + ": </td><td align=\"left\"><input type=\"checkbox\" class=\"optbox\" name=\"" + NEW_BCC_TO_SELF + "\" value=\"1\" " + (sessionObject.bccToSelf ? "checked" : "" ) + "></td></tr>\n" +
+				"<tr><td align=\"right\">" + _t("Subject") + ":</td><td align=\"left\"><input type=\"text\" size=\"80\" name=\"" + NEW_SUBJECT + "\" value=\"" + quoteHTML(subject) + "\"></td></tr>\n" +
 				"<tr><td colspan=\"2\" align=\"center\"><textarea cols=\"" + Config.getProperty( CONFIG_COMPOSER_COLS, 80 )+ "\" rows=\"" + Config.getProperty( CONFIG_COMPOSER_ROWS, 10 )+ "\" name=\"" + NEW_TEXT + "\">" + text + "</textarea>" +
 				"<tr class=\"bottombuttons\"><td colspan=\"2\" align=\"center\"><hr></td></tr>\n" +
-				"<tr class=\"bottombuttons\"><td align=\"right\">" + _("Add Attachment") + ":</td><td align=\"left\"><input type=\"file\" size=\"50%\" name=\"" + NEW_FILENAME + "\" value=\"\"></td></tr>" +
+				"<tr class=\"bottombuttons\"><td align=\"right\">" + _t("Add Attachment") + ":</td><td align=\"left\"><input type=\"file\" size=\"50%\" name=\"" + NEW_FILENAME + "\" value=\"\"></td></tr>" +
 				// TODO disable/hide in JS if no file selected
-				"<tr class=\"bottombuttons\"><td>&nbsp;</td><td align=\"left\">" + button(NEW_UPLOAD, _("Add another attachment")) + "</td></tr>");
+				"<tr class=\"bottombuttons\"><td>&nbsp;</td><td align=\"left\">" + button(NEW_UPLOAD, _t("Add another attachment")) + "</td></tr>");
 		
 		if( sessionObject.attachments != null && !sessionObject.attachments.isEmpty() ) {
 			boolean wroteHeader = false;
 			for( Attachment attachment : sessionObject.attachments ) {
 				if( !wroteHeader ) {
-					out.println("<tr><td align=\"right\">" + _("Attachments") + ":</td>");
+					out.println("<tr><td align=\"right\">" + _t("Attachments") + ":</td>");
 					wroteHeader = true;
 				} else {
 					out.println("<tr><td align=\"right\">&nbsp;</td>");
@@ -2125,7 +2125,7 @@ public class WebMail extends HttpServlet
 			}
 			// TODO disable in JS if none selected
 			out.println("<tr class=\"bottombuttons\"><td>&nbsp;</td><td align=\"left\">" +
-			            button( DELETE_ATTACHMENT, _("Delete selected attachments") ) +
+			            button( DELETE_ATTACHMENT, _t("Delete selected attachments") ) +
 				    "</td></tr>");
 		}
 		out.println( "</table>" );
@@ -2144,28 +2144,28 @@ public class WebMail extends HttpServlet
 		
 		out.println( "<table cellspacing=\"3\" cellpadding=\"5\">\n" +
 			// current postman hq length limits 16/12, new postman version 32/32
-			"<tr><td align=\"right\" width=\"30%\">" + _("User") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" size=\"32\" name=\"" + USER + "\" value=\"" + "\"> @mail.i2p</td></tr>\n" +
-			"<tr><td align=\"right\" width=\"30%\">" + _("Password") + "</td><td width=\"40%\" align=\"left\"><input type=\"password\" size=\"32\" name=\"pass\" value=\"" + "\"></td></tr>\n");
+			"<tr><td align=\"right\" width=\"30%\">" + _t("User") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" size=\"32\" name=\"" + USER + "\" value=\"" + "\"> @mail.i2p</td></tr>\n" +
+			"<tr><td align=\"right\" width=\"30%\">" + _t("Password") + "</td><td width=\"40%\" align=\"left\"><input type=\"password\" size=\"32\" name=\"pass\" value=\"" + "\"></td></tr>\n");
 		// which is better?
 		//if (!fixed) {
 		if (true) {
 		    out.println(
-			"<tr><td align=\"right\" width=\"30%\">" + _("Host") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" size=\"32\" name=\"" + HOST +"\" value=\"" + quoteHTML(host) + "\"" + ( fixed ? " disabled" : "" ) + "></td></tr>\n" +
-			"<tr><td align=\"right\" width=\"30%\">" + _("POP3 Port") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" style=\"text-align: right;\" size=\"5\" name=\"" + POP3 +"\" value=\"" + quoteHTML(pop3) + "\"" + ( fixed ? " disabled" : "" ) + "></td></tr>\n" +
-			"<tr><td align=\"right\" width=\"30%\">" + _("SMTP Port") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" style=\"text-align: right;\" size=\"5\" name=\"" + SMTP +"\" value=\"" + quoteHTML(smtp) + "\"" + ( fixed ? " disabled" : "" ) + "></td></tr>\n");
+			"<tr><td align=\"right\" width=\"30%\">" + _t("Host") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" size=\"32\" name=\"" + HOST +"\" value=\"" + quoteHTML(host) + "\"" + ( fixed ? " disabled" : "" ) + "></td></tr>\n" +
+			"<tr><td align=\"right\" width=\"30%\">" + _t("POP3 Port") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" style=\"text-align: right;\" size=\"5\" name=\"" + POP3 +"\" value=\"" + quoteHTML(pop3) + "\"" + ( fixed ? " disabled" : "" ) + "></td></tr>\n" +
+			"<tr><td align=\"right\" width=\"30%\">" + _t("SMTP Port") + "</td><td width=\"40%\" align=\"left\"><input type=\"text\" style=\"text-align: right;\" size=\"5\" name=\"" + SMTP +"\" value=\"" + quoteHTML(smtp) + "\"" + ( fixed ? " disabled" : "" ) + "></td></tr>\n");
 		}
 		out.println(
 			"<tr><td colspan=\"2\">&nbsp;</td></tr>\n" +
-			"<tr><td></td><td align=\"left\">" + button( LOGIN, _("Login") ) + spacer +
-			 button(OFFLINE, _("Read Mail Offline") ) +
+			"<tr><td></td><td align=\"left\">" + button( LOGIN, _t("Login") ) + spacer +
+			 button(OFFLINE, _t("Read Mail Offline") ) +
 			 //spacer +
-			 //" <input class=\"cancel\" type=\"reset\" value=\"" + _("Reset") + "\">" +
+			 //" <input class=\"cancel\" type=\"reset\" value=\"" + _t("Reset") + "\">" +
 			 spacer +
-			 button(CONFIGURE, _("Settings")) +
+			 button(CONFIGURE, _t("Settings")) +
 			"</td></tr>\n" +
 			"<tr><td colspan=\"2\">&nbsp;</td></tr>\n" +
-			"<tr><td></td><td align=\"left\"><a href=\"http://hq.postman.i2p/?page_id=14\">" + _("Learn about I2P mail") + "</a></td></tr>\n" +
-			"<tr><td></td><td align=\"left\"><a href=\"http://hq.postman.i2p/?page_id=16\">" + _("Create Account") + "</a></td></tr>\n" +
+			"<tr><td></td><td align=\"left\"><a href=\"http://hq.postman.i2p/?page_id=14\">" + _t("Learn about I2P mail") + "</a></td></tr>\n" +
+			"<tr><td></td><td align=\"left\"><a href=\"http://hq.postman.i2p/?page_id=16\">" + _t("Create Account") + "</a></td></tr>\n" +
 			"</table>");
 	}
 
@@ -2178,17 +2178,17 @@ public class WebMail extends HttpServlet
 	private static void showFolder( PrintWriter out, SessionObject sessionObject, RequestWrapper request )
 	{
 		out.println("<div class=\"topbuttons\">");
-		out.println( button( NEW, _("New") ) + spacer);
+		out.println( button( NEW, _t("New") ) + spacer);
 			// In theory, these are valid and will apply to the first checked message,
 			// but that's not obvious and did it work?
-			//button( REPLY, _("Reply") ) +
-			//button( REPLYALL, _("Reply All") ) +
-			//button( FORWARD, _("Forward") ) + spacer +
-			//button( DELETE, _("Delete") ) + spacer +
-		out.println(button( REFRESH, _("Check Mail") ) + spacer);
+			//button( REPLY, _t("Reply") ) +
+			//button( REPLYALL, _t("Reply All") ) +
+			//button( FORWARD, _t("Forward") ) + spacer +
+			//button( DELETE, _t("Delete") ) + spacer +
+		out.println(button( REFRESH, _t("Check Mail") ) + spacer);
 		//if (Config.hasConfigFile())
-		//	out.println(button( RELOAD, _("Reload Config") ) + spacer);
-		out.println(button( LOGOUT, _("Logout") ));
+		//	out.println(button( RELOAD, _t("Reload Config") ) + spacer);
+		out.println(button( LOGOUT, _t("Logout") ));
 		if (sessionObject.folder.getPages() > 1)
 			showPageButtons(out, sessionObject.folder);
 		out.println("</div>");
@@ -2199,12 +2199,12 @@ public class WebMail extends HttpServlet
 		out.println("<table id=\"mailbox\" cellspacing=\"0\" cellpadding=\"5\">\n" +
 			"<tr><td colspan=\"9\"><hr></td></tr>\n<tr>" +
 			thSpacer +
-			thSpacer + "<th>" + sortHeader( SORT_SENDER, _("From"), sessionObject.imgPath, curSort, curOrder ) + "</th>" +
-			thSpacer + "<th>" + sortHeader( SORT_SUBJECT, _("Subject"), sessionObject.imgPath, curSort, curOrder ) + "</th>" +
-			thSpacer + "<th>" + sortHeader( SORT_DATE, _("Date"), sessionObject.imgPath, curSort, curOrder ) +
+			thSpacer + "<th>" + sortHeader( SORT_SENDER, _t("From"), sessionObject.imgPath, curSort, curOrder ) + "</th>" +
+			thSpacer + "<th>" + sortHeader( SORT_SUBJECT, _t("Subject"), sessionObject.imgPath, curSort, curOrder ) + "</th>" +
+			thSpacer + "<th>" + sortHeader( SORT_DATE, _t("Date"), sessionObject.imgPath, curSort, curOrder ) +
 			//sortHeader( SORT_ID, "", sessionObject.imgPath ) +
 			"</th>" +
-			thSpacer + "<th>" + sortHeader( SORT_SIZE, _("Size"), sessionObject.imgPath, curSort, curOrder ) + "</th></tr>" );
+			thSpacer + "<th>" + sortHeader( SORT_SIZE, _t("Size"), sessionObject.imgPath, curSort, curOrder ) + "</th></tr>" );
 		int bg = 0;
 		int i = 0;
 		for( Iterator<String> it = sessionObject.folder.currentPageIterator(); it != null && it.hasNext(); ) {
@@ -2245,12 +2245,12 @@ public class WebMail extends HttpServlet
 					"<td><input type=\"checkbox\" class=\"optbox\" name=\"check" + i + "\" value=\"1\"" + 
 					" onclick=\"deleteboxclicked();\" " +
 					( idChecked ? "checked" : "" ) + ">" + "</td><td " + jslink + ">" +
-					(mail.isNew() ? "<img src=\"/susimail/icons/flag_green.png\" alt=\"\" title=\"" + _("Message is new") + "\">" : "&nbsp;") + "</td><td " + jslink + ">" +
+					(mail.isNew() ? "<img src=\"/susimail/icons/flag_green.png\" alt=\"\" title=\"" + _t("Message is new") + "\">" : "&nbsp;") + "</td><td " + jslink + ">" +
                                         // mail.shortSender and mail.shortSubject already html encoded
 					link + mail.shortSender + "</a></td><td " + jslink + ">" +
-					(mail.hasAttachment() ? "<img src=\"/susimail/icons/attach.png\" alt=\"\" title=\"" + _("Message has an attachment") + "\">" : "&nbsp;") + "</td><td " + jslink + ">" +
+					(mail.hasAttachment() ? "<img src=\"/susimail/icons/attach.png\" alt=\"\" title=\"" + _t("Message has an attachment") + "\">" : "&nbsp;") + "</td><td " + jslink + ">" +
 					link + mail.shortSubject + "</a></td><td " + jslink + ">" +
-					(mail.isSpam() ? "<img src=\"/susimail/icons/flag_red.png\" alt=\"\" title=\"" + _("Message is spam") + "\">" : "&nbsp;") + "</td><td " + jslink + ">" +
+					(mail.isSpam() ? "<img src=\"/susimail/icons/flag_red.png\" alt=\"\" title=\"" + _t("Message is spam") + "\">" : "&nbsp;") + "</td><td " + jslink + ">" +
 					// don't let date get split across lines
 					mail.localFormattedDate.replace(" ", "&nbsp;") + "</td><td " + jslink + ">&nbsp;</td><td align=\"right\" " + jslink + ">" +
 					((mail.getSize() > 0) ? (DataHelper.formatSize2(mail.getSize()) + 'B') : "???") + "</td></tr>" );
@@ -2258,7 +2258,7 @@ public class WebMail extends HttpServlet
 			i++;
 		}
 		if (i == 0)
-			out.println("<tr><td colspan=\"9\" align=\"center\"><i>" + _("No messages") + "</i></td></tr>\n</table>");
+			out.println("<tr><td colspan=\"9\" align=\"center\"><i>" + _t("No messages") + "</i></td></tr>\n</table>");
 		if (i > 0) {
 			out.println( "<tr class=\"bottombuttons\"><td colspan=\"9\"><hr></td></tr>");
 			if (sessionObject.folder.getPages() > 1 && i > 30) {
@@ -2270,27 +2270,27 @@ public class WebMail extends HttpServlet
 			out.println("<tr class=\"bottombuttons\"><td colspan=\"5\" align=\"left\">");
 			if( sessionObject.reallyDelete ) {
 				// TODO ngettext
-				out.println("<p class=\"error\">" + _("Really delete the marked messages?") +
-						"</p>" + button( REALLYDELETE, _("Yes, really delete them!") ) +
-						"<br>" + button( CLEAR, _("Cancel")));
+				out.println("<p class=\"error\">" + _t("Really delete the marked messages?") +
+						"</p>" + button( REALLYDELETE, _t("Yes, really delete them!") ) +
+						"<br>" + button( CLEAR, _t("Cancel")));
 			} else {
-				out.println(button( DELETE, _("Delete Selected") ) + "<br>");
+				out.println(button( DELETE, _t("Delete Selected") ) + "<br>");
 				out.print(
-					button( MARKALL, _("Mark All") ) +
+					button( MARKALL, _t("Mark All") ) +
 					"&nbsp;" +
-					button( CLEAR, _("Clear All") ));
+					button( CLEAR, _t("Clear All") ));
 					//"<br>" + 
-					//button( INVERT, _("Invert Selection") ) +
+					//button( INVERT, _t("Invert Selection") ) +
 					//"<br>");
 			}
 			out.print("</td>\n<td colspan=\"4\" align=\"right\">");
 			// moved to config page
 			//out.print(
-			//	_("Page Size") + ":&nbsp;<input type=\"text\" style=\"text-align: right;\" name=\"" + PAGESIZE + "\" size=\"4\" value=\"" +  sessionObject.folder.getPageSize() + "\">" +
+			//	_t("Page Size") + ":&nbsp;<input type=\"text\" style=\"text-align: right;\" name=\"" + PAGESIZE + "\" size=\"4\" value=\"" +  sessionObject.folder.getPageSize() + "\">" +
 			//	"&nbsp;" + 
-			//	button( SETPAGESIZE, _("Set") ) );
+			//	button( SETPAGESIZE, _t("Set") ) );
 			out.print("<br>");
-			out.print(button(CONFIGURE, _("Settings")));
+			out.print(button(CONFIGURE, _t("Settings")));
 			out.println("</td></tr>");
 		}
 		out.println( "</table>");
@@ -2299,18 +2299,18 @@ public class WebMail extends HttpServlet
 	/**
 	 *  first prev next last
 	 */
-	private static void showPageButtons(PrintWriter out, Folder folder) {
+	private static void showPageButtons(PrintWriter out, Folder<?> folder) {
 		out.println(
 			"<br>" +
 			( folder.isFirstPage() ?
-						button2( FIRSTPAGE, _("First") ) + "&nbsp;" + button2( PREVPAGE, _("Previous") ) :
-						button( FIRSTPAGE, _("First") ) + "&nbsp;" + button( PREVPAGE, _("Previous") ) ) +
+						button2( FIRSTPAGE, _t("First") ) + "&nbsp;" + button2( PREVPAGE, _t("Previous") ) :
+						button( FIRSTPAGE, _t("First") ) + "&nbsp;" + button( PREVPAGE, _t("Previous") ) ) +
 			" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
-			_("Page {0} of {1}", folder.getCurrentPage(), folder.getPages()) +
+			_t("Page {0} of {1}", folder.getCurrentPage(), folder.getPages()) +
 			"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " +
 			( folder.isLastPage() ? 
-						button2( NEXTPAGE, _("Next") ) + "&nbsp;" + button2( LASTPAGE, _("Last") ) :
-						button( NEXTPAGE, _("Next") ) + "&nbsp;" + button( LASTPAGE, _("Last") ) )
+						button2( NEXTPAGE, _t("Next") ) + "&nbsp;" + button2( LASTPAGE, _t("Last") ) :
+						button( NEXTPAGE, _t("Next") ) + "&nbsp;" + button( LASTPAGE, _t("Last") ) )
 		);
 	}
 
@@ -2322,7 +2322,7 @@ public class WebMail extends HttpServlet
 	private static void showMessage( PrintWriter out, SessionObject sessionObject )
 	{
 		if( sessionObject.reallyDelete ) {
-			out.println( "<p class=\"error\">" + _("Really delete this message?") + " " + button( REALLYDELETE, _("Yes, really delete it!") ) + "</p>" );
+			out.println( "<p class=\"error\">" + _t("Really delete this message?") + " " + button( REALLYDELETE, _t("Yes, really delete it!") ) + "</p>" );
 		}
 		Mail mail = sessionObject.mailCache.getMail( sessionObject.showUIDL, MailCache.FetchMode.ALL );
 		if(!RELEASE && mail != null && mail.hasBody()) {
@@ -2334,31 +2334,31 @@ public class WebMail extends HttpServlet
 			out.println( "-->" );
 		}
 		out.println("<div class=\"topbuttons\">");
-		out.println( button( NEW, _("New") ) + spacer +
-			button( REPLY, _("Reply") ) +
-			button( REPLYALL, _("Reply All") ) +
-			button( FORWARD, _("Forward") ) + spacer +
-			button( SAVE_AS, _("Save As") ) + spacer);
+		out.println( button( NEW, _t("New") ) + spacer +
+			button( REPLY, _t("Reply") ) +
+			button( REPLYALL, _t("Reply All") ) +
+			button( FORWARD, _t("Forward") ) + spacer +
+			button( SAVE_AS, _t("Save As") ) + spacer);
 		if (sessionObject.reallyDelete)
-			out.println(button2(DELETE, _("Delete")));
+			out.println(button2(DELETE, _t("Delete")));
 		else
-			out.println(button(DELETE, _("Delete")));
+			out.println(button(DELETE, _t("Delete")));
 		out.println("<br>" +
-			( sessionObject.folder.isFirstElement( sessionObject.showUIDL ) ? button2( PREV, _("Previous") ) : button( PREV, _("Previous") ) ) + spacer +
-			button( LIST, _("Back to Folder") ) + spacer +
-			( sessionObject.folder.isLastElement( sessionObject.showUIDL ) ? button2( NEXT, _("Next") ) : button( NEXT, _("Next") ) ));
+			( sessionObject.folder.isFirstElement( sessionObject.showUIDL ) ? button2( PREV, _t("Previous") ) : button( PREV, _t("Previous") ) ) + spacer +
+			button( LIST, _t("Back to Folder") ) + spacer +
+			( sessionObject.folder.isLastElement( sessionObject.showUIDL ) ? button2( NEXT, _t("Next") ) : button( NEXT, _t("Next") ) ));
 		out.println("</div>");
 		//if (Config.hasConfigFile())
-		//	out.println(button( RELOAD, _("Reload Config") ) + spacer);
-		//out.println(button( LOGOUT, _("Logout") ) );
+		//	out.println(button( RELOAD, _t("Reload Config") ) + spacer);
+		//out.println(button( LOGOUT, _t("Logout") ) );
 		if( mail != null ) {
 			out.println( "<table cellspacing=\"0\" cellpadding=\"5\">\n" +
 					"<tr><td colspan=\"2\" align=\"center\"><hr></td></tr>\n" +
-					"<tr class=\"mailhead\"><td align=\"right\" valign=\"top\">" + _("From") +
+					"<tr class=\"mailhead\"><td align=\"right\" valign=\"top\">" + _t("From") +
 					":</td><td align=\"left\">" + quoteHTML( mail.sender ) + "</td></tr>\n" +
-					"<tr class=\"mailhead\"><td align=\"right\" valign=\"top\">" + _("Subject") +
+					"<tr class=\"mailhead\"><td align=\"right\" valign=\"top\">" + _t("Subject") +
 					":</td><td align=\"left\">" + quoteHTML( mail.formattedSubject ) + "</td></tr>\n" +
-					"<tr class=\"mailhead\"><td align=\"right\" valign=\"top\">" + _("Date") +
+					"<tr class=\"mailhead\"><td align=\"right\" valign=\"top\">" + _t("Date") +
 					":</td><td align=\"left\">" + mail.quotedDate + "</td></tr>\n" +
 					"<tr><td colspan=\"2\" align=\"center\"><hr></td></tr>" );
 			if( mail.hasPart()) {
@@ -2366,11 +2366,11 @@ public class WebMail extends HttpServlet
 				showPart( out, mail.getPart(), 0, SHOW_HTML );
 			}
 			else {
-				out.println( "<tr class=\"mailbody\"><td colspan=\"2\" align=\"center\"><p class=\"error\">" + _("Could not fetch mail body.") + "</p></td></tr>" );
+				out.println( "<tr class=\"mailbody\"><td colspan=\"2\" align=\"center\"><p class=\"error\">" + _t("Could not fetch mail body.") + "</p></td></tr>" );
 			}
 		}
 		else {
-			out.println( "<tr class=\"mailbody\"><td colspan=\"2\" align=\"center\"><p class=\"error\">" + _("Could not fetch mail.") + "</p></td></tr>" );
+			out.println( "<tr class=\"mailbody\"><td colspan=\"2\" align=\"center\"><p class=\"error\">" + _t("Could not fetch mail.") + "</p></td></tr>" );
 		}
 		out.println( "<tr><td colspan=\"2\" align=\"center\"><hr></td></tr>\n</table>" );
 	}
@@ -2388,13 +2388,13 @@ public class WebMail extends HttpServlet
 			sz = Config.getProperty(Folder.PAGESIZE, Folder.DEFAULT_PAGESIZE);
 		out.println("<div class=\"topbuttons\">");
 		out.println(
-			_("Folder Page Size") + ":&nbsp;<input type=\"text\" style=\"text-align: right;\" name=\"" + PAGESIZE +
+			_t("Folder Page Size") + ":&nbsp;<input type=\"text\" style=\"text-align: right;\" name=\"" + PAGESIZE +
 			"\" size=\"4\" value=\"" +  sz + "\">" +
 			"&nbsp;" + 
-			button( SETPAGESIZE, _("Set") ) );
+			button( SETPAGESIZE, _t("Set") ) );
 		out.println("<p>");
 		out.println("</div>");
-		out.print(_("Advanced Configuration"));
+		out.print(_t("Advanced Configuration"));
 		Properties config = Config.getProperties();
 		out.print(":</p><textarea cols=\"80\" rows=\"" + Math.max(8, config.size() + 2) + "\" spellcheck=\"false\" name=\"" + CONFIG_TEXT + "\">");
 		for (Map.Entry<Object, Object> e : config.entrySet()) {
@@ -2405,23 +2405,23 @@ public class WebMail extends HttpServlet
 		out.println("</textarea>");
 		out.println("<div id=\"bottombuttons\">");
 		out.println("<br>");
-		out.println(button(SAVE, _("Save Configuration")));
-		out.println(button(CANCEL, _("Cancel")));
+		out.println(button(SAVE, _t("Save Configuration")));
+		out.println(button(CANCEL, _t("Cancel")));
 		out.println("</div>");
 	}
 
 	/** translate */
-	private static String _(String s) {
+	private static String _t(String s) {
 		return Messages.getString(s);
 	}
 
 	/** translate */
-	private static String _(String s, Object o) {
+	private static String _t(String s, Object o) {
 		return Messages.getString(s, o);
 	}
 
 	/** translate */
-	private static String _(String s, Object o, Object o2) {
+	private static String _t(String s, Object o, Object o2) {
 		return Messages.getString(s, o, o2);
 	}
 	
diff --git a/apps/susimail/src/src/i2p/susi/webmail/encoding/HeaderLine.java b/apps/susimail/src/src/i2p/susi/webmail/encoding/HeaderLine.java
index c18b9eac8b4221c45d79a3af84308d0f7bf23ba4..4ed370dd2ee3672e0e9a8461dac9aed328a25235 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/encoding/HeaderLine.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/encoding/HeaderLine.java
@@ -66,7 +66,7 @@ public class HeaderLine implements Encoding {
 		boolean quoting = false;
 		boolean quote = false;
 		boolean linebreak = false;
-		String quotedSequence = null;
+		StringBuilder quotedSequence = null;
 		int rest = in.length;
 		int index = 0;
 		while( true ) {
@@ -102,14 +102,15 @@ public class HeaderLine implements Encoding {
 			}
 			if( quote ) {
 				if( ! quoting ) {
-					quotedSequence = "=?utf-8?Q?";
+					quotedSequence = new StringBuilder(64);
+					quotedSequence.append("=?utf-8?Q?");
 					quoting = true;
 				}
-				quotedSequence += HexTable.table[ c < 0 ? 256 + c : c ];
+				quotedSequence.append(HexTable.table[ c < 0 ? 256 + c : c ]);
 			}
 			else {
 				if( quoting ) {
-					quotedSequence += "?=";
+					quotedSequence.append("?=");
 					int sl = quotedSequence.length();
 					if( l + sl > 76 ) {
 						/*
@@ -138,7 +139,7 @@ public class HeaderLine implements Encoding {
 			}
 		}
 		if( quoting ) {
-			quotedSequence += "?=";
+			quotedSequence.append("?=");
 			int sl = quotedSequence.length();
 			if( l + sl > 76 ) {
 				/*
diff --git a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java
index f688ddc16a980f86f92d5a039a101e9937c5921b..5ed2018275dad6881de640b6c5278eaf75f8d9fd 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java
@@ -99,7 +99,7 @@ public class POP3MailBox implements NewMailListener {
 		sizes = new HashMap<Integer, Integer>();
 		synchronizer = new Object();
 		// this appears in the UI so translate
-		lastLine = _("No response from server");
+		lastLine = _t("No response from server");
 		lastActive = new AtomicLong(System.currentTimeMillis());
 		lastChecked = new AtomicLong();
 		delayedDeleter = new DelayedDeleter(this);
@@ -665,15 +665,15 @@ public class POP3MailBox implements NewMailListener {
 						idleCloser = new IdleCloser(this);
 				} else {
 					if (lastError.equals(""))
-						lastError = _("Error connecting to server");
+						lastError = _t("Error connecting to server");
 					close();
 				}
 			}
 			catch (NumberFormatException e1) {
-				lastError = _("Error opening mailbox") + ": " + e1;
+				lastError = _t("Error opening mailbox") + ": " + e1;
 			}
 			catch (IOException e1) {
-				lastError = _("Error opening mailbox") + ": " + e1.getLocalizedMessage();
+				lastError = _t("Error opening mailbox") + ": " + e1.getLocalizedMessage();
 			}
 		}
 	}
@@ -748,7 +748,7 @@ public class POP3MailBox implements NewMailListener {
 			}
 		} else {
 			Debug.debug(Debug.DEBUG, "sendCmd1a: (" + cmd + ") NO RESPONSE");
-			lastError = _("No response from server");
+			lastError = _t("No response from server");
 			throw new IOException(lastError);
 		}
 		return result;
@@ -790,7 +790,7 @@ public class POP3MailBox implements NewMailListener {
 			String foo = DataHelper.readLine(in);
 			updateActivity();
 			if (foo == null) {
-				lastError = _("No response from server");
+				lastError = _t("No response from server");
 				throw new IOException(lastError);
 			}
 			sr.response = foo.trim();
@@ -1022,7 +1022,7 @@ public class POP3MailBox implements NewMailListener {
 			e = e.substring(5);
 		// translate this common error
 		if (e.trim().equals("Login failed."))
-			e = _("Login failed");
+			e = _t("Login failed");
 		return e;
 	}
 
@@ -1257,7 +1257,7 @@ public class POP3MailBox implements NewMailListener {
 	}
 
 	/** translate */
-	private static String _(String s) {
+	private static String _t(String s) {
 		return Messages.getString(s);
 	}
 }
diff --git a/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java b/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java
index f3f755698513649f90019fa3f27378a49139ab9c..046dcbef5288142efd9618931de465fc312861cf 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java
@@ -211,7 +211,7 @@ public class SMTPClient {
 		try {
 			socket = new Socket( host, port );
 		} catch (Exception e) {
-			error += _("Cannot connect") + ": " + e.getMessage() + '\n';
+			error += _t("Cannot connect") + ": " + e.getMessage() + '\n';
 			ok = false;
 		}
 		try {
@@ -222,7 +222,7 @@ public class SMTPClient {
 				socket.setSoTimeout(120*1000);
 				int result = sendCmd(null);
 				if (result != 220) {
-					error += _("Server refused connection") + " (" + result +  ")\n";
+					error += _t("Server refused connection") + " (" + result +  ")\n";
 					ok = false;
 				}
 			}
@@ -234,7 +234,7 @@ public class SMTPClient {
 				if (r.result == 250) {
 					supportsPipelining = r.recv.contains("PIPELINING");
 				} else {
-					error += _("Server refused connection") + " (" + r.result +  ")\n";
+					error += _t("Server refused connection") + " (" + r.result +  ")\n";
 					ok = false;
 				}
 			}
@@ -246,7 +246,7 @@ public class SMTPClient {
 				cmds.add(new SendExpect(base64.encode(user), 334));
 				cmds.add(new SendExpect(base64.encode(pass), 235));
 				if (sendCmds(cmds) != 3) {
-					error += _("Login failed") + '\n';
+					error += _t("Login failed") + '\n';
 					ok = false;
 				}
 			}
@@ -259,7 +259,7 @@ public class SMTPClient {
 				cmds.add(new SendExpect("DATA", 354));
 				if (sendCmds(cmds) != cmds.size()) {
 					// TODO which recipient?
-					error += _("Mail rejected") + '\n';
+					error += _t("Mail rejected") + '\n';
 					ok = false;
 				}
 			}
@@ -273,10 +273,10 @@ public class SMTPClient {
 				if (result == 250)
 					mailSent = true;
 				else
-					error += _("Error sending mail") + " (" + result +  ")\n";
+					error += _t("Error sending mail") + " (" + result +  ")\n";
 			}
 		} catch (IOException e) {
-			error += _("Error sending mail") + ": " + e.getMessage() + '\n';
+			error += _t("Error sending mail") + ": " + e.getMessage() + '\n';
 
 		} catch (EncodingException e) {
 			error += e.getMessage();
@@ -324,7 +324,7 @@ public class SMTPClient {
 	}
 
 	/** translate */
-	private static String _(String s) {
+	private static String _t(String s) {
 		return Messages.getString(s);
 	}
 }
diff --git a/build.properties b/build.properties
index 195a13c6b3721b3708cc2e6004351813b318ae20..9e219c33359db5a3fd9f83a27177963bb41e0adc 100644
--- a/build.properties
+++ b/build.properties
@@ -11,7 +11,10 @@
 # Note: Include the trailing slash! Don't surround the URL in quotes!
 javasedocs.url=http://docs.oracle.com/javase/6/docs/api/
 javaeedocs.url=http://docs.oracle.com/javaee/6/api/
-jettydocs.url=http://download.eclipse.org/jetty/stable-8/apidocs/
+# The following link is dead, perhaps temporarily,
+# perhaps not, as they move 7 and 8 to unsupported status.
+#jettydocs.url=http://download.eclipse.org/jetty/stable-8/apidocs/
+jettydocs.url=http://download.eclipse.org/jetty/8.1.17.v20150415/apidocs/
 jrobindocs.url=http://docs.i2p-projekt.de/jrobin/javadoc/
 wrapperdocs.url=http://wrapper.tanukisoftware.com/jdoc/
 # these are only for unit test javadocs
diff --git a/build.xml b/build.xml
index c6dba9e08f325a19bc3c43af9e434e3be4ed64c6..ea10ca4bba4c23a7b969aa87f41e96599795f41d 100644
--- a/build.xml
+++ b/build.xml
@@ -100,8 +100,11 @@
                     <pathelement location="build/i2p.jar" />
                     <pathelement location="build/i2psnark.jar" />
                 </classpath>
-                <arg value="@{file}" />
+                <arg value="-a" />
                 <arg value="http://tracker2.postman.i2p/announce.php" />
+                <arg value="-c" />
+                <arg value="${build.built-by}" />
+                <arg value="@{file}" />
             </java>
         </sequential>
     </macrodef>
@@ -450,7 +453,7 @@
             if (newBuildNumber != 'unknown' && newBuildNumber != null) {
                 echo = project.createTask("echo");
                 project.setProperty("new.i2p.build.number", newBuildNumber);
-                echo.setMessage("Build number is now: " + newBuildNumber);
+                echo.setMessage("Build number is now: " + newBuildNumber + project.getProperty("build.extra"));
                 echo.perform();
             }
             ]]>
@@ -1261,8 +1264,9 @@
         <copy todir="pkg-temp/docs/" >
           <fileset dir="installer/resources/readme/" includes="readme*.html" />
           <fileset dir="installer/resources/proxy/" includes="*.ht" />
-          <!-- lang_ar.png added in 0.8.4; a1,a2,je, and eu.png added in 0.8.9; gg.png added in 0.8.10; im.png added in 0.8.12; cw.png added in 0.9.5 -->
-          <fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/im.png icons/flags/a1.png icons/flags/a2.png icons/flags/cw.png" />
+          <!-- lang_ar.png added in 0.8.4; a1,a2,je, and eu.png added in 0.8.9; gg.png added in 0.8.10;
+               im.png added in 0.8.12; cw.png added in 0.9.5; ap,bl,bq,ss,sx added in 0.9.21 -->
+          <fileset dir="installer/resources/" includes="icons/flags/lang_ar.png icons/flags/gg.png icons/flags/je.png icons/flags/eu.png icons/flags/im.png icons/flags/a1.png icons/flags/a2.png icons/flags/cw.png icons/flags/ap.png icons/flags/bl.png icons/flags/bq.png icons/flags/ss.png icons/flags/sx.png" />
         </copy>
     </target>
 
@@ -1398,6 +1402,9 @@
         <concat append="true" destfile="pkg-temp/history.txt">&#10;&#10;----------------&#10;&#10;EARLIER HISTORY IS AVAILABLE IN THE SOURCE PACKAGE"</concat>
         <copy file="installer/resources/deletelist.txt" todir="pkg-temp/" />
         <copy file="installer/resources/blocklist.txt" todir="pkg-temp/" />
+        <copy todir="pkg-temp/man/">
+            <fileset dir="installer/resources/man/" />
+        </copy>
     </target>
 
     <target name="prepupdateSmall" depends="buildSmall, prepupdateRouter, prepjupdatefixes, prepthemeupdates">
@@ -1734,6 +1741,7 @@
             <arg value="apps/BOB/src/:apps/addressbook/java/src/:apps/i2psnark/java/src/:apps/i2ptunnel/java/src/:apps/ministreaming/java/src/:apps/routerconsole/java/src/:apps/sam/java/src/:apps/streaming/java/src/:apps/susidns/src/java/src/:apps/susimail/src/src/:apps/systray/java/src/:core/java/src/:router/java/src/:installer/java/src"/>
             <!-- start of the files to be analyzed -->
             <arg value="build/BOB.jar"/>
+            <arg value="build/addressbook.jar"/>
             <arg value="build/addressbook.war"/>
             <arg value="build/i2p.jar"/>
             <arg value="build/i2psnark.jar"/>
@@ -1761,9 +1769,11 @@
          since preppkg puts too much stuff in pkg-temp -->
 <!--
     <target name="release" depends="distclean, updaterWithJettyFixesAndJbigi , updater200WithJettyFixes, preppkg, installer, getReleaseNumber" >
-    <target name="release" depends="verifyReleaseBuildNumbers, -pre-release, distclean, testscripts, updaterWithJettyAndGeoIPRepack, updater200WithJettyAndGeoIP, delete-j6-update, installer-nowindows, delete-nonwindows, installer-windows">
 -->
+    <target name="release" depends="verifyReleaseBuildNumbers, -pre-release, distclean, testscripts, updaterWithJettyAndGeoIPRepack, updater200WithJettyAndGeoIP, delete-j6-update, installer-nowindows, delete-nonwindows, installer-windows">
+<!--
     <target name="release" depends="verifyReleaseBuildNumbers, -pre-release, distclean, testscripts, updaterWithJettyRepack, updater200WithJetty, delete-j6-update, installer-nowindows, delete-nonwindows, installer-windows">
+-->
         <echo message="New version number is ${release.number}" />
         <copy file="i2pupdate.zip" tofile="i2pupdate_${release.number}.zip" />
         <copy file="i2pinstall_${full.version}.jar" tofile="i2pinstall_${release.number}.jar" />
diff --git a/core/java/src/gnu/crypto/prng/AsyncFortunaStandalone.java b/core/java/src/gnu/crypto/prng/AsyncFortunaStandalone.java
index 12d6c6bee1d888b4e8a9a205ebf2ddc8963a7215..0d138e87d05ed3786f1fdf82bd3e83c1a08295ea 100644
--- a/core/java/src/gnu/crypto/prng/AsyncFortunaStandalone.java
+++ b/core/java/src/gnu/crypto/prng/AsyncFortunaStandalone.java
@@ -56,7 +56,7 @@ public class AsyncFortunaStandalone extends FortunaStandalone implements Runnabl
         _isRunning = true;
         _refillThread = new I2PThread(this, "PRNG");
         _refillThread.setDaemon(true);
-        _refillThread.setPriority(Thread.MIN_PRIORITY+1);
+        _refillThread.setPriority(Thread.NORM_PRIORITY - 2);
         _refillThread.start();
     }
 
diff --git a/core/java/src/gnu/getopt/MessagesBundle_fi.properties b/core/java/src/gnu/getopt/MessagesBundle_fi.properties
new file mode 100644
index 0000000000000000000000000000000000000000..1b253d1cd64cb4f42f2abe7f77dce2d429f03f3b
--- /dev/null
+++ b/core/java/src/gnu/getopt/MessagesBundle_fi.properties
@@ -0,0 +1,31 @@
+#**************************************************************************
+#* MessagesBundle.properties -- English language error messages
+#*
+#* Copyright (c) 1998 by William King (wrking@eng.sun.com) and
+#*                       Aaron M. Renn (arenn@urbanophile.com)
+#*
+#* This program is free software; you can redistribute it and/or modify
+#* it under the terms of the GNU Library General Public License as published
+#* by  the Free Software Foundation; either version 2 of the License or
+#* (at your option) any later version.
+#*
+#* This program is distributed in the hope that it will be useful, but
+#* WITHOUT ANY WARRANTY; without even the implied warranty of
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#* GNU Library General Public License for more details.
+#*
+#* You should have received a copy of the GNU Library General Public License
+#* along with this program; see the file COPYING.LIB.  If not, write to
+#* the Free Software Foundation Inc., 59 Temple Place - Suite 330,
+#* Boston, MA  02111-1307 USA
+#**************************************************************************/
+getopt.ambigious={0}\: valitsin \u201d{1}\u201d ei ole yksiselitteinen
+getopt.arguments1={0}\: valitsin ''--{1}'' ei salli argumenttia
+getopt.arguments2={0}\: valitsin ''{1}{2}'' ei salli argumenttia
+getopt.requires={0}\: valitsin ''{1}'' vaatii argumentin
+getopt.unrecognized={0}\: tunnistamaton valitsin ''--{1}''
+getopt.unrecognized2={0}\: tunnistamaton valitsin ''{1}{2}''
+getopt.illegal={0}\: virheellinen valitsin -- {1}
+getopt.invalid={0}\: virheellinen valitsin -- {1}
+getopt.requires2={0}\: valitsin vaatii argumentin -- {1}
+getopt.invalidValue=Virheellinen arvo {0} parametrille 'has_arg'
diff --git a/core/java/src/net/i2p/CoreVersion.java b/core/java/src/net/i2p/CoreVersion.java
index d189588ecfd2e97baf081b6652b6fdcdde47f4d9..2a1175c6e5ac1085671c7356d54e3be11ae25b5c 100644
--- a/core/java/src/net/i2p/CoreVersion.java
+++ b/core/java/src/net/i2p/CoreVersion.java
@@ -18,7 +18,7 @@ public class CoreVersion {
     /** deprecated */
     public final static String ID = "Monotone";
 
-    public final static String VERSION = "0.9.19";
+    public final static String VERSION = "0.9.22";
 
     /**
      *  For Vuze.
diff --git a/core/java/src/net/i2p/I2PAppContext.java b/core/java/src/net/i2p/I2PAppContext.java
index f7e2d7699bbf7ed57bf02cb4580577244a974511..bae35726049b7725aded3c82035cb1804c6d10a9 100644
--- a/core/java/src/net/i2p/I2PAppContext.java
+++ b/core/java/src/net/i2p/I2PAppContext.java
@@ -23,7 +23,6 @@ import net.i2p.data.Base64;
 import net.i2p.data.RoutingKeyGenerator;
 import net.i2p.internal.InternalClientManager;
 import net.i2p.stat.StatManager;
-import net.i2p.update.UpdateManager;
 import net.i2p.util.Clock;
 import net.i2p.util.ConcurrentHashSet;
 import net.i2p.util.FileUtil;
@@ -85,6 +84,7 @@ public class I2PAppContext {
     private RandomSource _random;
     private KeyGenerator _keyGenerator;
     protected KeyRing _keyRing; // overridden in RouterContext
+    @SuppressWarnings("deprecation")
     private SimpleScheduler _simpleScheduler;
     private SimpleTimer _simpleTimer;
     private SimpleTimer2 _simpleTimer2;
@@ -533,7 +533,7 @@ public class I2PAppContext {
      * @return set of Strings containing the names of defined system properties
      */
     @SuppressWarnings({ "unchecked", "rawtypes" })
-	public Set<String> getPropertyNames() { 
+    public Set<String> getPropertyNames() { 
         // clone to avoid ConcurrentModificationException
         Set<String> names = new HashSet<String>((Set<String>) (Set) ((Properties) System.getProperties().clone()).keySet()); // TODO-Java6: s/keySet()/stringPropertyNames()/
         if (_overrideProps != null)
@@ -941,6 +941,7 @@ public class I2PAppContext {
      * @since 0.9 to replace static instance in the class
      * @deprecated in 0.9.20, use simpleTimer2()
      */
+    @SuppressWarnings("deprecation")
     public SimpleScheduler simpleScheduler() {
         if (!_simpleSchedulerInitialized)
             initializeSimpleScheduler();
diff --git a/core/java/src/net/i2p/client/I2PClientFactory.java b/core/java/src/net/i2p/client/I2PClientFactory.java
index 86fbdaa8cede51d439c66f99efc76ec87bbc50d9..01a37b599f78597e24db30f99c709f6796bc9dd6 100644
--- a/core/java/src/net/i2p/client/I2PClientFactory.java
+++ b/core/java/src/net/i2p/client/I2PClientFactory.java
@@ -9,6 +9,8 @@ package net.i2p.client;
  *
  */
 
+import net.i2p.client.impl.I2PClientImpl;
+
 /**
  * Provide a means of hooking into an appropriate I2PClient implementation
  *
@@ -21,4 +23,4 @@ public class I2PClientFactory {
     public static I2PClient createClient() {
         return new I2PClientImpl();
     }
-}
\ No newline at end of file
+}
diff --git a/core/java/src/net/i2p/client/I2PSession.java b/core/java/src/net/i2p/client/I2PSession.java
index a6ce4122ee712af166dbcf90aeacd7489930f79a..818cb598350ed28d27738f665689b9cb3120549d 100644
--- a/core/java/src/net/i2p/client/I2PSession.java
+++ b/core/java/src/net/i2p/client/I2PSession.java
@@ -9,6 +9,8 @@ package net.i2p.client;
  *
  */
 
+import java.io.InputStream;
+import java.util.List;
 import java.util.Properties;
 import java.util.Set;
 
@@ -16,12 +18,13 @@ import net.i2p.data.Destination;
 import net.i2p.data.Hash;
 import net.i2p.data.PrivateKey;
 import net.i2p.data.SessionKey;
+import net.i2p.data.SessionTag;
 import net.i2p.data.SigningPrivateKey;
 
 /**
  * <p>Define the standard means of sending and receiving messages on the 
  * I2P network by using the I2CP (the client protocol).  This is done over a 
- * bidirectional TCP socket and never sends any private keys.
+ * bidirectional TCP socket.
  *
  * End to end encryption in I2PSession was disabled in release 0.6.
  *
@@ -96,7 +99,7 @@ public interface I2PSession {
      *                 objects that were sent along side the given keyUsed.
      * @return success
      */
-    public boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent) throws I2PSessionException;
+    public boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set<SessionTag> tagsSent) throws I2PSessionException;
 
     /**
      * End-to-End Crypto is disabled, tags and keys are ignored.
@@ -104,7 +107,7 @@ public interface I2PSession {
      * @param tagsSent UNUSED, IGNORED.
      * @return success
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent) throws I2PSessionException;
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent) throws I2PSessionException;
 
     /**
      * End-to-End Crypto is disabled, tags and keys are ignored.
@@ -114,7 +117,7 @@ public interface I2PSession {
      * @return success
      * @since 0.7.1
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire) throws I2PSessionException;
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire) throws I2PSessionException;
 
     /**
      * See I2PSessionMuxedImpl for proto/port details.
@@ -131,7 +134,7 @@ public interface I2PSession {
      * @return success
      * @since 0.7.1
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent,
                                int proto, int fromPort, int toPort) throws I2PSessionException;
 
     /**
@@ -150,7 +153,7 @@ public interface I2PSession {
      * @return success
      * @since 0.7.1
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire,
                                int proto, int fromPort, int toPort) throws I2PSessionException;
 
     /**
@@ -169,7 +172,7 @@ public interface I2PSession {
      * @return success
      * @since 0.8.4
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire,
                                int proto, int fromPort, int toPort, int flags) throws I2PSessionException;
 
     /**
@@ -247,6 +250,26 @@ public interface I2PSession {
      *
      */
     public void destroySession() throws I2PSessionException;
+    
+    /**
+     *  @return a new subsession, non-null
+     *  @param privateKeyStream null for transient, if non-null must have same encryption keys as primary session
+     *                          and different signing keys
+     *  @param opts subsession options if any, may be null
+     *  @since 0.9.21
+     */
+    public I2PSession addSubsession(InputStream privateKeyStream, Properties opts) throws I2PSessionException;
+    
+    /**
+     *  @since 0.9.21
+     */
+    public void removeSubsession(I2PSession session);
+    
+    /**
+     *  @return a list of subsessions, non-null, does not include the primary session
+     *  @since 0.9.21
+     */
+    public List<I2PSession> getSubsessions();
 
     /**
      * Actually connect the session and start receiving/sending messages
diff --git a/core/java/src/net/i2p/client/I2PSimpleClient.java b/core/java/src/net/i2p/client/I2PSimpleClient.java
index 38286f2b1ba9f05654f138be63efa786fb99aa73..c8b1fdcf450de25dd5092d9de26a242845636c39 100644
--- a/core/java/src/net/i2p/client/I2PSimpleClient.java
+++ b/core/java/src/net/i2p/client/I2PSimpleClient.java
@@ -12,6 +12,7 @@ import java.util.Properties;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
+import net.i2p.client.impl.I2PSimpleSession;
 import net.i2p.crypto.SigType;
 import net.i2p.data.Certificate;
 import net.i2p.data.Destination;
diff --git a/core/java/src/net/i2p/client/BWLimitsMessageHandler.java b/core/java/src/net/i2p/client/impl/BWLimitsMessageHandler.java
similarity index 96%
rename from core/java/src/net/i2p/client/BWLimitsMessageHandler.java
rename to core/java/src/net/i2p/client/impl/BWLimitsMessageHandler.java
index 34fa81ec8ecd4489691d195370b77704de63c6bb..6e199af46afa1f1c1e43ef6e190503be6a70feaf 100644
--- a/core/java/src/net/i2p/client/BWLimitsMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/BWLimitsMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * Released into the public domain 
diff --git a/core/java/src/net/i2p/client/ClientWriterRunner.java b/core/java/src/net/i2p/client/impl/ClientWriterRunner.java
similarity index 98%
rename from core/java/src/net/i2p/client/ClientWriterRunner.java
rename to core/java/src/net/i2p/client/impl/ClientWriterRunner.java
index 35ecce19d4f5bc1daf4ec196f3f3c8e64798a230..dfe20bc1def34b5d1e8bff81f0b2e94408ff3ee4 100644
--- a/core/java/src/net/i2p/client/ClientWriterRunner.java
+++ b/core/java/src/net/i2p/client/impl/ClientWriterRunner.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 import java.io.BufferedOutputStream;
 import java.io.IOException;
@@ -9,6 +9,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.i2cp.I2CPMessage;
 import net.i2p.data.i2cp.I2CPMessageException;
 import net.i2p.internal.PoisonI2CPMessage;
diff --git a/core/java/src/net/i2p/client/DestReplyMessageHandler.java b/core/java/src/net/i2p/client/impl/DestReplyMessageHandler.java
similarity index 97%
rename from core/java/src/net/i2p/client/DestReplyMessageHandler.java
rename to core/java/src/net/i2p/client/impl/DestReplyMessageHandler.java
index 2207a56c514af61b858968272432efdd410ca903..e15a55779d59c06a4175befa8ccda9656d5f48f6 100644
--- a/core/java/src/net/i2p/client/DestReplyMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/DestReplyMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * Released into the public domain 
diff --git a/core/java/src/net/i2p/client/DisconnectMessageHandler.java b/core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java
similarity index 95%
rename from core/java/src/net/i2p/client/DisconnectMessageHandler.java
rename to core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java
index 8dd47f10b2e5b8990da0f39bd8eeb85355424bc3..20582ddcb203d4697808e25ebb9e68efba752a9a 100644
--- a/core/java/src/net/i2p/client/DisconnectMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/DisconnectMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -10,6 +10,7 @@ package net.i2p.client;
  */
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.i2cp.DisconnectMessage;
 import net.i2p.data.i2cp.I2CPMessage;
 import net.i2p.util.I2PAppThread;
diff --git a/core/java/src/net/i2p/client/HandlerImpl.java b/core/java/src/net/i2p/client/impl/HandlerImpl.java
similarity index 96%
rename from core/java/src/net/i2p/client/HandlerImpl.java
rename to core/java/src/net/i2p/client/impl/HandlerImpl.java
index d1b5100e2754af29f51fc6656068d19227e98cd0..081d8e0c420152a47eea2457753e62b342e24509 100644
--- a/core/java/src/net/i2p/client/HandlerImpl.java
+++ b/core/java/src/net/i2p/client/impl/HandlerImpl.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
diff --git a/core/java/src/net/i2p/client/HostReplyMessageHandler.java b/core/java/src/net/i2p/client/impl/HostReplyMessageHandler.java
similarity index 97%
rename from core/java/src/net/i2p/client/HostReplyMessageHandler.java
rename to core/java/src/net/i2p/client/impl/HostReplyMessageHandler.java
index 94cce4758cdb322b67311873079c920ddb1b7491..4cce11ab916a6afbbe1fd6f47fef913f3f0b0cf4 100644
--- a/core/java/src/net/i2p/client/HostReplyMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/HostReplyMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * Released into the public domain 
diff --git a/core/java/src/net/i2p/client/I2CPMessageHandler.java b/core/java/src/net/i2p/client/impl/I2CPMessageHandler.java
similarity index 95%
rename from core/java/src/net/i2p/client/I2CPMessageHandler.java
rename to core/java/src/net/i2p/client/impl/I2CPMessageHandler.java
index a0f14f8378af01bbbcc97874b26dca94acb9b8c3..a0a60d69dacd4778da0248c341482fc905105eef 100644
--- a/core/java/src/net/i2p/client/I2CPMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/I2CPMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
diff --git a/core/java/src/net/i2p/client/I2CPMessageProducer.java b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java
similarity index 92%
rename from core/java/src/net/i2p/client/I2CPMessageProducer.java
rename to core/java/src/net/i2p/client/impl/I2CPMessageProducer.java
index c625e784196f29fb3e1847c5a1f22f4c07f16714..dd6783f433e32af435d53b6e944a17a9d969967e 100644
--- a/core/java/src/net/i2p/client/I2CPMessageProducer.java
+++ b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -15,6 +15,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.ReentrantLock;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
+import net.i2p.client.SendMessageOptions;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
 import net.i2p.data.LeaseSet;
@@ -34,6 +36,7 @@ import net.i2p.data.i2cp.ReportAbuseMessage;
 import net.i2p.data.i2cp.SendMessageMessage;
 import net.i2p.data.i2cp.SendMessageExpiresMessage;
 import net.i2p.data.i2cp.SessionConfig;
+import net.i2p.data.i2cp.SessionId;
 import net.i2p.util.Log;
 
 /**
@@ -99,7 +102,7 @@ class I2CPMessageProducer {
         if (_log.shouldLog(Log.DEBUG)) _log.debug("config signed");
         msg.setSessionConfig(cfg);
         if (_log.shouldLog(Log.DEBUG)) _log.debug("config loaded into message");
-        session.sendMessage(msg);
+        session.sendMessage_unchecked(msg);
         if (_log.shouldLog(Log.DEBUG)) _log.debug("config message sent");
     }
 
@@ -111,7 +114,7 @@ class I2CPMessageProducer {
         if (session.isClosed()) return;
         DestroySessionMessage dmsg = new DestroySessionMessage();
         dmsg.setSessionId(session.getSessionId());
-        session.sendMessage(dmsg);
+        session.sendMessage_unchecked(dmsg);
         // use DisconnectMessage only if we fail and drop connection... 
         // todo: update the code to fire off DisconnectMessage on socket error
         //DisconnectMessage msg = new DisconnectMessage();
@@ -129,7 +132,7 @@ class I2CPMessageProducer {
      * @param newKey unused - no end-to-end crypto
      */
     public void sendMessage(I2PSessionImpl session, Destination dest, long nonce, byte[] payload, SessionTag tag,
-                            SessionKey key, Set tags, SessionKey newKey, long expires) throws I2PSessionException {
+                            SessionKey key, Set<SessionTag> tags, SessionKey newKey, long expires) throws I2PSessionException {
         sendMessage(session, dest, nonce, payload, expires, 0);
     }
 
@@ -154,7 +157,12 @@ class I2CPMessageProducer {
         } else
             msg = new SendMessageMessage();
         msg.setDestination(dest);
-        msg.setSessionId(session.getSessionId());
+        SessionId sid = session.getSessionId();
+        if (sid == null) {
+            _log.error(session.toString() + " send message w/o session", new Exception());
+            return;
+        }
+        msg.setSessionId(sid);
         msg.setNonce(nonce);
         Payload data = createPayload(dest, payload, null, null, null, null);
         msg.setPayload(data);
@@ -176,7 +184,12 @@ class I2CPMessageProducer {
             return;
         SendMessageMessage msg = new SendMessageExpiresMessage(options);
         msg.setDestination(dest);
-        msg.setSessionId(session.getSessionId());
+        SessionId sid = session.getSessionId();
+        if (sid == null) {
+            _log.error(session.toString() + " send message w/o session", new Exception());
+            return;
+        }
+        msg.setSessionId(sid);
         msg.setNonce(nonce);
         Payload data = createPayload(dest, payload, null, null, null, null);
         msg.setPayload(data);
@@ -352,8 +365,13 @@ class I2CPMessageProducer {
         msg.setLeaseSet(leaseSet);
         msg.setPrivateKey(priv);
         msg.setSigningPrivateKey(signingPriv);
-        msg.setSessionId(session.getSessionId());
-        session.sendMessage(msg);
+        SessionId sid = session.getSessionId();
+        if (sid == null) {
+            _log.error(session.toString() + " create LS w/o session", new Exception());
+            return;
+        }
+        msg.setSessionId(sid);
+        session.sendMessage_unchecked(msg);
     }
 
     /**
@@ -381,7 +399,12 @@ class I2CPMessageProducer {
             throw new I2PSessionException("Unable to sign the session config", dfe);
         }
         msg.setSessionConfig(cfg);
-        msg.setSessionId(session.getSessionId());
+        SessionId sid = session.getSessionId();
+        if (sid == null) {
+            _log.error(session.toString() + " update config w/o session", new Exception());
+            return;
+        }
+        msg.setSessionId(sid);
         session.sendMessage(msg);
     }
 }
diff --git a/core/java/src/net/i2p/client/I2PClientImpl.java b/core/java/src/net/i2p/client/impl/I2PClientImpl.java
similarity index 97%
rename from core/java/src/net/i2p/client/I2PClientImpl.java
rename to core/java/src/net/i2p/client/impl/I2PClientImpl.java
index e0c7feea9ff7f025df66542feba73081897f0ed4..0bda34daa48da6b1c22376ef4be2da2e6f6a5e5d 100644
--- a/core/java/src/net/i2p/client/I2PClientImpl.java
+++ b/core/java/src/net/i2p/client/impl/I2PClientImpl.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -17,6 +17,9 @@ import java.util.Properties;
 
 import net.i2p.I2PAppContext;
 import net.i2p.I2PException;
+import net.i2p.client.I2PClient;
+import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
 import net.i2p.crypto.KeyGenerator;
 import net.i2p.crypto.SigType;
 import net.i2p.data.Certificate;
@@ -36,7 +39,7 @@ import net.i2p.util.RandomSource;
  *
  * @author jrandom
  */
-class I2PClientImpl implements I2PClient {
+public class I2PClientImpl implements I2PClient {
 
     /**
      * Create a destination with a DSA 1024/160 signature type and a null certificate.
diff --git a/core/java/src/net/i2p/client/I2PClientMessageHandlerMap.java b/core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java
similarity index 99%
rename from core/java/src/net/i2p/client/I2PClientMessageHandlerMap.java
rename to core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java
index bd2de83d6343d436fe9e04432ecb2ac14455776c..4cea850b79d25a25cd886ecafac74dc1a920ca74 100644
--- a/core/java/src/net/i2p/client/I2PClientMessageHandlerMap.java
+++ b/core/java/src/net/i2p/client/impl/I2PClientMessageHandlerMap.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
diff --git a/core/java/src/net/i2p/client/I2PSessionDemultiplexer.java b/core/java/src/net/i2p/client/impl/I2PSessionDemultiplexer.java
similarity index 88%
rename from core/java/src/net/i2p/client/I2PSessionDemultiplexer.java
rename to core/java/src/net/i2p/client/impl/I2PSessionDemultiplexer.java
index 1f07a32fc947d4c1ca9ef5db2f8d4deb25c76951..5b29e8018014b67553b3a6f55607dec3a70bdaf6 100644
--- a/core/java/src/net/i2p/client/I2PSessionDemultiplexer.java
+++ b/core/java/src/net/i2p/client/impl/I2PSessionDemultiplexer.java
@@ -1,9 +1,13 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.Map;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
+import net.i2p.client.I2PSessionListener;
+import net.i2p.client.I2PSessionMuxedListener;
 import net.i2p.util.Log;
 
 /*
@@ -74,7 +78,9 @@ public class I2PSessionDemultiplexer implements I2PSessionMuxedListener {
      *  (Streaming lib)
      */
     public void addListener(I2PSessionListener l, int proto, int port) {
-        _listeners.put(key(proto, port), new NoPortsListener(l));
+        I2PSessionListener old = _listeners.put(key(proto, port), new NoPortsListener(l));
+        if (old != null && _log.shouldLog(Log.WARN))
+            _log.warn("Listener " + l + " replaces " + old + " for proto: " + proto + " port: " + port);
     }
 
     /**
@@ -82,7 +88,9 @@ public class I2PSessionDemultiplexer implements I2PSessionMuxedListener {
      *  UDP perhaps
      */
     public void addMuxedListener(I2PSessionMuxedListener l, int proto, int port) {
-        _listeners.put(key(proto, port), l);
+        I2PSessionListener old = _listeners.put(key(proto, port), l);
+        if (old != null && _log.shouldLog(Log.WARN))
+            _log.warn("Listener " + l + " replaces " + old + " for proto: " + proto + " port: " + port);
     }
 
     public void removeListener(int proto, int port) {
diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/impl/I2PSessionImpl.java
similarity index 80%
rename from core/java/src/net/i2p/client/I2PSessionImpl.java
rename to core/java/src/net/i2p/client/impl/I2PSessionImpl.java
index 540695a4a369fb1f993368ed34bcac5a50ce299e..046683ea408ad2a9e5f9831191edbc7c7ab9cd83 100644
--- a/core/java/src/net/i2p/client/I2PSessionImpl.java
+++ b/core/java/src/net/i2p/client/impl/I2PSessionImpl.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -23,11 +23,17 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import net.i2p.CoreVersion;
 import net.i2p.I2PAppContext;
+import net.i2p.client.DomainSocketFactory;
+import net.i2p.client.I2PClient;
+import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
+import net.i2p.client.I2PSessionListener;
 import net.i2p.data.Base32;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Destination;
@@ -36,13 +42,16 @@ import net.i2p.data.LeaseSet;
 import net.i2p.data.PrivateKey;
 import net.i2p.data.SigningPrivateKey;
 import net.i2p.data.i2cp.DestLookupMessage;
+import net.i2p.data.i2cp.DestReplyMessage;
 import net.i2p.data.i2cp.GetBandwidthLimitsMessage;
 import net.i2p.data.i2cp.GetDateMessage;
 import net.i2p.data.i2cp.HostLookupMessage;
+import net.i2p.data.i2cp.HostReplyMessage;
 import net.i2p.data.i2cp.I2CPMessage;
 import net.i2p.data.i2cp.I2CPMessageReader;
 import net.i2p.data.i2cp.MessagePayloadMessage;
 import net.i2p.data.i2cp.SessionId;
+import net.i2p.data.i2cp.SessionStatusMessage;
 import net.i2p.internal.I2CPMessageQueue;
 import net.i2p.internal.InternalClientManager;
 import net.i2p.internal.QueuedI2CPMessageReader;
@@ -79,7 +88,16 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
     /** this session's Id */
     private SessionId _sessionId;
     /** currently granted lease set, or null */
-    private volatile LeaseSet _leaseSet;
+    protected volatile LeaseSet _leaseSet;
+
+    // subsession stuff
+    // registered subsessions
+    private final List<SubSession> _subsessions;
+    // established subsessions
+    private final ConcurrentHashMap<SessionId, SubSession> _subsessionMap;
+    private final Object _subsessionLock = new Object();
+    private static final String MIN_SUBSESSION_VERSION = "0.9.21";
+    private volatile boolean _routerSupportsSubsessions;
 
     /** hostname of router - will be null if in RouterContext */
     protected final String _hostname;
@@ -119,7 +137,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
     protected final I2PAppContext _context;
 
     /** monitor for waiting until a lease set has been granted */
-    private final Object _leaseSetWait = new Object();
+    protected final Object _leaseSetWait = new Object();
 
     /**
      *  @since 0.9.8
@@ -186,10 +204,12 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                                     TEST_LOOKUP ||
                                      (routerVersion != null && routerVersion.length() > 0 &&
                                       VersionComparator.comp(routerVersion, MIN_HOST_LOOKUP_VERSION) >= 0);
+        _routerSupportsSubsessions = _context.isRouterContext() ||
+                                     (routerVersion != null && routerVersion.length() > 0 &&
+                                      VersionComparator.comp(routerVersion, MIN_SUBSESSION_VERSION) >= 0);
         synchronized (_stateLock) {
             if (_state == State.OPENING) {
-                _state = State.GOTDATE;
-                _stateLock.notifyAll();
+                changeState(State.GOTDATE);
             }
         }
     }
@@ -203,18 +223,42 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
      */
     protected I2PSessionImpl(I2PAppContext context, Properties options,
                              I2PClientMessageHandlerMap handlerMap) {
-        this(context, options, handlerMap, false);
+        this(context, options, handlerMap, null, false);
     }
-    
+
+    /*
+     * For extension by SubSession via I2PSessionMuxedImpl and I2PSessionImpl2
+     *
+     * @param destKeyStream stream containing the private key data,
+     *                             format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
+     * @param options set of options to configure the router with, if null will use System properties
+     * @since 0.9.21
+     */
+    protected I2PSessionImpl(I2PSessionImpl primary, InputStream destKeyStream, Properties options) throws I2PSessionException {
+        this(primary.getContext(), options, primary.getHandlerMap(), primary.getProducer(), true);
+        _availabilityNotifier = new AvailabilityNotifier();
+        try {
+            readDestination(destKeyStream);
+        } catch (DataFormatException dfe) {
+            throw new I2PSessionException("Error reading the destination key stream", dfe);
+        } catch (IOException ioe) {
+            throw new I2PSessionException("Error reading the destination key stream", ioe);
+        }
+    }
+
     /**
      * Basic setup of finals
      * @since 0.9.7
      */
     private I2PSessionImpl(I2PAppContext context, Properties options,
-                           I2PClientMessageHandlerMap handlerMap, boolean hasDest) {
+                           I2PClientMessageHandlerMap handlerMap,
+                           I2CPMessageProducer producer,
+                           boolean hasDest) {
         _context = context;
         _handlerMap = handlerMap;
         _log = context.logManager().getLog(getClass());
+        _subsessions = new CopyOnWriteArrayList<SubSession>();
+        _subsessionMap = new ConcurrentHashMap<SessionId, SubSession>(4);
         if (options == null)
             options = (Properties) System.getProperties().clone();
         _options = loadConfig(options);
@@ -222,7 +266,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
         _portNum = getPort();
         _fastReceive = Boolean.parseBoolean(_options.getProperty(I2PClient.PROP_FAST_RECEIVE));
         if (hasDest) {
-            _producer = new I2CPMessageProducer(context);
+            _producer = producer;
             _availableMessages = new ConcurrentHashMap<Long, MessagePayloadMessage>();
             _myDestination = new Destination();
             _privateKey = new PrivateKey();
@@ -236,6 +280,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
         }
         _routerSupportsFastReceive = _context.isRouterContext();
         _routerSupportsHostLookup = _context.isRouterContext();
+        _routerSupportsSubsessions = _context.isRouterContext();
     }
 
     /**
@@ -247,10 +292,10 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
      * @param destKeyStream stream containing the private key data,
      *                             format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
      * @param options set of options to configure the router with, if null will use System properties
-     * @throws I2PSessionException if there is a problem loading the private keys or 
+     * @throws I2PSessionException if there is a problem loading the private keys
      */
     public I2PSessionImpl(I2PAppContext context, InputStream destKeyStream, Properties options) throws I2PSessionException {
-        this(context, options, new I2PClientMessageHandlerMap(context), true);
+        this(context, options, new I2PClientMessageHandlerMap(context), new I2CPMessageProducer(context), true);
         _availabilityNotifier = new AvailabilityNotifier();
         try {
             readDestination(destKeyStream);
@@ -260,6 +305,69 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
             throw new I2PSessionException("Error reading the destination key stream", ioe);
         }
     }
+    
+    /**
+     *  Router must be connected or was connected... for now.
+     *
+     *  @return a new subsession, non-null
+     *  @param privateKeyStream null for transient, if non-null must have same encryption keys as primary session
+     *                          and different signing keys
+     *  @param opts subsession options if any, may be null
+     *  @since 0.9.21
+     */
+    public I2PSession addSubsession(InputStream privateKeyStream, Properties opts) throws I2PSessionException {
+        if (!_routerSupportsSubsessions)
+            throw new I2PSessionException("Router does not support subsessions");
+        SubSession sub;
+        synchronized(_subsessionLock) {
+            if (_subsessions.size() > _subsessionMap.size())
+                throw new I2PSessionException("Subsession request already pending");
+            sub = new SubSession(this, privateKeyStream, opts);
+            for (SubSession ss : _subsessions) {
+                 if (ss.getDecryptionKey().equals(sub.getDecryptionKey()) &&
+                     ss.getPrivateKey().equals(sub.getPrivateKey())) {
+                    throw new I2PSessionException("Dup subsession");
+                }
+            }
+            _subsessions.add(sub);
+        }
+
+        synchronized (_stateLock) {
+            if (_state == State.OPEN) {
+                _producer.connect(sub);
+            } // else will be called in connect()
+        }
+        return sub;
+    }
+    
+    /**
+     *  @since 0.9.21
+     */
+    public void removeSubsession(I2PSession session) {
+        if (!(session instanceof SubSession))
+            return;
+        synchronized(_subsessionLock) {
+            _subsessions.remove(session);
+            SessionId id = ((SubSession) session).getSessionId();
+            if (id != null)
+                _subsessionMap.remove(id);
+            /// tell the subsession
+            try {
+                // doesn't really throw
+                session.destroySession();
+            } catch (I2PSessionException ise) {}
+        }
+    }
+    
+    /**
+     *  @return a list of subsessions, non-null, does not include the primary session
+     *  @since 0.9.21
+     */
+    public List<I2PSession> getSubsessions() {
+        synchronized(_subsessionLock) {
+            return new ArrayList<I2PSession>(_subsessions);
+        }
+    }
 
     /**
      * Parse the config for anything we know about.
@@ -400,6 +508,8 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
     }
 
     protected void changeState(State state) {
+        if (_log.shouldInfo())
+            _log.info(getPrefix() + "Change state to " + state);
         synchronized (_stateLock) {
             _state = state;
             _stateLock.notifyAll();
@@ -493,6 +603,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                         try {
                             I2PSSLSocketFactory fact = new I2PSSLSocketFactory(_context, false, "certificates/i2cp");
                             _socket = fact.createSocket(_hostname, _portNum);
+                            _socket.setKeepAlive(true);
                         } catch (GeneralSecurityException gse) {
                             IOException ioe = new IOException("SSL Fail");
                             ioe.initCause(gse);
@@ -500,6 +611,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                         }
                     } else {
                         _socket = new Socket(_hostname, _portNum);
+                        _socket.setKeepAlive(true);
                     }
                     // _socket.setSoTimeout(1000000); // Uhmmm we could really-really use a real timeout, and handle it.
                     OutputStream out = _socket.getOutputStream();
@@ -522,7 +634,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                 auth.setProperty(PROP_USER, _options.getProperty(PROP_USER));
                 auth.setProperty(PROP_PW, _options.getProperty(PROP_PW));
             }
-            sendMessage(new GetDateMessage(CoreVersion.VERSION, auth));
+            sendMessage_unchecked(new GetDateMessage(CoreVersion.VERSION, auth));
             waitForDate();
 
             if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Before producer.connect()");
@@ -551,6 +663,16 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
             startIdleMonitor();
             startVerifyUsage();
             success = true;
+
+            // now send CreateSessionMessages for all subsessions, one at a time, must wait for each response
+            synchronized(_subsessionLock) {
+                for (SubSession ss : _subsessions) {
+                   if (_log.shouldLog(Log.INFO))
+                       _log.info(getPrefix() + "Connecting subsession " + ss);
+                    _producer.connect(ss);
+                }
+            }
+
         } catch (InterruptedException ie) {
             throw new I2PSessionException("Interrupted", ie);
         } catch (UnknownHostException uhe) {
@@ -614,14 +736,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
      * Report abuse with regards to the given messageId
      */
     public void reportAbuse(int msgId, int severity) throws I2PSessionException {
-        synchronized (_stateLock) {
-            if (_state == State.CLOSED)
-                throw new I2PSessionException("Already closed");
-            if (_state == State.INIT)
-                throw new I2PSessionException("Not open, must call connect() first");
-            if (_state == State.OPENING) // not before GOTDATE
-                throw new I2PSessionException("Session not open yet");
-        }
+        verifyOpen();
         _producer.reportAbuse(this, msgId, severity);
     }
 
@@ -761,19 +876,83 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
     /**
      * The I2CPMessageEventListener callback.
      * Recieve notification of some I2CP message and handle it if possible.
+     *
+     * We route the message based on message type AND session ID.
+     *
+     * The following types never contain a session ID and are not routable to
+     * a subsession:
+     *     BandwidthLimitsMessage, DestReplyMessage
+     *
+     * The following types may not contain a valid session ID
+     * even when intended for a subsession, so we must take special care:
+     *     SessionStatusMessage
+     *
      * @param reader unused
      */
     public void messageReceived(I2CPMessageReader reader, I2CPMessage message) {
-        I2CPMessageHandler handler = _handlerMap.getHandler(message.getType());
-        if (handler == null) {
-            if (_log.shouldLog(Log.WARN))
-                _log.warn(getPrefix() + "Unknown message or unhandleable message received: type = "
-                          + message.getType());
+        int type = message.getType();
+        SessionId id = message.sessionId();
+        SessionId currId = _sessionId;
+        if (id == null || id.equals(currId) ||
+            (currId == null && id != null && type == SessionStatusMessage.MESSAGE_TYPE) ||
+            ((id == null || id.getSessionId() == 65535) &&
+             (type == HostReplyMessage.MESSAGE_TYPE || type == DestReplyMessage.MESSAGE_TYPE))) {
+            // it's for us
+            I2CPMessageHandler handler = _handlerMap.getHandler(type);
+            if (handler != null) {
+                if (_log.shouldLog(Log.DEBUG))
+                    _log.debug(getPrefix() + "Message received of type " + type
+                               + " to be handled by " + handler.getClass().getSimpleName());
+                handler.handleMessage(message, this);
+            } else {
+                if (_log.shouldLog(Log.WARN))
+                    _log.warn(getPrefix() + "Unknown message or unhandleable message received: type = "
+                              + type);
+            }
         } else {
-            if (_log.shouldLog(Log.DEBUG))
-                _log.debug(getPrefix() + "Message received of type " + message.getType()
-                           + " to be handled by " + handler.getClass().getSimpleName());
-            handler.handleMessage(message, this);
+            SubSession sub = _subsessionMap.get(id);
+            if (sub != null) {
+                // it's for a subsession
+                if (_log.shouldLog(Log.DEBUG))
+                    _log.debug(getPrefix() + "Message received of type " + type
+                               + " to be handled by " + sub);
+                sub.messageReceived(reader, message);
+            } else if (id != null && type == SessionStatusMessage.MESSAGE_TYPE) {
+                // look for a subsession without a session
+                synchronized (_subsessionLock) {
+                    for (SubSession sess : _subsessions) {
+                        if (sess.getSessionId() == null) {
+                            sess.messageReceived(reader, message);
+                            id = sess.getSessionId();
+                            if (id != null) {
+                                if (id.equals(_sessionId)) {
+                                    // shouldnt happen
+                                    sess.setSessionId(null);
+                                    if (_log.shouldLog(Log.WARN))
+                                        _log.warn("Dup or our session id " + id);
+                                } else {
+                                    SubSession old = _subsessionMap.putIfAbsent(id, sess);
+                                    if (old != null) {
+                                        // shouldnt happen
+                                        sess.setSessionId(null);
+                                        if (_log.shouldLog(Log.WARN))
+                                            _log.warn("Dup session id " + id);
+                                    }
+                                }
+                            }
+                            return;
+                        }
+                        if (_log.shouldLog(Log.WARN))
+                            _log.warn(getPrefix() + "No session " + id + " to handle message: type = "
+                                      + type);
+                    }
+                }
+            } else {
+                // it's for nobody
+                if (_log.shouldLog(Log.WARN))
+                    _log.warn(getPrefix() + "No session " + id + " to handle message: type = "
+                              + type);
+            }
         }
     }
 
@@ -808,6 +987,18 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
      */
     I2CPMessageProducer getProducer() { return _producer; }
 
+    /**
+     *  For Subsessions
+     *  @since 0.9.21
+     */
+    I2PClientMessageHandlerMap getHandlerMap() { return _handlerMap; }
+
+    /**
+     *  For Subsessions
+     *  @since 0.9.21
+     */
+    I2PAppContext getContext() { return _context; }
+
     /**
      * Retrieve the configuration options, filtered.
      * All defaults passed in via constructor have been promoted to the primary map.
@@ -835,6 +1026,39 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
         }
     }
 
+    /**
+     *  Throws I2PSessionException if uninitialized, closed or closing.
+     *  Blocks if opening.
+     *
+     *  @since 0.9.23
+     */
+    protected void verifyOpen() throws I2PSessionException {
+        synchronized (_stateLock) {
+            while (true) {
+                switch (_state) {
+                    case INIT:
+                        throw new I2PSessionException("Not open, must call connect() first");
+
+                    case OPENING:  // fall thru
+                    case GOTDATE:
+                        try {
+                            _stateLock.wait(5*1000);
+                            continue;
+                        } catch (InterruptedException ie) {
+                            throw new I2PSessionException("Interrupted", ie);
+                        }
+
+                    case OPEN:
+                        return;
+
+                    case CLOSING:  // fall thru
+                    case CLOSED:
+                        throw new I2PSessionException("Already closed");
+                }
+            }
+        }
+    }
+
     /**
      * Deliver an I2CP message to the router
      * As of 0.9.3, may block for several seconds if the write queue to the router is full
@@ -842,12 +1066,19 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
      * @throws I2PSessionException if the message is malformed or there is an error writing it out
      */
     void sendMessage(I2CPMessage message) throws I2PSessionException {
-        synchronized (_stateLock) {
-            if (_state == State.CLOSED)
-                throw new I2PSessionException("Already closed");
-            if (_state == State.INIT)
-                throw new I2PSessionException("Not open, must call connect() first");
-        }
+        verifyOpen();
+        sendMessage_unchecked(message);
+    }
+
+    /**
+     * Deliver an I2CP message to the router.
+     * Does NOT check state. Call only from connect() or other methods that need to
+     * send messages when not in OPEN state.
+     *
+     * @throws I2PSessionException if the message is malformed or there is an error writing it out
+     * @since 0.9.23
+     */
+    void sendMessage_unchecked(I2CPMessage message) throws I2PSessionException {
         if (_queue != null) {
             // internal
             try {
@@ -856,11 +1087,13 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
             } catch (InterruptedException ie) {
                 throw new I2PSessionException("Interrupted", ie);
             }
-        } else if (_writer == null) {
-            // race here
-            throw new I2PSessionException("Already closed or not open");
         } else {
-            _writer.addMessage(message);
+            ClientWriterRunner writer = _writer;
+            if (writer == null) {
+                throw new I2PSessionException("Already closed or not open");
+            } else {
+                writer.addMessage(message);
+            }
         }
     }
 
@@ -921,6 +1154,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
         if (_availabilityNotifier != null)
             _availabilityNotifier.stopNotifying();
         closeSocket();
+        _subsessionMap.clear();
         if (_sessionListener != null) _sessionListener.disconnected(this);
     }
 
@@ -935,6 +1169,13 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
             locked_closeSocket();
             changeState(State.CLOSED);
         }
+        synchronized (_subsessionLock) {
+            for (SubSession sess : _subsessions) {
+                sess.changeState(State.CLOSED);
+                sess.setSessionId(null);
+                sess.setLeaseSet(null);
+            }
+        }
     }
 
     /**
@@ -964,6 +1205,8 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                 _socket = null; // so when propogateError calls closeSocket, it doesnt loop
             }
         }
+        setSessionId(null);
+        setLeaseSet(null);
     }
 
     /**
@@ -1045,13 +1288,15 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
     protected String getPrefix() {
         StringBuilder buf = new StringBuilder();
         buf.append('[');
+        buf.append(_state.toString()).append(' ');
         String s = _options.getProperty("inbound.nickname");
         if (s != null)
             buf.append(s);
         else
             buf.append(getClass().getSimpleName());
-        if (_sessionId != null)
-            buf.append(" #").append(_sessionId.getSessionId());
+        SessionId id = _sessionId;
+        if (id != null)
+            buf.append(" #").append(id.getSessionId());
         buf.append("]: ");
         return buf.toString();
     }
@@ -1230,11 +1475,11 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                 SessionId id = _sessionId;
                 if (id == null)
                     id = new SessionId(65535);
-                sendMessage(new HostLookupMessage(id, h, nonce, maxWait));
+                sendMessage_unchecked(new HostLookupMessage(id, h, nonce, maxWait));
             } else {
                 if (_log.shouldLog(Log.INFO))
                     _log.info("Sending DestLookup for " + h);
-                sendMessage(new DestLookupMessage(h));
+                sendMessage_unchecked(new DestLookupMessage(h));
             }
             try {
                 synchronized (waiter) {
@@ -1322,7 +1567,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
             SessionId id = _sessionId;
             if (id == null)
                 id = new SessionId(65535);
-            sendMessage(new HostLookupMessage(id, name, nonce, maxWait));
+            sendMessage_unchecked(new HostLookupMessage(id, name, nonce, maxWait));
             try {
                 synchronized (waiter) {
                     waiter.wait(maxWait);
@@ -1356,7 +1601,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
                 return null;
             }
         }
-        sendMessage(new GetBandwidthLimitsMessage());
+        sendMessage_unchecked(new GetBandwidthLimitsMessage());
         try {
             synchronized (_bwReceivedLock) {
                 _bwReceivedLock.wait(5*1000);
diff --git a/core/java/src/net/i2p/client/I2PSessionImpl2.java b/core/java/src/net/i2p/client/impl/I2PSessionImpl2.java
similarity index 88%
rename from core/java/src/net/i2p/client/I2PSessionImpl2.java
rename to core/java/src/net/i2p/client/impl/I2PSessionImpl2.java
index d58f5b5f140cd9e272fae82f4edd78333fc56dc3..0cf397d796b4224392bcf19d7175e8e005ea60be 100644
--- a/core/java/src/net/i2p/client/I2PSessionImpl2.java
+++ b/core/java/src/net/i2p/client/impl/I2PSessionImpl2.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -20,9 +20,16 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PClient;
+import net.i2p.client.I2PSessionException;
+import net.i2p.client.I2PSessionListener;
+import net.i2p.client.I2PSessionMuxedListener;
+import net.i2p.client.SendMessageOptions;
+import net.i2p.client.SendMessageStatusListener;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.data.SessionKey;
+import net.i2p.data.SessionTag;
 import net.i2p.data.i2cp.MessageId;
 import net.i2p.data.i2cp.MessageStatusMessage;
 import net.i2p.util.Log;
@@ -50,9 +57,9 @@ class I2PSessionImpl2 extends I2PSessionImpl {
 
     private static final long REMOVE_EXPIRED_TIME = 63*1000;
 
-     /**
-      * for extension by SimpleSession (no dest)
-      */
+    /**
+     * for extension by SimpleSession (no dest)
+     */
     protected I2PSessionImpl2(I2PAppContext context, Properties options,
                               I2PClientMessageHandlerMap handlerMap) {
         super(context, options, handlerMap);
@@ -61,15 +68,17 @@ class I2PSessionImpl2 extends I2PSessionImpl {
     }
 
     /**
+     * for extension by I2PSessionMuxedImpl
+     *
      * Create a new session, reading the Destination, PrivateKey, and SigningPrivateKey
      * from the destKeyStream, and using the specified options to connect to the router
      *
      * @param destKeyStream stream containing the private key data,
      *                             format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
      * @param options set of options to configure the router with, if null will use System properties
-     * @throws I2PSessionException if there is a problem loading the private keys or 
+     * @throws I2PSessionException if there is a problem loading the private keys
      */
-    public I2PSessionImpl2(I2PAppContext ctx, InputStream destKeyStream, Properties options) throws I2PSessionException {
+    protected I2PSessionImpl2(I2PAppContext ctx, InputStream destKeyStream, Properties options) throws I2PSessionException {
         super(ctx, destKeyStream, options);
         _sendingStates = new ConcurrentHashMap<Long, MessageState>(32);
         _sendMessageNonce = new AtomicLong();
@@ -94,6 +103,26 @@ class I2PSessionImpl2 extends I2PSessionImpl {
         _context.statManager().createRateStat("i2cp.tx.msgExpanded", "size before compression", "i2cp", new long[] { 30*60*1000 });
     }
 
+    /*
+     * For extension by SubSession via I2PSessionMuxedImpl
+     *
+     * @param destKeyStream stream containing the private key data,
+     *                             format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
+     * @param options set of options to configure the router with, if null will use System properties
+     * @since 0.9.21
+     */
+    protected I2PSessionImpl2(I2PSessionImpl primary, InputStream destKeyStream, Properties options) throws I2PSessionException {
+        super(primary, destKeyStream, options);
+        _sendingStates = new ConcurrentHashMap<Long, MessageState>(32);
+        _sendMessageNonce = new AtomicLong();
+        _noEffort = "none".equals(getOptions().getProperty(I2PClient.PROP_RELIABILITY, "").toLowerCase(Locale.US));
+        _context.statManager().createRateStat("i2cp.receiveStatusTime.1", "How long it took to get status=1 back", "i2cp", new long[] { 10*60*1000 });
+        _context.statManager().createRateStat("i2cp.receiveStatusTime.4", "How long it took to get status=4 back", "i2cp", new long[] { 10*60*1000 });
+        _context.statManager().createRateStat("i2cp.receiveStatusTime.5", "How long it took to get status=5 back", "i2cp", new long[] { 10*60*1000 });
+        _context.statManager().createRateStat("i2cp.tx.msgCompressed", "compressed size transferred", "i2cp", new long[] { 30*60*1000 });
+        _context.statManager().createRateStat("i2cp.tx.msgExpanded", "size before compression", "i2cp", new long[] { 30*60*1000 });
+    }
+
     /**
      *  Fire up a periodic task to check for unclaimed messages
      *  @since 0.9.14
@@ -182,17 +211,17 @@ class I2PSessionImpl2 extends I2PSessionImpl {
         throw new UnsupportedOperationException("Use MuxedImpl");
     }
     /** @throws UnsupportedOperationException always, use MuxedImpl */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent,
                                int proto, int fromport, int toport) throws I2PSessionException {
         throw new UnsupportedOperationException("Use MuxedImpl");
     }
     /** @throws UnsupportedOperationException always, use MuxedImpl */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire,
                                int proto, int fromport, int toport) throws I2PSessionException {
         throw new UnsupportedOperationException("Use MuxedImpl");
     }
     /** @throws UnsupportedOperationException always, use MuxedImpl */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expire,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expire,
                                int proto, int fromport, int toport, int flags) throws I2PSessionException {
         throw new UnsupportedOperationException("Use MuxedImpl");
     }
@@ -225,7 +254,7 @@ class I2PSessionImpl2 extends I2PSessionImpl {
      * @param tagsSent unused - no end-to-end crypto
      */
     @Override
-    public boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set tagsSent) throws I2PSessionException {
+    public boolean sendMessage(Destination dest, byte[] payload, SessionKey keyUsed, Set<SessionTag> tagsSent) throws I2PSessionException {
         return sendMessage(dest, payload, 0, payload.length, keyUsed, tagsSent, 0);
     }
 
@@ -233,7 +262,7 @@ class I2PSessionImpl2 extends I2PSessionImpl {
      * @param keyUsed unused - no end-to-end crypto
      * @param tagsSent unused - no end-to-end crypto
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent)
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent)
                    throws I2PSessionException {
         return sendMessage(dest, payload, offset, size, keyUsed, tagsSent, 0);
     }
@@ -244,17 +273,10 @@ class I2PSessionImpl2 extends I2PSessionImpl {
      * @param keyUsed unused - no end-to-end crypto
      * @param tagsSent unused - no end-to-end crypto
      */
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent, long expires)
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent, long expires)
                    throws I2PSessionException {
         if (_log.shouldLog(Log.DEBUG)) _log.debug("sending message");
-        synchronized (_stateLock) {
-            if (_state == State.CLOSED)
-                throw new I2PSessionException("Already closed");
-            if (_state == State.INIT)
-                throw new I2PSessionException("Not open, must call connect() first");
-            if (_state == State.OPENING || _state == State.GOTDATE) // not before GOTDATE or session
-                throw new I2PSessionException("Session not open yet");
-        }
+        verifyOpen();
         updateActivity();
 
         // Sadly there is no way to send something completely uncompressed in a backward-compatible way,
@@ -311,7 +333,7 @@ class I2PSessionImpl2 extends I2PSessionImpl {
      * @param keyUsed unused - no end-to-end crypto
      * @param tagsSent unused - no end-to-end crypto
      */
-    protected boolean sendBestEffort(Destination dest, byte payload[], SessionKey keyUsed, Set tagsSent, long expires)
+    protected boolean sendBestEffort(Destination dest, byte payload[], SessionKey keyUsed, Set<SessionTag> tagsSent, long expires)
                     throws I2PSessionException {
         return sendBestEffort(dest, payload, expires, 0);
     }
diff --git a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java b/core/java/src/net/i2p/client/impl/I2PSessionMuxedImpl.java
similarity index 87%
rename from core/java/src/net/i2p/client/I2PSessionMuxedImpl.java
rename to core/java/src/net/i2p/client/impl/I2PSessionMuxedImpl.java
index 94eb6ae451459382f9d5d29792560e45c61282df..07003ae2d2aba35f616182bd26eb3996b78cd1a7 100644
--- a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java
+++ b/core/java/src/net/i2p/client/impl/I2PSessionMuxedImpl.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * public domain
@@ -8,12 +8,18 @@ import java.io.InputStream;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.Properties;
 import java.util.Set;
-
 import java.util.concurrent.atomic.AtomicBoolean;
+
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
+import net.i2p.client.I2PSessionListener;
+import net.i2p.client.I2PSessionMuxedListener;
+import net.i2p.client.SendMessageOptions;
+import net.i2p.client.SendMessageStatusListener;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.data.SessionKey;
+import net.i2p.data.SessionTag;
 import net.i2p.data.i2cp.MessagePayloadMessage;
 import net.i2p.util.Log;
 
@@ -82,6 +88,24 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
         // discards the one in super(), sorry about that... (no it wasn't started yet)
         _availabilityNotifier = new MuxedAvailabilityNotifier();
     }
+
+    /*
+     * For extension by SubSession
+     *
+     * @param destKeyStream stream containing the private key data,
+     *                             format is specified in {@link net.i2p.data.PrivateKeyFile PrivateKeyFile}
+     * @param options set of options to configure the router with, if null will use System properties
+     * @since 0.9.21
+     */
+    protected I2PSessionMuxedImpl(I2PSessionImpl primary, InputStream destKeyStream, Properties options) throws I2PSessionException {
+        super(primary, destKeyStream, options);
+        // also stored in _sessionListener but we keep it in _demultipexer
+        // as well so we don't have to keep casting
+        _demultiplexer =  new I2PSessionDemultiplexer(primary.getContext());
+        super.setSessionListener(_demultiplexer);
+        // discards the one in super(), sorry about that... (no it wasn't started yet)
+        _availabilityNotifier = new MuxedAvailabilityNotifier();
+    }
     
     /** listen on all protocols and ports */
     @Override
@@ -140,7 +164,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
      */
     @Override
     public boolean sendMessage(Destination dest, byte[] payload, int offset, int size,
-                               SessionKey keyUsed, Set tagsSent, long expires)
+                               SessionKey keyUsed, Set<SessionTag> tagsSent, long expires)
                    throws I2PSessionException {
         return sendMessage(dest, payload, offset, size, keyUsed, tagsSent, 0, PROTO_UNSPECIFIED, PORT_UNSPECIFIED, PORT_UNSPECIFIED);
     }
@@ -150,7 +174,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
      * @param tagsSent unused - no end-to-end crypto
      */
     @Override
-    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set tagsSent,
+    public boolean sendMessage(Destination dest, byte[] payload, int offset, int size, SessionKey keyUsed, Set<SessionTag> tagsSent,
                                int proto, int fromport, int toport) throws I2PSessionException {
         return sendMessage(dest, payload, offset, size, keyUsed, tagsSent, 0, proto, fromport, toport);
     }
@@ -169,7 +193,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
      */
     @Override
     public boolean sendMessage(Destination dest, byte[] payload, int offset, int size,
-                               SessionKey keyUsed, Set tagsSent, long expires,
+                               SessionKey keyUsed, Set<SessionTag> tagsSent, long expires,
                                int proto, int fromPort, int toPort)
                    throws I2PSessionException {
         return sendMessage(dest, payload, offset, size, keyUsed, tagsSent, 0, proto, fromPort, toPort, 0);
@@ -190,7 +214,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
      */
     @Override
     public boolean sendMessage(Destination dest, byte[] payload, int offset, int size,
-                               SessionKey keyUsed, Set tagsSent, long expires,
+                               SessionKey keyUsed, Set<SessionTag> tagsSent, long expires,
                                int proto, int fromPort, int toPort, int flags)
                    throws I2PSessionException {
         payload = prepPayload(payload, offset, size, proto, fromPort, toPort);
@@ -256,14 +280,7 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
      * @since 0.9.14
      */
     private byte[] prepPayload(byte[] payload, int offset, int size, int proto, int fromPort, int toPort) throws I2PSessionException {
-        synchronized (_stateLock) {
-            if (_state == State.CLOSED)
-                throw new I2PSessionException("Already closed");
-            if (_state == State.INIT)
-                throw new I2PSessionException("Not open, must call connect() first");
-            if (_state == State.OPENING || _state == State.GOTDATE) // not before GOTDATE or session
-                throw new I2PSessionException("Session not open yet");
-        }
+        verifyOpen();
         updateActivity();
 
         if (shouldCompress(size))
@@ -315,9 +332,9 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
 
     protected class MuxedAvailabilityNotifier extends AvailabilityNotifier {
         private final LinkedBlockingQueue<MsgData> _msgs;
-        private volatile boolean _alive = false;
+        private volatile boolean _alive;
         private static final int POISON_SIZE = -99999;
-        private final AtomicBoolean stopping = new AtomicBoolean(false);
+        private final AtomicBoolean stopping = new AtomicBoolean();
 
         public MuxedAvailabilityNotifier() {
             _msgs = new LinkedBlockingQueue<MsgData>();
@@ -325,12 +342,12 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
 
         @Override
         public void stopNotifying() {
-            boolean again = true;
             synchronized (stopping) {
                 if( !stopping.getAndSet(true)) {
-                    if (_alive == true) {
+                    _msgs.clear();
+                    if (_alive) {
                         // System.out.println("I2PSessionMuxedImpl.stopNotifying()");
-                        _msgs.clear();
+                        boolean again = true;
                         while(again) {
                             try {
                                 _msgs.put(new MsgData(0, POISON_SIZE, 0, 0, 0));
@@ -340,8 +357,8 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
                                 continue;
                             }
                         }
+                        _alive = false;
                     }
-                    _alive = false;
                     stopping.set(false);
                 }
                 // stopping.notifyAll();
@@ -355,17 +372,24 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 {
             try {
                 _msgs.put(new MsgData((int)(msgId & 0xffffffff), size, proto, fromPort, toPort));
             } catch (InterruptedException ie) {}
+            if (!_alive && _log.shouldLog(Log.WARN))
+                _log.warn(getPrefix() + "message available but notifier not running");
         }
 
         @Override
         public void run() {
-            MsgData msg;
+            if (_log.shouldLog(Log.DEBUG))
+                _log.debug(getPrefix() + "starting muxed availability notifier");
+            _msgs.clear();
             _alive=true;
             while (_alive) {
+                MsgData msg;
                 try {
                     msg = _msgs.take();
                 } catch (InterruptedException ie) {
-                    _log.debug("I2PSessionMuxedImpl.run() InterruptedException " + String.valueOf(_msgs.size()) + " Messages, Alive " + _alive);
+                    if (_log.shouldLog(Log.DEBUG))
+                        _log.debug("I2PSessionMuxedImpl.run() InterruptedException " +
+                                    String.valueOf(_msgs.size()) + " Messages, Alive " + _alive);
                     continue;
                 }
                 if (msg.size == POISON_SIZE) {
diff --git a/core/java/src/net/i2p/client/I2PSimpleSession.java b/core/java/src/net/i2p/client/impl/I2PSimpleSession.java
similarity index 95%
rename from core/java/src/net/i2p/client/I2PSimpleSession.java
rename to core/java/src/net/i2p/client/impl/I2PSimpleSession.java
index b6f8bb7eb40998cbc2a383063d304c71de63bd5d..010121b1c83c3d5e610f85b220b502c36f86660e 100644
--- a/core/java/src/net/i2p/client/I2PSimpleSession.java
+++ b/core/java/src/net/i2p/client/impl/I2PSimpleSession.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * Released into the public domain 
@@ -16,6 +16,8 @@ import java.util.Properties;
 
 import net.i2p.CoreVersion;
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PClient;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.i2cp.BandwidthLimitsMessage;
 import net.i2p.data.i2cp.DestReplyMessage;
 import net.i2p.data.i2cp.DisconnectMessage;
@@ -37,7 +39,7 @@ import net.i2p.util.OrderedProperties;
  *
  * @author zzz
  */
-class I2PSimpleSession extends I2PSessionImpl2 {
+public class I2PSimpleSession extends I2PSessionImpl2 {
 
     private static final int BUF_SIZE = 1024;
 
@@ -89,6 +91,7 @@ class I2PSimpleSession extends I2PSessionImpl2 {
                     } else {
                         _socket = new Socket(_hostname, _portNum);
                     }
+                    _socket.setKeepAlive(true);
                     OutputStream out = _socket.getOutputStream();
                     out.write(I2PClient.PROTOCOL_BYTE);
                     out.flush();
@@ -119,11 +122,11 @@ class I2PSimpleSession extends I2PSessionImpl2 {
                     Properties auth = new OrderedProperties();
                     auth.setProperty(PROP_USER, opts.getProperty(PROP_USER));
                     auth.setProperty(PROP_PW, opts.getProperty(PROP_PW));
-                    sendMessage(new GetDateMessage(CoreVersion.VERSION, auth));
+                    sendMessage_unchecked(new GetDateMessage(CoreVersion.VERSION, auth));
                 } else {
                     // we must now send a GetDate even in SimpleSession, or we won't know
                     // what version we are talking with and cannot use HostLookup
-                    sendMessage(new GetDateMessage(CoreVersion.VERSION));
+                    sendMessage_unchecked(new GetDateMessage(CoreVersion.VERSION));
                 }
                 waitForDate();
             }
diff --git a/core/java/src/net/i2p/client/MessagePayloadMessageHandler.java b/core/java/src/net/i2p/client/impl/MessagePayloadMessageHandler.java
similarity index 95%
rename from core/java/src/net/i2p/client/MessagePayloadMessageHandler.java
rename to core/java/src/net/i2p/client/impl/MessagePayloadMessageHandler.java
index 49cc2c45bfb74c370f260c1c7beb4aa5aac028a7..47beb2101e48ed201eeba354a5a7df7c1770712c 100644
--- a/core/java/src/net/i2p/client/MessagePayloadMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/MessagePayloadMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -10,6 +10,7 @@ package net.i2p.client;
  */
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.Payload;
 import net.i2p.data.i2cp.I2CPMessage;
@@ -33,7 +34,7 @@ class MessagePayloadMessageHandler extends HandlerImpl {
     
     public void handleMessage(I2CPMessage message, I2PSessionImpl session) {
         if (_log.shouldLog(Log.DEBUG))
-            _log.debug("Handle message " + message);
+            _log.debug("Handle message " + message + " for session " + session);
         try {
             MessagePayloadMessage msg = (MessagePayloadMessage) message;
             long id = msg.getMessageId();
diff --git a/core/java/src/net/i2p/client/MessageState.java b/core/java/src/net/i2p/client/impl/MessageState.java
similarity index 98%
rename from core/java/src/net/i2p/client/MessageState.java
rename to core/java/src/net/i2p/client/impl/MessageState.java
index e56eb9a8a324d9a0167447ad36073f26b62484e0..267a9cb19e98329382487a10b1bf4c03ad995755 100644
--- a/core/java/src/net/i2p/client/MessageState.java
+++ b/core/java/src/net/i2p/client/impl/MessageState.java
@@ -1,8 +1,10 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 import java.util.concurrent.atomic.AtomicLong;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSession;
+import net.i2p.client.SendMessageStatusListener;
 import net.i2p.data.i2cp.MessageId;
 import net.i2p.data.i2cp.MessageStatusMessage;
 import net.i2p.util.Log;
diff --git a/core/java/src/net/i2p/client/MessageStatusMessageHandler.java b/core/java/src/net/i2p/client/impl/MessageStatusMessageHandler.java
similarity index 97%
rename from core/java/src/net/i2p/client/MessageStatusMessageHandler.java
rename to core/java/src/net/i2p/client/impl/MessageStatusMessageHandler.java
index f967ad9568bdc3d8816e4b0d5fdece61b6730a86..4654eafa385e65a767e80d7a887bf3fdefd0befe 100644
--- a/core/java/src/net/i2p/client/MessageStatusMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/MessageStatusMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -10,6 +10,7 @@ package net.i2p.client;
  */
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.i2cp.I2CPMessage;
 import net.i2p.data.i2cp.MessageStatusMessage;
 import net.i2p.data.i2cp.ReceiveMessageBeginMessage;
diff --git a/core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
similarity index 80%
rename from core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java
rename to core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
index e6e9965a8247941f6bcdb19c1c410dca288f5b7b..09dab72ff429486a5456a615a47c64ce3ff58354 100644
--- a/core/java/src/net/i2p/client/RequestLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -14,6 +14,7 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.crypto.KeyGenerator;
 import net.i2p.crypto.SigType;
 import net.i2p.data.DataFormatException;
@@ -88,9 +89,8 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
             String sspk = session.getOptions().getProperty("i2cp.leaseSetSigningPrivateKey");
             PrivateKey privKey = null;
             SigningPrivateKey signingPrivKey = null;
-            boolean useOldKeys;
             if (spk != null && sspk != null) {
-                useOldKeys = true;
+                boolean useOldKeys = true;
                 int colon = sspk.indexOf(':');
                 SigType type = dest.getSigType();
                 if (colon > 0) {
@@ -111,6 +111,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
                         signingPrivKey.fromBase64(sspk);
                     } catch (DataFormatException iae) {
                         useOldKeys = false;
+                        signingPrivKey = null;
                     }
                 }
                 if (useOldKeys) {
@@ -118,20 +119,36 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
                         privKey = new PrivateKey();
                         privKey.fromBase64(spk);
                     } catch (DataFormatException iae) {
-                        useOldKeys = false;
+                        privKey = null;
                     }
                 }
-            } else {
-                useOldKeys = false;
             }
-            if (useOldKeys)
-                li = new LeaseInfo(privKey, signingPrivKey);
-            else
+            if (privKey == null && !_existingLeaseSets.isEmpty()) {
+                // look for keypair from another dest using same pubkey
+                PublicKey pk = dest.getPublicKey();
+                for (Map.Entry<Destination, LeaseInfo> e : _existingLeaseSets.entrySet()) {
+                    if (pk.equals(e.getKey().getPublicKey())) {
+                        privKey = e.getValue().getPrivateKey();
+                        if (_log.shouldLog(Log.DEBUG))
+                            _log.debug("Creating new leaseInfo keys for " + dest + " with private key from " + e.getKey());
+                        break;
+                    }
+                }
+            }
+            if (privKey != null) {
+                if (signingPrivKey != null) {
+                    li = new LeaseInfo(privKey, signingPrivKey);
+                    if (_log.shouldLog(Log.DEBUG))
+                        _log.debug("Creating new leaseInfo keys for " + dest + " WITH configured private keys");
+                } else {
+                    li = new LeaseInfo(privKey, dest);
+                }
+            } else {
                 li = new LeaseInfo(dest);
+                if (_log.shouldLog(Log.DEBUG))
+                    _log.debug("Creating new leaseInfo keys for " + dest + " without configured private keys");
+            }
             _existingLeaseSets.put(dest, li);
-            if (_log.shouldLog(Log.DEBUG))
-                _log.debug("Creating new leaseInfo keys for "  
-                           + dest + " using configured private keys? " + useOldKeys);
         } else {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Caching the old leaseInfo keys for " 
@@ -178,6 +195,9 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
         private final SigningPublicKey _signingPubKey;
         private final SigningPrivateKey _signingPrivKey;
 
+        /**
+         *  New keys
+         */
         public LeaseInfo(Destination dest) {
             SimpleDataStructure encKeys[] = KeyGenerator.getInstance().generatePKIKeys();
             // must be same type as the Destination's signing key
@@ -194,6 +214,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
         }
 
         /**
+         *  Existing keys
          *  @since 0.9.18
          */
         public LeaseInfo(PrivateKey privKey, SigningPrivateKey signingPrivKey) {
@@ -203,6 +224,23 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
             _signingPrivKey = signingPrivKey;
         }
 
+        /**
+         *  Existing crypto key, new signing key
+         *  @since 0.9.21
+         */
+        public LeaseInfo(PrivateKey privKey, Destination dest) {
+            SimpleDataStructure signKeys[];
+            try {
+                signKeys = KeyGenerator.getInstance().generateSigningKeys(dest.getSigningPublicKey().getType());
+            } catch (GeneralSecurityException gse) {
+                throw new IllegalStateException(gse);
+            }
+            _pubKey = KeyGenerator.getPublicKey(privKey);
+            _privKey = privKey;
+            _signingPubKey = (SigningPublicKey) signKeys[0];
+            _signingPrivKey = (SigningPrivateKey) signKeys[1];
+        }
+
         public PublicKey getPublicKey() {
             return _pubKey;
         }
diff --git a/core/java/src/net/i2p/client/RequestVariableLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
similarity index 97%
rename from core/java/src/net/i2p/client/RequestVariableLeaseSetMessageHandler.java
rename to core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
index 6ba03d8f69a1640a4e6e232db61d21142dbe947e..41cc9eb9319714061dc3a469faf5140d170bd48e 100644
--- a/core/java/src/net/i2p/client/RequestVariableLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
diff --git a/core/java/src/net/i2p/client/SessionIdleTimer.java b/core/java/src/net/i2p/client/impl/SessionIdleTimer.java
similarity index 98%
rename from core/java/src/net/i2p/client/SessionIdleTimer.java
rename to core/java/src/net/i2p/client/impl/SessionIdleTimer.java
index 444f73167fffac2818e6bfc4e1c943a29242990d..5b4fa513e1b72f9774fa1f86e84c3016cdcec69d 100644
--- a/core/java/src/net/i2p/client/SessionIdleTimer.java
+++ b/core/java/src/net/i2p/client/impl/SessionIdleTimer.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -8,6 +8,7 @@ package net.i2p.client;
 import java.util.Properties;
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.DataHelper;
 import net.i2p.util.Log;
 import net.i2p.util.SimpleTimer;
diff --git a/core/java/src/net/i2p/client/SessionStatusMessageHandler.java b/core/java/src/net/i2p/client/impl/SessionStatusMessageHandler.java
similarity index 96%
rename from core/java/src/net/i2p/client/SessionStatusMessageHandler.java
rename to core/java/src/net/i2p/client/impl/SessionStatusMessageHandler.java
index 92bd7db82a8a8c43d0ac3fa9e077c1dc064b4d49..ec0b0d67411cf25666c420d9c23cc230906bb475 100644
--- a/core/java/src/net/i2p/client/SessionStatusMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/SessionStatusMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
@@ -10,6 +10,7 @@ package net.i2p.client;
  */
 
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSessionException;
 import net.i2p.data.i2cp.I2CPMessage;
 import net.i2p.data.i2cp.SessionStatusMessage;
 import net.i2p.util.Log;
diff --git a/core/java/src/net/i2p/client/SetDateMessageHandler.java b/core/java/src/net/i2p/client/impl/SetDateMessageHandler.java
similarity index 97%
rename from core/java/src/net/i2p/client/SetDateMessageHandler.java
rename to core/java/src/net/i2p/client/impl/SetDateMessageHandler.java
index 68adb2d60e5d6cfec93f5de42584ea25314276ca..723bb7e2fea58116ad081da6926cc6795b96ef46 100644
--- a/core/java/src/net/i2p/client/SetDateMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/SetDateMessageHandler.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 
 /*
  * free (adj.): unencumbered; not under the control of others
diff --git a/core/java/src/net/i2p/client/impl/SubSession.java b/core/java/src/net/i2p/client/impl/SubSession.java
new file mode 100644
index 0000000000000000000000000000000000000000..93a115bff2851c08ae19151761c1b36bba4f9d35
--- /dev/null
+++ b/core/java/src/net/i2p/client/impl/SubSession.java
@@ -0,0 +1,347 @@
+package net.i2p.client.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import net.i2p.I2PAppContext;
+import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
+import net.i2p.data.Destination;
+import net.i2p.data.Hash;
+import net.i2p.data.PrivateKey;
+import net.i2p.data.SigningPrivateKey;
+import net.i2p.data.i2cp.CreateLeaseSetMessage;
+import net.i2p.data.i2cp.CreateSessionMessage;
+import net.i2p.data.i2cp.I2CPMessage;
+import net.i2p.data.i2cp.SessionId;
+import net.i2p.util.I2PAppThread;
+
+/**
+ *  An additional session using another session's connection.
+ *
+ *  A subsession uses the same connection to the router as the primary session,
+ *  but has a different Destination. It uses the same tunnels as the primary
+ *  but has its own leaseset. It must use the same encryption keys as the primary
+ *  so that garlic encryption/decryption works.
+ *
+ *  The message handler map and message producer are reused from primary.
+ *
+ *  Does NOT reuse the session listener ????
+ *
+ *  While the I2CP protocol, in theory, allows for fully independent sessions
+ *  over the same I2CP connection, this is not currently supported by the router.
+ *
+ *  @since 0.9.21
+ */
+class SubSession extends I2PSessionMuxedImpl {
+    private final I2PSessionMuxedImpl _primary;
+
+    /**
+     *  @param primary must be a I2PSessionMuxedImpl
+     */
+    public SubSession(I2PSession primary, InputStream destKeyStream, Properties options) throws I2PSessionException {
+        super((I2PSessionMuxedImpl)primary, destKeyStream, options);
+        _primary = (I2PSessionMuxedImpl) primary;
+        if (!getDecryptionKey().equals(_primary.getDecryptionKey()))
+            throw new I2PSessionException("encryption key mismatch");
+        if (getPrivateKey().equals(_primary.getPrivateKey()))
+            throw new I2PSessionException("signing key must differ");
+        // state management
+    }
+
+    /**
+     *  Unsupported in a subsession.
+     *  @throws UnsupportedOperationException always
+     */
+    @Override
+    public I2PSession addSubsession(InputStream destKeyStream, Properties opts) throws I2PSessionException {
+        throw new UnsupportedOperationException();
+    }
+    
+    /**
+     *  Unsupported in a subsession.
+     *  Does nothing.
+     */
+    @Override
+    public void removeSubsession(I2PSession session) {}
+    
+    /**
+     *  Unsupported in a subsession.
+     *  @return empty list always
+     */
+    @Override
+    public List<I2PSession> getSubsessions() {
+        return Collections.emptyList();
+    }
+
+    /**
+     *  Does nothing for now
+     */
+    @Override
+    public void updateOptions(Properties options) {}
+
+    /**
+     * Connect to the router and establish a session.  This call blocks until 
+     * a session is granted.
+     *
+     * Should be threadsafe, other threads will block until complete.
+     * Disconnect / destroy from another thread may be called simultaneously and
+     * will (should?) interrupt the connect.
+     *
+     * @throws I2PSessionException if there is a configuration error or the router is
+     *                             not reachable
+     */
+    @Override
+    public void connect() throws I2PSessionException {
+        synchronized(_stateLock) {
+            if (_state != State.OPEN) {
+                changeState(State.OPENING);
+            }
+        }
+        boolean success = false;
+        try {
+            _primary.connect();
+            // wait until we have created a lease set
+            int waitcount = 0;
+            while (_leaseSet == null) {
+                if (waitcount++ > 5*60) {
+                    throw new IOException("No tunnels built after waiting 5 minutes. Your network connection may be down, or there is severe network congestion.");
+                }
+                synchronized (_leaseSetWait) {
+                    // InterruptedException caught below
+                    _leaseSetWait.wait(1000);
+                }
+            }
+            synchronized(_stateLock) {
+                if (_state != State.OPEN) {
+                    Thread notifier = new I2PAppThread(_availabilityNotifier, "ClientNotifier " + getPrefix(), true);
+                    notifier.start();
+                    changeState(State.OPEN);
+                }
+            }
+            success = true;
+        } catch (InterruptedException ie) {
+            throw new I2PSessionException("Interrupted", ie);
+        } catch (IOException ioe) {
+            throw new I2PSessionException(getPrefix() + "Cannot connect to the router on " + _hostname + ':' + _portNum, ioe);
+        } finally {
+            if (!success) {
+                _availabilityNotifier.stopNotifying();
+                changeState(State.CLOSED);
+            }
+        }
+    }
+
+    /**
+     *  Has the session been closed (or not yet connected)?
+     *  False when open and during transitions.
+     */
+    @Override
+    public boolean isClosed() {
+        return super.isClosed() || _primary.isClosed();
+    }
+
+    /**
+     * Deliver an I2CP message to the router
+     * May block for several seconds if the write queue to the router is full
+     *
+     * @throws I2PSessionException if the message is malformed or there is an error writing it out
+     */
+    @Override
+    void sendMessage(I2CPMessage message) throws I2PSessionException {
+        // workaround for now, as primary will send out our CreateSession
+        // from his connect, while we are still closed.
+        // If we did it in connect() we wouldn't need this
+        if (isClosed() &&
+            message.getType() != CreateSessionMessage.MESSAGE_TYPE &&
+            message.getType() != CreateLeaseSetMessage.MESSAGE_TYPE)
+            throw new I2PSessionException("Already closed");
+        _primary.sendMessage_unchecked(message);
+    }
+
+    /**
+     * Deliver an I2CP message to the router.
+     * Does NOT check state. Call only from connect() or other methods that need to
+     * send messages when not in OPEN state.
+     *
+     * @throws I2PSessionException if the message is malformed or there is an error writing it out
+     * @since 0.9.23
+     */
+    @Override
+    void sendMessage_unchecked(I2CPMessage message) throws I2PSessionException {
+        _primary.sendMessage_unchecked(message);
+    }
+
+    /**
+     * Pass off the error to the listener
+     * Misspelled, oh well.
+     * @param error non-null
+     */
+    @Override
+    void propogateError(String msg, Throwable error) {
+        _primary.propogateError(msg, error);
+        if (_sessionListener != null) _sessionListener.errorOccurred(this, msg, error);
+    }
+
+    /**
+     * Tear down the session, and do NOT reconnect.
+     *
+     * Blocks if session has not been fully started.
+     */
+    @Override
+    public void destroySession() {
+        _primary.destroySession();
+        if (_availabilityNotifier != null)
+            _availabilityNotifier.stopNotifying();
+        if (_sessionListener != null) _sessionListener.disconnected(this);
+        changeState(State.CLOSED);
+    }
+
+    /**
+     * Will interrupt a connect in progress.
+     */
+    @Override
+    protected void disconnect() {
+        _primary.disconnect();
+    }
+
+    @Override
+    protected boolean reconnect() {
+        return _primary.reconnect();
+    }
+
+    /**
+     *  Called by the message handler
+     *  on reception of DestReplyMessage
+     *
+     *  This will never happen, as the dest reply message does not contain a session ID.
+     */
+    @Override
+    void destReceived(Destination d) {
+        _primary.destReceived(d);
+    }
+
+    /**
+     *  Called by the message handler
+     *  on reception of DestReplyMessage
+     *
+     *  This will never happen, as the dest reply message does not contain a session ID.
+     *
+     *  @param h non-null
+     */
+    @Override
+    void destLookupFailed(Hash h) {
+        _primary.destLookupFailed(h);
+    }
+
+    /**
+     *  Called by the message handler
+     *  on reception of HostReplyMessage
+     *  @param d non-null
+     */
+    void destReceived(long nonce, Destination d) {
+        _primary.destReceived(nonce, d);
+    }
+
+    /**
+     *  Called by the message handler
+     *  on reception of HostReplyMessage
+     */
+    @Override
+    void destLookupFailed(long nonce) {
+        _primary.destLookupFailed(nonce);
+    }
+
+    /**
+     * Called by the message handler.
+     * This will never happen, as the bw limits message does not contain a session ID.
+     */
+    @Override
+    void bwReceived(int[] i) {
+        _primary.bwReceived(i);
+    }
+
+    /**
+     *  Blocking. Waits a max of 10 seconds by default.
+     *  See lookupDest with maxWait parameter to change.
+     *  Implemented in 0.8.3 in I2PSessionImpl;
+     *  previously was available only in I2PSimpleSession.
+     *  Multiple outstanding lookups are now allowed.
+     *  @return null on failure
+     */
+    @Override
+    public Destination lookupDest(Hash h) throws I2PSessionException {
+        return _primary.lookupDest(h);
+    }
+
+    /**
+     *  Blocking.
+     *  @param maxWait ms
+     *  @return null on failure
+     */
+    @Override
+    public Destination lookupDest(Hash h, long maxWait) throws I2PSessionException {
+        return _primary.lookupDest(h, maxWait);
+    }
+
+    /**
+     *  Ask the router to lookup a Destination by host name.
+     *  Blocking. Waits a max of 10 seconds by default.
+     *
+     *  This only makes sense for a b32 hostname, OR outside router context.
+     *  Inside router context, just query the naming service.
+     *  Outside router context, this does NOT query the context naming service.
+     *  Do that first if you expect a local addressbook.
+     *
+     *  This will log a warning for non-b32 in router context.
+     *
+     *  See interface for suggested implementation.
+     *
+     *  Requires router side to be 0.9.11 or higher. If the router is older,
+     *  this will return null immediately.
+     */
+    @Override
+    public Destination lookupDest(String name) throws I2PSessionException {
+        return _primary.lookupDest(name);
+    }
+
+    /**
+     *  Ask the router to lookup a Destination by host name.
+     *  Blocking. See above for details.
+     *  @param maxWait ms
+     *  @return null on failure
+     */
+    @Override
+    public Destination lookupDest(String name, long maxWait) throws I2PSessionException {
+        return _primary.lookupDest(name, maxWait);
+    }
+
+    /**
+     *  This won't be called, as the reply does not contain a session ID, so
+     *  it won't be routed back to us
+     */
+    @Override
+    public int[] bandwidthLimits() throws I2PSessionException {
+        return _primary.bandwidthLimits();
+    }
+
+    @Override
+    protected void updateActivity() {
+        _primary.updateActivity();
+    }
+
+    @Override
+    public long lastActivity() {
+        return _primary.lastActivity();
+    }
+
+    @Override
+    public void setReduced() {
+        _primary.setReduced();
+    }
+}
diff --git a/core/java/src/net/i2p/client/impl/package.html b/core/java/src/net/i2p/client/impl/package.html
new file mode 100644
index 0000000000000000000000000000000000000000..393014d7b81e0a42770bebf9ac5b9db029f9a3dc
--- /dev/null
+++ b/core/java/src/net/i2p/client/impl/package.html
@@ -0,0 +1,11 @@
+<html><body>
+<p>Implements the base I2P SDK for developing applications that communicate 
+through I2P.</p>
+
+<p>
+These classes are for implementing the client side of I2CP
+and are not to be used externally.
+Subject to change and not part of the public API.
+Moved from net.i2p.client in 0.9.21.
+</p>
+</body></html>
diff --git a/core/java/src/net/i2p/client/naming/BlockfileNamingService.java b/core/java/src/net/i2p/client/naming/BlockfileNamingService.java
index ec12eb792d8543bd258cf66e644a33a088057d56..efa8b3e064710a2c5bf0aaf61a558332a32a7b9b 100644
--- a/core/java/src/net/i2p/client/naming/BlockfileNamingService.java
+++ b/core/java/src/net/i2p/client/naming/BlockfileNamingService.java
@@ -621,11 +621,33 @@ public class BlockfileNamingService extends DummyNamingService {
     ////////// Start NamingService API
 
     /*
+     *
+     * Will strip a "www." prefix and retry if lookup fails
+     *
+     * @param hostname upper/lower case ok
      * @param options If non-null and contains the key "list", lookup in
      *                that list only, otherwise all lists
      */
     @Override
     public Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions) {
+        Destination rv = lookup2(hostname, lookupOptions, storedOptions);
+        if (rv == null) {
+            // if hostname starts with "www.", strip and try again
+            // but not for www.i2p
+            hostname = hostname.toLowerCase(Locale.US);
+            if (hostname.startsWith("www.") && hostname.length() > 7) {
+                hostname = hostname.substring(4);
+                rv = lookup2(hostname, lookupOptions, storedOptions);
+            }
+        }
+        return rv;
+    }
+
+    /*
+     * @param options If non-null and contains the key "list", lookup in
+     *                that list only, otherwise all lists
+     */
+    private Destination lookup2(String hostname, Properties lookupOptions, Properties storedOptions) {
         String listname = null;
         if (lookupOptions != null)
             listname = lookupOptions.getProperty("list");
diff --git a/core/java/src/net/i2p/client/naming/MetaNamingService.java b/core/java/src/net/i2p/client/naming/MetaNamingService.java
index ffae355a57b1c648e69058ab0df46ef168ebd025..5a4ebd275d299763f5dcb39f683944706a3f4a9b 100644
--- a/core/java/src/net/i2p/client/naming/MetaNamingService.java
+++ b/core/java/src/net/i2p/client/naming/MetaNamingService.java
@@ -41,8 +41,8 @@ public class MetaNamingService extends DummyNamingService {
         while (tok.hasMoreTokens()) {
             try {
                 Class<?> cls = Class.forName(tok.nextToken());
-                Constructor<?> con = cls.getConstructor(new Class[] { I2PAppContext.class });
-                addNamingService((NamingService)con.newInstance(new Object[] { context }), false);
+                Constructor<?> con = cls.getConstructor(I2PAppContext.class);
+                addNamingService((NamingService)con.newInstance(), false);
             } catch (Exception ex) {
             }
         }
diff --git a/core/java/src/net/i2p/client/naming/NamingService.java b/core/java/src/net/i2p/client/naming/NamingService.java
index 5a38c9e7fa1e17726d70351886ec97f7870d4dd0..78e04232d491b537e06676f43c49a97fa15901c4 100644
--- a/core/java/src/net/i2p/client/naming/NamingService.java
+++ b/core/java/src/net/i2p/client/naming/NamingService.java
@@ -536,8 +536,8 @@ public abstract class NamingService {
         String impl = context.getProperty(PROP_IMPL, DEFAULT_IMPL);
         try {
             Class<?> cls = Class.forName(impl);
-            Constructor<?> con = cls.getConstructor(new Class[] { I2PAppContext.class });
-            instance = (NamingService)con.newInstance(new Object[] { context });
+            Constructor<?> con = cls.getConstructor(I2PAppContext.class);
+            instance = (NamingService)con.newInstance(context);
         } catch (Exception ex) {
             Log log = context.logManager().getLog(NamingService.class);
             // Blockfile may throw RuntimeException but HostsTxt won't
diff --git a/core/java/src/net/i2p/client/naming/SingleFileNamingService.java b/core/java/src/net/i2p/client/naming/SingleFileNamingService.java
index 6414f64b45493a7032f2f1c0d7072446c4b13220..219c61bbc2cc29bc24b0882029bedb8031ebc219 100644
--- a/core/java/src/net/i2p/client/naming/SingleFileNamingService.java
+++ b/core/java/src/net/i2p/client/naming/SingleFileNamingService.java
@@ -28,6 +28,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import net.i2p.I2PAppContext;
 import net.i2p.data.DataFormatException;
+import net.i2p.data.DataHelper;
 import net.i2p.data.Destination;
 import net.i2p.util.FileUtil;
 import net.i2p.util.Log;
@@ -76,6 +77,8 @@ public class SingleFileNamingService extends NamingService {
     }
 
     /** 
+     *  Will strip a "www." prefix and retry if lookup fails
+     *
      *  @param hostname case-sensitive; caller should convert to lower case
      *  @param lookupOptions ignored
      *  @param storedOptions ignored
@@ -84,6 +87,8 @@ public class SingleFileNamingService extends NamingService {
     public Destination lookup(String hostname, Properties lookupOptions, Properties storedOptions) {
         try {
             String key = getKey(hostname);
+            if (key == null && hostname.startsWith("www.") && hostname.length() > 7)
+                key = getKey(hostname.substring(4));
             if (key != null)
                 return lookupBase64(key);
         } catch (Exception ioe) {
@@ -235,7 +240,7 @@ public class SingleFileNamingService extends NamingService {
             // FIXME fails if previous last line didn't have a trailing \n
             out.write(hostname.getBytes("UTF-8"));
             out.write('=');
-            out.write(d.toBase64().getBytes());
+            out.write(DataHelper.getASCII(d.toBase64()));
             out.write('\n');
             out.close();
             for (NamingServiceListener nsl : _listeners) { 
diff --git a/core/java/src/net/i2p/client/package.html b/core/java/src/net/i2p/client/package.html
index f7287d5ac01b2ed1ce5bde01bcbc18159d2eb5e6..9d250b4dfb556bf9c8cbff73aa94e7edfa16f240 100644
--- a/core/java/src/net/i2p/client/package.html
+++ b/core/java/src/net/i2p/client/package.html
@@ -1,6 +1,13 @@
 <html><body>
-<p>Implements the base I2P SDK for developing applications that communicate 
-through I2P.</p>
+<p>
+Interfaces and factories for
+the base I2P SDK used to develop applications that communicate 
+through I2P.
+</p>
+
+<p>
+Implementation moved to net.i2p.client.impl in 0.9.21.
+</p>
 
 <p>When a client application wants to communicate over I2P, the first thing it 
 needs to do is get a {@link net.i2p.client.I2PClient} from the 
diff --git a/core/java/src/net/i2p/crypto/CertUtil.java b/core/java/src/net/i2p/crypto/CertUtil.java
index 4d85aa691781969b39749d839f08a3e5138262db..e0b73cade6f021fb8362109070de4c94dfbeb3e6 100644
--- a/core/java/src/net/i2p/crypto/CertUtil.java
+++ b/core/java/src/net/i2p/crypto/CertUtil.java
@@ -3,6 +3,7 @@ package net.i2p.crypto;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.security.cert.Certificate;
 import java.security.cert.CertificateEncodingException;
@@ -45,7 +46,7 @@ public class CertUtil {
            // Get the encoded form which is suitable for exporting
            byte[] buf = cert.getEncoded();
            os = new SecureFileOutputStream(file);
-           wr = new PrintWriter(os);
+           wr = new PrintWriter(new OutputStreamWriter(os, "UTF-8"));
            wr.println("-----BEGIN CERTIFICATE-----");
            String b64 = Base64.encode(buf, true);     // true = use standard alphabet
            for (int i = 0; i < b64.length(); i += LINE_LENGTH) {
diff --git a/core/java/src/net/i2p/crypto/CryptixAESEngine.java b/core/java/src/net/i2p/crypto/CryptixAESEngine.java
index f7429c6d5db5efedec0d92cd2258b7c0a489323c..60eb630489f999b467246c5c4bdcca1910ff603e 100644
--- a/core/java/src/net/i2p/crypto/CryptixAESEngine.java
+++ b/core/java/src/net/i2p/crypto/CryptixAESEngine.java
@@ -44,28 +44,7 @@ public class CryptixAESEngine extends AESEngine {
     
     /** see test results below */
     private static final int MIN_SYSTEM_AES_LENGTH = 704;
-    private static final boolean USE_SYSTEM_AES;
-    static {
-        boolean systemOK = false;
-        if (hasAESNI()) {
-            try {
-                systemOK = Cipher.getMaxAllowedKeyLength("AES") >= 256;
-            } catch (GeneralSecurityException gse) {
-                // a NoSuchAlgorithmException
-            } catch (NoSuchMethodError nsme) {
-                // JamVM, gij
-                try {
-                    Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
-                    SecretKeySpec key = new SecretKeySpec(new byte[32], "AES");
-                    cipher.init(Cipher.ENCRYPT_MODE, key);
-                    systemOK = true;
-                } catch (GeneralSecurityException gse) {
-                }
-            }
-        }
-        USE_SYSTEM_AES = systemOK;
-        //System.out.println("Using system AES? " + systemOK);
-    }
+    private static final boolean USE_SYSTEM_AES = hasAESNI() && CryptoCheck.isUnlimited();
 
     /**
      *  Do we have AES-NI support in the processor and JVM?
diff --git a/core/java/src/net/i2p/crypto/CryptoCheck.java b/core/java/src/net/i2p/crypto/CryptoCheck.java
new file mode 100644
index 0000000000000000000000000000000000000000..31eac62dcee17fc577ec4a264e771a21f2697958
--- /dev/null
+++ b/core/java/src/net/i2p/crypto/CryptoCheck.java
@@ -0,0 +1,47 @@
+package net.i2p.crypto;
+
+import java.security.GeneralSecurityException;
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+
+/** 
+ * Moved from CryptixAESEngine and net.i2p.router.tasks.CryptoChecker
+ *
+ * @since 0.9.23
+ */
+public class CryptoCheck {
+
+    private static final boolean _isUnlimited;
+
+    static {
+        boolean unlimited = false;
+        try {
+            unlimited = Cipher.getMaxAllowedKeyLength("AES") >= 256;
+        } catch (GeneralSecurityException gse) {
+            // a NoSuchAlgorithmException
+        } catch (NoSuchMethodError nsme) {
+            // JamVM, gij
+            try {
+                Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
+                SecretKeySpec key = new SecretKeySpec(new byte[32], "AES");
+                cipher.init(Cipher.ENCRYPT_MODE, key);
+                unlimited = true;
+            } catch (GeneralSecurityException gse) {
+            }
+        }
+        _isUnlimited = unlimited;
+    }
+
+    private CryptoCheck() {}
+
+    /**
+     *  Do we have unlimited crypto?
+     */
+    public static boolean isUnlimited() {
+        return _isUnlimited;
+    }
+
+    public static void main(String args[]) {
+        System.out.println("Unlimited? " + isUnlimited());
+    }
+}
diff --git a/core/java/src/net/i2p/crypto/CryptoConstants.java b/core/java/src/net/i2p/crypto/CryptoConstants.java
index 94facd366bb36bac43e4b676f5f7be6474acd842..b9e0327dd385009896a94bf651046dde3348e763 100644
--- a/core/java/src/net/i2p/crypto/CryptoConstants.java
+++ b/core/java/src/net/i2p/crypto/CryptoConstants.java
@@ -92,8 +92,8 @@ public class CryptoConstants {
         if (ECConstants.isBCAvailable()) {
             try {
                 Class<?> cls = Class.forName("org.bouncycastle.jce.spec.ElGamalParameterSpec");
-                Constructor<?> con = cls.getConstructor(new Class[] {BigInteger.class, BigInteger.class});
-                spec = (AlgorithmParameterSpec)con.newInstance(new Object[] {elgp, elgg});
+                Constructor<?> con = cls.getConstructor(BigInteger.class, BigInteger.class);
+                spec = (AlgorithmParameterSpec)con.newInstance(elgp, elgg);
                 //System.out.println("BC ElG spec loaded");
             } catch (Exception e) {
                 //System.out.println("BC ElG spec failed");
diff --git a/core/java/src/net/i2p/crypto/DSAEngine.java b/core/java/src/net/i2p/crypto/DSAEngine.java
index e4a8e675888b3f915a6fefc817c283b1c7d07d32..d7dfe657a188f88ebb4fd9af5b1fb3f4c83cd08b 100644
--- a/core/java/src/net/i2p/crypto/DSAEngine.java
+++ b/core/java/src/net/i2p/crypto/DSAEngine.java
@@ -285,8 +285,8 @@ public class DSAEngine {
             try {
                 return altSign(data, offset, length, signingKey);
             } catch (GeneralSecurityException gse) {
-                if (_log.shouldLog(Log.WARN))
-                    _log.warn(type + " Sign Fail", gse);
+                if (_log.shouldLog(Log.ERROR))
+                    _log.error(type + " Sign Fail", gse);
                 return null;
             }
         }
diff --git a/core/java/src/net/i2p/crypto/ECConstants.java b/core/java/src/net/i2p/crypto/ECConstants.java
index affe6e4e8b58fe94e42b43d9e78b224148f8cb11..d9b111e234e26df3235c6fe1146854913ccbadaa 100644
--- a/core/java/src/net/i2p/crypto/ECConstants.java
+++ b/core/java/src/net/i2p/crypto/ECConstants.java
@@ -42,8 +42,8 @@ class ECConstants {
         if (Security.getProvider("BC") == null) {
             try {
                 Class<?> cls = Class.forName("org.bouncycastle.jce.provider.BouncyCastleProvider");
-                Constructor<?> con = cls.getConstructor(new Class[0]);
-                Provider bc = (Provider)con.newInstance(new Object[0]);
+                Constructor<?> con = cls.getConstructor();
+                Provider bc = (Provider)con.newInstance();
                 Security.addProvider(bc);
                 log("Added BC provider");
                 loaded = true;
diff --git a/core/java/src/net/i2p/crypto/KeyGenerator.java b/core/java/src/net/i2p/crypto/KeyGenerator.java
index aa6164e3055a3020dbf68c1d072b4467b0eed5be..60742c2fb9682731d0ebab6be19ddb9dbb015ed3 100644
--- a/core/java/src/net/i2p/crypto/KeyGenerator.java
+++ b/core/java/src/net/i2p/crypto/KeyGenerator.java
@@ -417,6 +417,8 @@ public class KeyGenerator {
             RandomSource.getInstance().nextBytes(src);
             long start = System.nanoTime();
             Signature sig = DSAEngine.getInstance().sign(src, privkey);
+            if (sig == null)
+                throw new GeneralSecurityException("signature generation failed");
             long mid = System.nanoTime();
             boolean ok = DSAEngine.getInstance().verifySignature(sig, src, pubkey);
             long end = System.nanoTime();
diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
index c374ad1204a15ffaa90d7e2af5f282082a2e5b47..06b73cea81cbc8832269dc4069a2fc72868e1a5e 100644
--- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java
+++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java
@@ -501,6 +501,7 @@ public class KeyStoreUtil {
         l.log(level, msg, t);
     }
 
+/****
     public static void main(String[] args) {
         try {
             if (args.length > 0) {
@@ -521,4 +522,5 @@ public class KeyStoreUtil {
             e.printStackTrace();
         }
     }
+****/
 }
diff --git a/core/java/src/net/i2p/crypto/SU3File.java b/core/java/src/net/i2p/crypto/SU3File.java
index bc4d0251c7f105cc4cd1ec8cc79900631f410de8..f8753aee50d3a55454e49c10c35aa0bdaa837be7 100644
--- a/core/java/src/net/i2p/crypto/SU3File.java
+++ b/core/java/src/net/i2p/crypto/SU3File.java
@@ -540,9 +540,10 @@ public class SU3File {
             String ctype = null;
             String ftype = null;
             String kfile = null;
+            String kspass = KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD;
             boolean error = false;
             boolean shouldVerify = true;
-            Getopt g = new Getopt("SU3File", args, "t:c:f:k:x");
+            Getopt g = new Getopt("SU3File", args, "t:c:f:k:xp:");
             int c;
             while ((c = g.getopt()) != -1) {
               switch (c) {
@@ -566,6 +567,10 @@ public class SU3File {
                     shouldVerify = false;
                     break;
 
+                case 'p':
+                    kspass = g.getOptarg();
+                    break;
+
                 case '?':
                 case ':':
                 default:
@@ -586,16 +591,16 @@ public class SU3File {
                 Properties props = new Properties();
                 props.setProperty("prng.bufferSize", "16384");
                 new I2PAppContext(props);
-                ok = signCLI(stype, ctype, ftype, a.get(0), a.get(1), a.get(2), a.get(3), a.get(4), "");
+                ok = signCLI(stype, ctype, ftype, a.get(0), a.get(1), a.get(2), a.get(3), a.get(4), "", kspass);
             } else if ("bulksign".equals(cmd)) {
                 Properties props = new Properties();
                 props.setProperty("prng.bufferSize", "16384");
                 new I2PAppContext(props);
-                ok = bulkSignCLI(stype, ctype, a.get(0), a.get(1), a.get(2), a.get(3));
+                ok = bulkSignCLI(stype, ctype, a.get(0), a.get(1), a.get(2), a.get(3), kspass);
             } else if ("verifysig".equals(cmd)) {
                 ok = verifySigCLI(a.get(0), kfile);
             } else if ("keygen".equals(cmd)) {
-                ok = genKeysCLI(stype, a.get(0), a.get(1), a.get(2));
+                ok = genKeysCLI(stype, a.get(0), a.get(1), a.get(2), kspass);
             } else if ("extract".equals(cmd)) {
                 ok = extractCLI(a.get(0), a.get(1), shouldVerify, kfile);
             } else {
@@ -611,12 +616,13 @@ public class SU3File {
     }
 
     private static final void showUsageCLI() {
-        System.err.println("Usage: SU3File keygen       [-t type|code] publicKeyFile keystore.ks you@mail.i2p");
-        System.err.println("       SU3File sign         [-t type|code] [-c type|code] [-f type|code] inputFile.zip signedFile.su3 keystore.ks version you@mail.i2p");
-        System.err.println("       SU3File bulksign     [-t type|code] [-c type|code] directory keystore.ks version you@mail.i2p");
-        System.err.println("       SU3File showversion  signedFile.su3");
-        System.err.println("       SU3File verifysig    [-k file.crt] signedFile.su3  ## -k use this pubkey cert for verification");
-        System.err.println("       SU3File extract      [-x] [-k file.crt] signedFile.su3 outFile   ## -x don't check sig");
+        System.err.println("Usage: SU3File keygen       [-t type|code] [-p keystorepw] publicKeyFile keystore.ks you@mail.i2p\n" +
+                           "       SU3File sign         [-t type|code] [-c type|code] [-f type|code] [-p keystorepw] inputFile.zip signedFile.su3 keystore.ks version you@mail.i2p\n" +
+                           "       SU3File bulksign     [-t type|code] [-c type|code] [-p keystorepw] directory keystore.ks version you@mail.i2p\n" +
+                           "       SU3File showversion  signedFile.su3\n" +
+                           "       SU3File verifysig    [-k file.crt] signedFile.su3  ## -k use this pubkey cert for verification\n" +
+                           "       SU3File extract      [-x] [-k file.crt] signedFile.su3 outFile   ## -x don't check sig");
+        System.err.println("Default keystore password: \"" + KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD + '"');
         System.err.println(dumpTypes());
     }
 
@@ -714,7 +720,7 @@ public class SU3File {
      *  @since 0.9.9
      */
     private static final boolean bulkSignCLI(String stype, String ctype, String dir,
-                                         String privateKeyFile, String version, String signerName) {
+                                     String privateKeyFile, String version, String signerName, String kspass) {
         File d = new File(dir);
         if (!d.isDirectory()) {
             System.out.println("Directory does not exist: " + d);
@@ -749,7 +755,8 @@ public class SU3File {
             if (!inputFile.endsWith(".zip"))
                 continue;
             String signedFile = inputFile.substring(0, inputFile.length() - 4) + ".su3";
-            boolean rv = signCLI(stype, ctype, null, inputFile, signedFile, privateKeyFile, version, signerName, keypw);
+            boolean rv = signCLI(stype, ctype, null, inputFile, signedFile,
+                                 privateKeyFile, version, signerName, keypw, kspass);
             if (!rv)
                 return false;
             success++;
@@ -764,7 +771,7 @@ public class SU3File {
      *  @since 0.9.9
      */
     private static final boolean signCLI(String stype, String ctype, String ftype, String inputFile, String signedFile,
-                                         String privateKeyFile, String version, String signerName, String keypw) {
+                                         String privateKeyFile, String version, String signerName, String keypw, String kspass) {
         SigType type = stype == null ? SigType.getByCode(Integer.valueOf(DEFAULT_SIG_CODE)) : SigType.parseSigType(stype);
         if (type == null) {
             System.out.println("Signature type " + stype + " is not supported");
@@ -799,7 +806,7 @@ public class SU3File {
                     System.out.println("Warning: File type " + ftype + " is undefined");
             }
         }
-        return signCLI(type, ct, ft, inputFile, signedFile, privateKeyFile, version, signerName, keypw);
+        return signCLI(type, ct, ft, inputFile, signedFile, privateKeyFile, version, signerName, keypw, kspass);
     }
 
     /**
@@ -807,7 +814,7 @@ public class SU3File {
      *  @since 0.9.9
      */
     private static final boolean signCLI(SigType type, ContentType ctype, int ftype, String inputFile, String signedFile,
-                                         String privateKeyFile, String version, String signerName, String keypw) {
+                                         String privateKeyFile, String version, String signerName, String keypw, String kspass) {
         try {
             while (keypw.length() < 6) {
                 System.out.print("Enter password for key \"" + signerName + "\": ");
@@ -821,7 +828,7 @@ public class SU3File {
                     System.out.println("Key password must be at least 6 characters");
             }
             File pkfile = new File(privateKeyFile);
-            PrivateKey pk = KeyStoreUtil.getPrivateKey(pkfile,KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD, signerName, keypw);
+            PrivateKey pk = KeyStoreUtil.getPrivateKey(pkfile, kspass, signerName, keypw);
             if (pk == null) {
                 System.out.println("Private key for " + signerName + " not found in keystore " + privateKeyFile);
                 return false;
@@ -895,13 +902,14 @@ public class SU3File {
      *  @return success
      *  @since 0.9.9
      */
-    private static final boolean genKeysCLI(String stype, String publicKeyFile, String privateKeyFile, String alias) {
+    private static final boolean genKeysCLI(String stype, String publicKeyFile, String privateKeyFile,
+                                            String alias, String kspass) {
         SigType type = stype == null ? SigType.getByCode(Integer.valueOf(DEFAULT_SIG_CODE)) : SigType.parseSigType(stype);
         if (type == null) {
             System.out.println("Signature type " + stype + " is not supported");
             return false;
         }
-        return genKeysCLI(type, publicKeyFile, privateKeyFile, alias);
+        return genKeysCLI(type, publicKeyFile, privateKeyFile, alias, kspass);
     }
 
     /**
@@ -909,7 +917,8 @@ public class SU3File {
      *  @return success
      *  @since 0.9.9
      */
-    private static final boolean genKeysCLI(SigType type, String publicKeyFile, String privateKeyFile, String alias) {
+    private static final boolean genKeysCLI(SigType type, String publicKeyFile, String privateKeyFile,
+                                            String alias, String kspass) {
         File pubFile = new File(publicKeyFile);
         if (pubFile.exists()) {
             System.out.println("Error: Not overwriting file " + publicKeyFile);
@@ -947,7 +956,7 @@ public class SU3File {
             if (keylen == 528)
                 keylen = 521;
         }
-        boolean success = KeyStoreUtil.createKeys(ksFile, KeyStoreUtil.DEFAULT_KEYSTORE_PASSWORD, alias,
+        boolean success = KeyStoreUtil.createKeys(ksFile, kspass, alias,
                                                   alias, "I2P", 3652, type.getBaseAlgorithm().getName(),
                                                   keylen, keypw);
         if (!success) {
diff --git a/core/java/src/net/i2p/crypto/SigType.java b/core/java/src/net/i2p/crypto/SigType.java
index ca05f8eedca0b3422456e0eda8b28adce43189d6..48ad93e0ae3adbec071a80685b7356026df8a08e 100644
--- a/core/java/src/net/i2p/crypto/SigType.java
+++ b/core/java/src/net/i2p/crypto/SigType.java
@@ -11,7 +11,9 @@ import java.util.Map;
 
 import net.i2p.crypto.eddsa.spec.EdDSANamedCurveTable;
 import net.i2p.data.Hash;
+import net.i2p.data.SigningPrivateKey;
 import net.i2p.data.SimpleDataStructure;
+import net.i2p.util.SystemVersion;
 
 /**
  * Defines the properties for various signature types
@@ -193,8 +195,24 @@ public enum SigType {
             return true;
         try {
             getParams();
-            if (getBaseAlgorithm() != SigAlgo.EdDSA)
-                Signature.getInstance(getAlgorithmName());
+            if (getBaseAlgorithm() != SigAlgo.EdDSA) {
+                Signature jsig = Signature.getInstance(getAlgorithmName());
+                if (getBaseAlgorithm() == SigAlgo.EC && SystemVersion.isGentoo() ) {
+                    // Do a full keygen/sign test on Gentoo, because it lies. Keygen works but sigs fail.
+                    // https://bugs.gentoo.org/show_bug.cgi?id=528338
+                    // http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2497
+                    // http://zzz.i2p/topics/1931
+                    // Be sure nothing in the code paths below calls isAvailable()
+                    // get an I2P keypair
+                    SimpleDataStructure[] keys = KeyGenerator.getInstance().generateSigningKeys(this);
+                    SigningPrivateKey privKey = (SigningPrivateKey) keys[1];
+                    // convert privkey back to Java key and sign
+                    jsig.initSign(SigUtil.toJavaECKey(privKey));
+                    // use the pubkey as random data
+                    jsig.update(keys[0].getData());
+                    jsig.sign();
+                }
+            }
             getDigestInstance();
             getHashInstance();
         } catch (Exception e) {
diff --git a/core/java/src/net/i2p/crypto/YKGenerator.java b/core/java/src/net/i2p/crypto/YKGenerator.java
index a714c6c6a6b95873c106028ddf947b17aca8a7bd..30245c22992d0b93ded777188f894733c83916e2 100644
--- a/core/java/src/net/i2p/crypto/YKGenerator.java
+++ b/core/java/src/net/i2p/crypto/YKGenerator.java
@@ -91,7 +91,7 @@ class YKGenerator {
             return;
         _precalcThread = new I2PThread(new YKPrecalcRunner(MIN_NUM_BUILDERS, MAX_NUM_BUILDERS),
                                        "YK Precalc", true);
-        _precalcThread.setPriority(Thread.MIN_PRIORITY);
+        _precalcThread.setPriority(Thread.NORM_PRIORITY - 2);
         _isRunning = true;
         _precalcThread.start();
     }
diff --git a/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java b/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
index d3945976aa494fc7e933b82d32fcc458d069e132..4136b321a72222ce14374efcca9029680227c4cc 100644
--- a/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
+++ b/core/java/src/net/i2p/crypto/eddsa/EdDSAPrivateKey.java
@@ -15,12 +15,12 @@ import net.i2p.crypto.eddsa.spec.EdDSAPrivateKeySpec;
  */
 public class EdDSAPrivateKey implements EdDSAKey, PrivateKey {
     private static final long serialVersionUID = 23495873459878957L;
-    private transient final byte[] seed;
-    private transient final byte[] h;
-    private transient final byte[] a;
-    private transient final GroupElement A;
-    private transient final byte[] Abyte;
-    private transient final EdDSAParameterSpec edDsaSpec;
+    private final byte[] seed;
+    private final byte[] h;
+    private final byte[] a;
+    private final GroupElement A;
+    private final byte[] Abyte;
+    private final EdDSAParameterSpec edDsaSpec;
 
     public EdDSAPrivateKey(EdDSAPrivateKeySpec spec) {
         this.seed = spec.getSeed();
diff --git a/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java b/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java
index 7b29590ef9c26f46aaf4125a8eeac677004e52ab..4bea7c39e955f5e1f5c1c103be5420831775bbb3 100644
--- a/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java
+++ b/core/java/src/net/i2p/crypto/eddsa/math/FieldElement.java
@@ -1,11 +1,15 @@
 package net.i2p.crypto.eddsa.math;
 
+import java.io.Serializable;
+
 /**
  *
  * @since 0.9.15
  *
  */
-public abstract class FieldElement {
+public abstract class FieldElement implements Serializable {
+    private static final long serialVersionUID = 1239527465875676L;
+
     protected final Field f;
 
     public FieldElement(Field f) {
diff --git a/core/java/src/net/i2p/data/Base32.java b/core/java/src/net/i2p/data/Base32.java
index 4ca506b88351800350092db38e95018c564d9950..8270aa93287ca00c71f173bfbbc6571578feac4e 100644
--- a/core/java/src/net/i2p/data/Base32.java
+++ b/core/java/src/net/i2p/data/Base32.java
@@ -101,8 +101,8 @@ public class Base32 {
     }
 
     private static byte[] read(InputStream in) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
-        byte buf[] = new byte[4096];
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(64);
+        byte buf[] = new byte[64];
         while (true) {
             int read = in.read(buf);
             if (read < 0) break;
@@ -118,7 +118,7 @@ public class Base32 {
     }
 
     private static void decode(InputStream in, OutputStream out) throws IOException {
-        byte decoded[] = decode(new String(read(in)));
+        byte decoded[] = decode(DataHelper.getUTF8(read(in)));
         if (decoded == null) {
             System.out.println("FAIL");
             return;
@@ -199,7 +199,7 @@ public class Base32 {
         byte[] b = decode(s);
         if (b == null)
             return null;
-        return new String(b);
+        return DataHelper.getUTF8(b);
     }
 
     /**
diff --git a/core/java/src/net/i2p/data/Base64.java b/core/java/src/net/i2p/data/Base64.java
index 2633c1b69188a9f7936e486bbedce80ef6be5473..3babe10ee11416ecb972ae13923645b729700aa1 100644
--- a/core/java/src/net/i2p/data/Base64.java
+++ b/core/java/src/net/i2p/data/Base64.java
@@ -246,8 +246,8 @@ public class Base64 {
     }
 
     private static byte[] read(InputStream in) throws IOException {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
-        byte buf[] = new byte[4096];
+        ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
+        byte buf[] = new byte[1024];
         while (true) {
             int read = in.read(buf);
             if (read < 0) break;
@@ -263,7 +263,7 @@ public class Base64 {
     }
 
     private static void decode(InputStream in, OutputStream out) throws IOException {
-        byte decoded[] = decode(new String(read(in)));
+        byte decoded[] = decode(DataHelper.getUTF8(read(in)));
         if (decoded == null)
             throw new IOException("Invalid base 64 string");
         out.write(decoded);
diff --git a/core/java/src/net/i2p/data/ByteArray.java b/core/java/src/net/i2p/data/ByteArray.java
index 1801b122e7256beb3eb42b8eafe2f97409f5f62c..50670c760d1299d59174ebb9daf34328d1020545 100644
--- a/core/java/src/net/i2p/data/ByteArray.java
+++ b/core/java/src/net/i2p/data/ByteArray.java
@@ -16,7 +16,7 @@ import java.io.Serializable;
  * maps, and the like.
  *
  */
-public class ByteArray implements Serializable, Comparable {
+public class ByteArray implements Serializable, Comparable<ByteArray> {
     private byte[] _data;
     private int _valid;
     private int _offset;
@@ -85,9 +85,8 @@ public class ByteArray implements Serializable, Comparable {
         return (llen == rlen) && DataHelper.eq(lhs, loff, rhs, roff, llen);
     }
     
-    public final int compareTo(Object obj) {
-        if (obj.getClass() != getClass()) throw new ClassCastException("invalid object: " + obj);
-        return DataHelper.compareTo(_data, ((ByteArray)obj).getData());
+    public final int compareTo(ByteArray ba) {
+        return DataHelper.compareTo(_data, ba.getData());
     }
     
     @Override
diff --git a/core/java/src/net/i2p/data/Certificate.java b/core/java/src/net/i2p/data/Certificate.java
index 0f79b9d53c4865ec8c92d48cb19f7d319c01d272..aa2624b8af8f1637698f42d165c3d2761da862c8 100644
--- a/core/java/src/net/i2p/data/Certificate.java
+++ b/core/java/src/net/i2p/data/Certificate.java
@@ -47,21 +47,34 @@ public class Certificate extends DataStructureImpl {
     public final static int CERTIFICATE_TYPE_KEY = 5;
 
     /**
-     * If null cert, return immutable static instance, else create new
-     * @throws AIOOBE if not enough bytes, FIXME should throw DataFormatException
+     * If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new
+     * @throws DataFormatException if not enough bytes
      * @since 0.8.3
      */
-    public static Certificate create(byte[] data, int off) {
-        int type = data[off] & 0xff;
-        int length = (int) DataHelper.fromLong(data, off + 1, 2);
-        if (type == 0 && length == 0)
-            return NULL_CERT;
-        // from here down roughly the same as readBytes() below
-        if (length == 0)
-            return new Certificate(type, null);
-        byte[] payload = new byte[length];
-        System.arraycopy(data, off + 3, payload, 0, length);
+    public static Certificate create(byte[] data, int off) throws DataFormatException {
+    	int type;
+    	byte[] payload;
+        int length;
+    	try {
+            type = data[off] & 0xff;
+            length = (int) DataHelper.fromLong(data, off + 1, 2);
+            if (type == 0 && length == 0)
+                return NULL_CERT;
+            // from here down roughly the same as readBytes() below
+            if (length == 0)
+                return new Certificate(type, null);
+            payload = new byte[length];
+            System.arraycopy(data, off + 3, payload, 0, length);
+    	} catch (ArrayIndexOutOfBoundsException aioobe) {
+    		throw new DataFormatException("not enough bytes", aioobe);
+    	}
         if (type == CERTIFICATE_TYPE_KEY) {
+            if (length == 4) {
+                if (Arrays.equals(payload, KeyCertificate.Ed25519_PAYLOAD))
+                    return KeyCertificate.ELG_Ed25519_CERT;
+                if (Arrays.equals(payload, KeyCertificate.ECDSA256_PAYLOAD))
+                    return KeyCertificate.ELG_ECDSA256_CERT;
+            }
             try {
                 return new KeyCertificate(payload);
             } catch (DataFormatException dfe) {
@@ -72,7 +85,7 @@ public class Certificate extends DataStructureImpl {
     }
 
     /**
-     * If null cert, return immutable static instance, else create new
+     * If null, P256 key, or Ed25519 key cert, return immutable static instance, else create new
      * @since 0.8.3
      */
     public static Certificate create(InputStream in) throws DataFormatException, IOException {
@@ -87,8 +100,15 @@ public class Certificate extends DataStructureImpl {
         int read = DataHelper.read(in, payload);
         if (read != length)
             throw new DataFormatException("Not enough bytes for the payload (read: " + read + " length: " + length + ')');
-        if (type == CERTIFICATE_TYPE_KEY)
+        if (type == CERTIFICATE_TYPE_KEY) {
+            if (length == 4) {
+                if (Arrays.equals(payload, KeyCertificate.Ed25519_PAYLOAD))
+                    return KeyCertificate.ELG_Ed25519_CERT;
+                if (Arrays.equals(payload, KeyCertificate.ECDSA256_PAYLOAD))
+                    return KeyCertificate.ELG_ECDSA256_CERT;
+            }
             return new KeyCertificate(payload);
+        }
         return new Certificate(type, payload);
     }
 
@@ -262,7 +282,7 @@ public class Certificate extends DataStructureImpl {
         } else {
             buf.append(" payload size: ").append(_payload.length);
             if (getCertificateType() == CERTIFICATE_TYPE_HASHCASH) {
-                buf.append(" Stamp: ").append(new String(_payload));
+                buf.append(" Stamp: ").append(DataHelper.getUTF8(_payload));
             } else if (getCertificateType() == CERTIFICATE_TYPE_SIGNED && _payload.length == CERTIFICATE_LENGTH_SIGNED_WITH_HASH) {
                 buf.append(" Signed by hash: ").append(Base64.encode(_payload, Signature.SIGNATURE_BYTES, Hash.HASH_LENGTH));
             } else {
diff --git a/core/java/src/net/i2p/data/DataHelper.java b/core/java/src/net/i2p/data/DataHelper.java
index 672a187d8edd346dea4b63d6ab0a68c69d2afc7d..980a01c52bab86987abbd2742e4a311f7a0595be 100644
--- a/core/java/src/net/i2p/data/DataHelper.java
+++ b/core/java/src/net/i2p/data/DataHelper.java
@@ -1548,7 +1548,7 @@ public class DataHelper {
             // years
             t = ngettext("1 year", "{0} years", (int) (ms / (365L * 24 * 60 * 60 * 1000)));
         } else {
-            return _("n/a");
+            return _t("n/a");
         }
         // Replace minus sign to work around
         // bug in Chrome (and IE?), line breaks at the minus sign
@@ -1595,7 +1595,7 @@ public class DataHelper {
             // years
             t = ngettext("1 year", "{0} years", (int) (ms / (365L * 24 * 60 * 60 * 1000)));
         } else {
-            return _("n/a");
+            return _t("n/a");
         }
         if (ms < 0)
             t = t.replace("-", "&minus;");
@@ -1604,7 +1604,7 @@ public class DataHelper {
     
     private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
 
-    private static String _(String key) {
+    private static String _t(String key) {
         return Translate.getString(key, I2PAppContext.getGlobalContext(), BUNDLE_NAME);
     }
 
@@ -1695,7 +1695,7 @@ public class DataHelper {
         if (unescaped == null) return null;
         String escaped = unescaped;
         for (int i = 0; i < escapeChars.length; i++) {
-            escaped = escaped.replaceAll(escapeChars[i], escapeCodes[i]);
+            escaped = escaped.replace(escapeChars[i], escapeCodes[i]);
         }
         return escaped;
     }
@@ -1710,7 +1710,7 @@ public class DataHelper {
         if (escaped == null) return null;
         String unescaped = escaped;
         for (int i = 0; i < escapeChars.length; i++) {
-            unescaped = unescaped.replaceAll(escapeCodes[i], escapeChars[i]);
+            unescaped = unescaped.replace(escapeCodes[i], escapeChars[i]);
         }
         return unescaped;
     }
@@ -1866,7 +1866,6 @@ public class DataHelper {
      *
      *  @return null if orig is null
      *  @throws RuntimeException
-     *  @deprecated unused
      */
     public static String getUTF8(byte orig[], int offset, int len) {
         if (orig == null) return null;
diff --git a/core/java/src/net/i2p/data/DatabaseEntry.java b/core/java/src/net/i2p/data/DatabaseEntry.java
index c2dd42113f95e1055650f0d75c1fb4da1a72b99d..09fc6a50a3928205637b998a0aef0b160fa2971a 100644
--- a/core/java/src/net/i2p/data/DatabaseEntry.java
+++ b/core/java/src/net/i2p/data/DatabaseEntry.java
@@ -171,8 +171,12 @@ public abstract class DatabaseEntry extends DataStructureImpl {
             throw new IllegalStateException();
         byte[] bytes = getBytes();
         if (bytes == null) throw new DataFormatException("Not enough data to sign");
+        if (key == null)
+            throw new DataFormatException("No signing key");
         // now sign with the key 
         _signature = DSAEngine.getInstance().sign(bytes, key);
+        if (_signature == null)
+            throw new DataFormatException("Signature failed with " + key.getType() + " key");
     }
 
     /**
diff --git a/core/java/src/net/i2p/data/KeyCertificate.java b/core/java/src/net/i2p/data/KeyCertificate.java
index 904f773885ba6517d54d06de228dbea8455c1f88..1c35d6c318ea37693d683f46690ef203f417568d 100644
--- a/core/java/src/net/i2p/data/KeyCertificate.java
+++ b/core/java/src/net/i2p/data/KeyCertificate.java
@@ -17,15 +17,41 @@ public class KeyCertificate extends Certificate {
 
     public static final int HEADER_LENGTH = 4;
 
+    /** @since 0.9.22 pkg private for Certificate.create() */
+    static final byte[] Ed25519_PAYLOAD = new byte[] {
+        0, (byte) (SigType.EdDSA_SHA512_Ed25519.getCode()), 0, 0
+    };
+
+    /** @since 0.9.22 pkg private for Certificate.create() */
+    static final byte[] ECDSA256_PAYLOAD = new byte[] {
+        0, (byte) (SigType.ECDSA_SHA256_P256.getCode()), 0, 0
+    };
+
+    /**
+     *  An immutable ElG/ECDSA-P256 certificate.
+     */
     public static final KeyCertificate ELG_ECDSA256_CERT;
+
+    /**
+     *  An immutable ElG/Ed25519 certificate.
+     *  @since 0.9.22
+     */
+    public static final KeyCertificate ELG_Ed25519_CERT;
+
     static {
         KeyCertificate kc;
         try {
             kc = new ECDSA256Cert();
         } catch (DataFormatException dfe) {
-            kc = null;  // won't happen
+            throw new RuntimeException(dfe);  // won't happen
         }
         ELG_ECDSA256_CERT = kc;
+        try {
+            kc = new Ed25519Cert();
+        } catch (DataFormatException dfe) {
+            throw new RuntimeException(dfe);  // won't happen
+        }
+        ELG_Ed25519_CERT = kc;
     }
 
     /**
@@ -122,7 +148,7 @@ public class KeyCertificate extends Certificate {
     /**
      *  Signing Key extra data, if any, is first in the array.
      *  Crypto Key extra data, if any, is second in the array,
-     *  at offset max(0, 128 - getSigType().getPubkeyLen()
+     *  at offset max(0, getSigType().getPubkeyLen() - 128)
      *
      *  @return null if unset or none
      */
@@ -148,7 +174,7 @@ public class KeyCertificate extends Certificate {
         SigType type = getSigType();
         if (type == null)
             throw new UnsupportedOperationException("unknown sig type");
-        int extra = 128 - type.getPubkeyLen();
+        int extra = Math.max(0, type.getPubkeyLen() - 128);
         if (_payload.length == HEADER_LENGTH + extra)
             return getExtraKeyData();
         byte[] rv = new byte[extra];
@@ -185,19 +211,17 @@ public class KeyCertificate extends Certificate {
 
     /**
      *  An immutable ElG/ECDSA-256 certificate.
-     *  @since 0.8.3
      */
     private static final class ECDSA256Cert extends KeyCertificate {
         private static final byte[] ECDSA256_DATA = new byte[] {
             CERTIFICATE_TYPE_KEY, 0, HEADER_LENGTH, 0, (byte) (SigType.ECDSA_SHA256_P256.getCode()), 0, 0
         };
         private static final int ECDSA256_LENGTH = ECDSA256_DATA.length;
-        private static final byte[] ECDSA256_PAYLOAD = new byte[] {
-                                        0, (byte) (SigType.ECDSA_SHA256_P256.getCode()), 0, 0
-        };
+        private final int _hashcode;
 
         public ECDSA256Cert() throws DataFormatException {
             super(ECDSA256_PAYLOAD);
+            _hashcode = super.hashCode();
         }
 
         /** @throws RuntimeException always */
@@ -246,7 +270,75 @@ public class KeyCertificate extends Certificate {
         /** Overridden for efficiency */
         @Override
         public int hashCode() {
-            return 1234567;
+            return _hashcode;
+        }
+    }
+
+    /**
+     *  An immutable ElG/Ed25519 certificate.
+     *  @since 0.9.22
+     */
+    private static final class Ed25519Cert extends KeyCertificate {
+        private static final byte[] ED_DATA = new byte[] { CERTIFICATE_TYPE_KEY,
+                                                           0, HEADER_LENGTH,
+                                                           0, (byte) SigType.EdDSA_SHA512_Ed25519.getCode(),
+                                                           0, 0
+        };
+        private static final int ED_LENGTH = ED_DATA.length;
+        private final int _hashcode;
+
+        public Ed25519Cert() throws DataFormatException {
+            super(Ed25519_PAYLOAD);
+            _hashcode = super.hashCode();
+        }
+
+        /** @throws RuntimeException always */
+        @Override
+        public void setCertificateType(int type) {
+            throw new RuntimeException("Data already set");
+        }
+
+        /** @throws RuntimeException always */
+        @Override
+        public void setPayload(byte[] payload) {
+            throw new RuntimeException("Data already set");
+        }
+    
+        /** @throws RuntimeException always */
+        @Override
+        public void readBytes(InputStream in) throws DataFormatException, IOException {
+            throw new RuntimeException("Data already set");
+        }
+    
+        /** Overridden for efficiency */
+        @Override
+        public void writeBytes(OutputStream out) throws IOException {
+            out.write(ED_DATA);
+        }
+    
+        /** Overridden for efficiency */
+        @Override
+        public int writeBytes(byte target[], int offset) {
+            System.arraycopy(ED_DATA, 0, target, offset, ED_LENGTH);
+            return ED_LENGTH;
+        }
+    
+        /** @throws RuntimeException always */
+        @Override
+        public int readBytes(byte source[], int offset) throws DataFormatException {
+            throw new RuntimeException("Data already set");
+        }
+    
+        /** Overridden for efficiency */
+        @Override
+        public int size() {
+            return ED_LENGTH;
+        }
+    
+        /** Overridden for efficiency */
+        @Override
+        public int hashCode() {
+            return _hashcode;
         }
     }
 }
diff --git a/core/java/src/net/i2p/data/LeaseSet.java b/core/java/src/net/i2p/data/LeaseSet.java
index b844c7e3a71fcb9c38b4ab5bf11e00f46963e5db..0fd4ed845f28b8fd844014bd1a20d1f48b632f81 100644
--- a/core/java/src/net/i2p/data/LeaseSet.java
+++ b/core/java/src/net/i2p/data/LeaseSet.java
@@ -418,10 +418,10 @@ public class LeaseSet extends DatabaseEntry {
             encryp(key);
         } catch (DataFormatException dfe) {
             Log log = I2PAppContext.getGlobalContext().logManager().getLog(LeaseSet.class);
-            log.error("Error encrypting lease: " + _destination.calculateHash());
+            log.error("Error encrypting lease: " + _destination.calculateHash(), dfe);
         } catch (IOException ioe) {
             Log log = I2PAppContext.getGlobalContext().logManager().getLog(LeaseSet.class);
-            log.error("Error encrypting lease: " + _destination.calculateHash());
+            log.error("Error encrypting lease: " + _destination.calculateHash(), ioe);
         }
     }
 
@@ -520,7 +520,11 @@ public class LeaseSet extends DatabaseEntry {
     private synchronized boolean isEncrypted() {
         if (_decrypted)
            return true;
-        if (_checked || _destination == null)
+        // If the encryption key is not set yet, it can't have been encrypted yet.
+        // Router-side I2CP sets the destination (but not the encryption key)
+        // on an unsigned LS which is pending signature (and possibly encryption)
+        // by the client, and we don't want to attempt 'decryption' on it.
+        if (_checked || _encryptionKey == null || _destination == null)
            return false;
         SessionKey key = I2PAppContext.getGlobalContext().keyRing().get(_destination.calculateHash());
         if (key != null) {
@@ -529,10 +533,10 @@ public class LeaseSet extends DatabaseEntry {
                 _decrypted = true;
             } catch (DataFormatException dfe) {
                 Log log = I2PAppContext.getGlobalContext().logManager().getLog(LeaseSet.class);
-                log.error("Error decrypting lease: " + _destination.calculateHash() + dfe);
+                log.error("Error decrypting lease: " + _destination.calculateHash(), dfe);
             } catch (IOException ioe) {
                 Log log = I2PAppContext.getGlobalContext().logManager().getLog(LeaseSet.class);
-                log.error("Error decrypting lease: " + _destination.calculateHash() + ioe);
+                log.error("Error decrypting lease: " + _destination.calculateHash(), ioe);
             }
         }
         _checked = true;
diff --git a/core/java/src/net/i2p/data/PrivateKeyFile.java b/core/java/src/net/i2p/data/PrivateKeyFile.java
index 96cc8a47b0c220fd4382df9e45008534ed4d1701..f42d8da15e7502bfbd428782337ef504540c4033 100644
--- a/core/java/src/net/i2p/data/PrivateKeyFile.java
+++ b/core/java/src/net/i2p/data/PrivateKeyFile.java
@@ -405,7 +405,10 @@ public class PrivateKeyFile {
         System.arraycopy(this.dest.getPublicKey().getData(), 0, data, 0, PublicKey.KEYSIZE_BYTES);
         System.arraycopy(this.dest.getSigningPublicKey().getData(), 0, data, PublicKey.KEYSIZE_BYTES, SigningPublicKey.KEYSIZE_BYTES);
         byte[] payload = new byte[Hash.HASH_LENGTH + Signature.SIGNATURE_BYTES];
-        byte[] sig = DSAEngine.getInstance().sign(new ByteArrayInputStream(data), spk2).getData();
+        Signature sign = DSAEngine.getInstance().sign(new ByteArrayInputStream(data), spk2);
+        if (sign == null)
+            return null;
+        byte[] sig = sign.getData();
         System.arraycopy(sig, 0, payload, 0, Signature.SIGNATURE_BYTES);
         // Add dest2's Hash for reference
         byte[] h2 = d2.calculateHash().getData();
diff --git a/core/java/src/net/i2p/data/SDSCache.java b/core/java/src/net/i2p/data/SDSCache.java
index ab77680149d7380150d2cbd7dad3e05f1ef4ab70..f38fe6bbfaf43fadb784b81cb50ff387fa456a71 100644
--- a/core/java/src/net/i2p/data/SDSCache.java
+++ b/core/java/src/net/i2p/data/SDSCache.java
@@ -46,7 +46,6 @@ import net.i2p.util.SystemVersion;
 public class SDSCache<V extends SimpleDataStructure> {
     //private static final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(SDSCache.class);
 
-    private static final Class[] conArg = new Class[] { byte[].class };
     private static final double MIN_FACTOR = 0.20;
     private static final double MAX_FACTOR = 5.0;
     private static final double FACTOR;
@@ -74,7 +73,7 @@ public class SDSCache<V extends SimpleDataStructure> {
         _cache = new LHMCache<Integer, WeakReference<V>>(size);
         _datalen = len;
         try {
-            _rvCon = rvClass.getConstructor(conArg);
+            _rvCon = rvClass.getConstructor(byte[].class);
         } catch (NoSuchMethodException e) {
             throw new RuntimeException("SDSCache init error", e);
         }
diff --git a/core/java/src/net/i2p/data/VerifiedDestination.java b/core/java/src/net/i2p/data/VerifiedDestination.java
index dee86800dab6d7c65369d4307973c23a854d2d03..1123f649986a6ca1e7aa4a6e0b0bab20f6407767 100644
--- a/core/java/src/net/i2p/data/VerifiedDestination.java
+++ b/core/java/src/net/i2p/data/VerifiedDestination.java
@@ -87,7 +87,7 @@ public class VerifiedDestination extends Destination {
      *  zeros and see if it meets our minimum effort.
      */
     protected boolean verifyHashCashCert() {
-        String hcs = new String(_certificate.getPayload());
+        String hcs = DataHelper.getUTF8(_certificate.getPayload());
         int end1 = 0;
         for (int i = 0; i < 3; i++) {
             end1 = 1 + hcs.indexOf(':', end1);
diff --git a/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java
index 6477768c53211e7cbcb6d002613b8dface7c3171..d7c55e53bd609aa9919696ea61b457fa6378c655 100644
--- a/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/CreateLeaseSetMessage.java
@@ -38,6 +38,16 @@ public class CreateLeaseSetMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
index b67f5fa6f0fbfe14717d7b9d3c2ab94059bd250c..67090011f66f2771fdf9a7b119c9b55c2fca5631 100644
--- a/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/DestroySessionMessage.java
@@ -32,6 +32,16 @@ public class DestroySessionMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/HostLookupMessage.java b/core/java/src/net/i2p/data/i2cp/HostLookupMessage.java
index 1a8fcfe86239698ff2d7768270d7fa2164d412a1..66835ef9f54224c108aadb04d3ac8ebf1aa91f0e 100644
--- a/core/java/src/net/i2p/data/i2cp/HostLookupMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/HostLookupMessage.java
@@ -76,6 +76,16 @@ public class HostLookupMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     /**
      *  @return 0 to 2**32 - 1
      */
diff --git a/core/java/src/net/i2p/data/i2cp/HostReplyMessage.java b/core/java/src/net/i2p/data/i2cp/HostReplyMessage.java
index 37faaa276f1cf991250dc7d80b688ed340b471f2..ad182d6a623f48b3d3f1aa4f721a85166d8e929b 100644
--- a/core/java/src/net/i2p/data/i2cp/HostReplyMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/HostReplyMessage.java
@@ -73,6 +73,16 @@ public class HostReplyMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     /**
      *  @return 0 to 2**32 - 1
      */
diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessage.java b/core/java/src/net/i2p/data/i2cp/I2CPMessage.java
index 92c4f61631613bea69a064734e9c3194a1332bd8..3cc7da5039b20e0ac537dd410b5cabb71c86465c 100644
--- a/core/java/src/net/i2p/data/i2cp/I2CPMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/I2CPMessage.java
@@ -60,9 +60,20 @@ public interface I2CPMessage extends DataStructure {
     public void writeMessage(OutputStream out) throws I2CPMessageException, IOException;
 
     /**
-     * Return the unique identifier for this type of APIMessage, as specified in the 
+     * Return the unique identifier for this type of message, as specified in the 
      * network specification document under #ClientAccessLayerMessages
-     * @return unique identifier for this type of APIMessage
+     * @return unique identifier for this type of message
      */
     public int getType();
-}
\ No newline at end of file
+
+    /**
+     * Return the SessionId for this type of message.
+     * Most but not all message types include a SessionId.
+     * The ones that do already define getSessionId(), but some return a SessionId and
+     * some return a long, so we define a new method here.
+     *
+     * @return SessionId or null if this message type does not include a SessionId
+     * @since 0.9.21
+     */
+    public SessionId sessionId();
+}
diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java
index 63d13b040128c7fe63df1e2a7f07d8f8eb23c452..b2e38c21ef410446ce1143364ab1e5c6edc8346a 100644
--- a/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java
+++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageException.java
@@ -12,7 +12,7 @@ package net.i2p.data.i2cp;
 import net.i2p.I2PException;
 
 /**
- * Represent an error serializing or deserializing an APIMessage
+ * Represent an error serializing or deserializing a message
  *
  * @author jrandom
  */
diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java
index 3ace5df9d3d65c4337862729989558549e99c308..ff597559fb9e8f3074eba27fcfa71a5520809cf8 100644
--- a/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java
+++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageImpl.java
@@ -127,4 +127,15 @@ public abstract class I2CPMessageImpl extends DataStructureImpl implements I2CPM
             throw new DataFormatException("Error writing the message", ime);
         }
     }
+
+    /**
+     * Return the SessionId for this type of message.
+     * Most but not all message types include a SessionId.
+     * The ones that do already define getSessionId(), but some return a SessionId and
+     * some return a long, so we define a new method here.
+     *
+     * @return null always. Extending classes with a SessionId must override.
+     * @since 0.9.21
+     */
+    public SessionId sessionId() { return null; }
 }
diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java
index 72148a55dab2a1f0f41f69c36793b32fac35d8ac..4dfbb8501c76193c31f5a0eb54aa95c55ac4a2db 100644
--- a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java
+++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java
@@ -158,6 +158,20 @@ public class I2CPMessageReader {
         }
 
         public void run() {
+            try {
+                run2();
+            } catch (Exception e) {
+                _log.log(Log.CRIT, "Uncaught I2CP error", e);
+                _listener.readError(I2CPMessageReader.this, e);
+                cancelRunner();
+            }
+        }
+
+        /**
+         * Called by run()
+         * @since 0.9.21
+         */
+        protected void run2() {
             while (_stayAlive) {
                 while (_doRun) {
                     // do read
diff --git a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
index 6d0c4daacca96a22f8e35235598e14a64ee1900b..c7b78c460080cfe1e282da539e5a76436bf52bb0 100644
--- a/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/MessagePayloadMessage.java
@@ -37,6 +37,16 @@ public class MessagePayloadMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId >= 0 ? new SessionId(_sessionId) : null;
+    }
+
     /** @param id 0-65535 */
     public void setSessionId(long id) {
         _sessionId = (int) id;
diff --git a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
index dd4f4305411dd8f981592c3e7e7a6bb2ccea6c9d..401fa96f0f8d02dd16bd82cb0241ed02b129037e 100644
--- a/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/MessageStatusMessage.java
@@ -193,6 +193,16 @@ public class MessageStatusMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId >= 0 ? new SessionId(_sessionId) : null;
+    }
+
     /** @param id 0-65535 */
     public void setSessionId(long id) {
         _sessionId = (int) id;
@@ -275,6 +285,12 @@ public class MessageStatusMessage extends I2CPMessageImpl {
             return "GUARANTEED SUCCESS ";
         case STATUS_SEND_SUCCESS_LOCAL:
             return "LOCAL SUCCESS      ";
+        case STATUS_SEND_BEST_EFFORT_FAILURE:
+            return "PROBABLE FAILURE   ";
+        case STATUS_SEND_FAILURE_NO_TUNNELS:
+            return "NO LOCAL TUNNELS   ";
+        case STATUS_SEND_FAILURE_NO_LEASESET:
+            return "LEASESET NOT FOUND ";
         default:
             return "SEND FAILURE CODE: " + status;
         }
diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
index cc685cbab26a7f3cbab1792254abebaa4b9e7b92..03e3e4aae45903cc93116934da19367dfa1aada9 100644
--- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageBeginMessage.java
@@ -36,6 +36,16 @@ public class ReceiveMessageBeginMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId >= 0 ? new SessionId(_sessionId) : null;
+    }
+
     /** @param id 0-65535 */
     public void setSessionId(long id) {
         _sessionId = (int) id;
diff --git a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
index c405b93a304901846ffc5365a2a10d097a818ca4..accf9dbe3d5a48db71da14489a473dc3cce2a4ba 100644
--- a/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReceiveMessageEndMessage.java
@@ -35,6 +35,16 @@ public class ReceiveMessageEndMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId >= 0 ? new SessionId(_sessionId) : null;
+    }
+
     /** @param id 0-65535 */
     public void setSessionId(long id) {
         _sessionId = (int) id;
diff --git a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
index 01130670ab0a04829b0a7d370c9c324c0bf52f8d..7532af3580679fa01ce8ea9fd76780d0cd46f366 100644
--- a/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReconfigureSessionMessage.java
@@ -33,6 +33,16 @@ public class ReconfigureSessionMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java b/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java
index 76311ae6e5958a0111a74468b0c27ad1c7c7f002..4118ac322b9e7821c365ebd72d712ed9992201b7 100644
--- a/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/ReportAbuseMessage.java
@@ -35,6 +35,16 @@ public class ReportAbuseMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
index 1e9b2dcf68b31e660c87c474235bb2a07b8101af..b972fab38b56d1dd72b4db10ae3eb18f5c401bbc 100644
--- a/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/RequestLeaseSetMessage.java
@@ -45,6 +45,16 @@ public class RequestLeaseSetMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/RequestVariableLeaseSetMessage.java b/core/java/src/net/i2p/data/i2cp/RequestVariableLeaseSetMessage.java
index 160e193dcbb8f9e1fda08742cdb4067d035c879e..6d172c9195601289ec37b478351eedb782d98b43 100644
--- a/core/java/src/net/i2p/data/i2cp/RequestVariableLeaseSetMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/RequestVariableLeaseSetMessage.java
@@ -55,6 +55,16 @@ public class RequestVariableLeaseSetMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java b/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java
index 18f6c6df376b78a827ee04145313f57833cb088c..0a6e69b3a05554143b20f20e1454f62a33be6ee7 100644
--- a/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SendMessageMessage.java
@@ -38,6 +38,16 @@ public class SendMessageMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/data/i2cp/SessionConfig.java b/core/java/src/net/i2p/data/i2cp/SessionConfig.java
index de6734349e0f9371de22d7744a45b96f30a75a57..531194d17739636a7279922cf504f112a80c86a1 100644
--- a/core/java/src/net/i2p/data/i2cp/SessionConfig.java
+++ b/core/java/src/net/i2p/data/i2cp/SessionConfig.java
@@ -121,7 +121,11 @@ public class SessionConfig extends DataStructureImpl {
     public void signSessionConfig(SigningPrivateKey signingKey) throws DataFormatException {
         byte data[] = getBytes();
         if (data == null) throw new DataFormatException("Unable to retrieve bytes for signing");
+        if (signingKey == null)
+            throw new DataFormatException("No signing key");
         _signature = DSAEngine.getInstance().sign(data, signingKey);
+        if (_signature == null)
+            throw new DataFormatException("Signature failed with " + signingKey.getType() + " key");
     }
 
     /**
diff --git a/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java b/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java
index 5af2a649bd03955fe88735b860a3644502771549..49509a552365482df6ca565cdc408b283b104bd5 100644
--- a/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java
+++ b/core/java/src/net/i2p/data/i2cp/SessionStatusMessage.java
@@ -42,6 +42,16 @@ public class SessionStatusMessage extends I2CPMessageImpl {
         return _sessionId;
     }
 
+    /**
+     * Return the SessionId for this message.
+     *
+     * @since 0.9.21
+     */
+    @Override
+    public SessionId sessionId() {
+        return _sessionId;
+    }
+
     public void setSessionId(SessionId id) {
         _sessionId = id;
     }
diff --git a/core/java/src/net/i2p/internal/I2CPMessageQueue.java b/core/java/src/net/i2p/internal/I2CPMessageQueue.java
index eda2d8f9572975f13e702199597478707212f636..76584255c2b6030276023ee2ee5c9e3f72a5a41e 100644
--- a/core/java/src/net/i2p/internal/I2CPMessageQueue.java
+++ b/core/java/src/net/i2p/internal/I2CPMessageQueue.java
@@ -1,5 +1,7 @@
 package net.i2p.internal;
 
+import java.io.Closeable;
+
 import net.i2p.data.i2cp.I2CPMessage;
 
 /**
@@ -15,7 +17,7 @@ import net.i2p.data.i2cp.I2CPMessage;
  * @author zzz
  * @since 0.8.3
  */
-public abstract class I2CPMessageQueue {
+public abstract class I2CPMessageQueue implements Closeable {
 
     /**
      *  Send a message, nonblocking.
diff --git a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
index 3e87a8e2f21a3517aecda3e204cc5b618a5ef86a..ba218631f405739fe47fd79aa0d97bdfc91eed73 100644
--- a/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
+++ b/core/java/src/net/i2p/internal/QueuedI2CPMessageReader.java
@@ -42,7 +42,7 @@ public class QueuedI2CPMessageReader extends I2CPMessageReader {
          * Pumps messages from the incoming message queue to the listener.
          */
         @Override
-        public void run() {
+        protected void run2() {
             while (_stayAlive) {
                 while (_doRun) {
                     // do read
diff --git a/core/java/src/net/i2p/kademlia/KBucketSet.java b/core/java/src/net/i2p/kademlia/KBucketSet.java
index a2d0610a6f3d67e115fb7e3a424b69eaaf96a37d..0d5daa223ad61da801b80cc4aaead7ae939b52c2 100644
--- a/core/java/src/net/i2p/kademlia/KBucketSet.java
+++ b/core/java/src/net/i2p/kademlia/KBucketSet.java
@@ -628,6 +628,7 @@ public class KBucketSet<T extends SimpleDataStructure> {
      *  @param data size <= SDS length, else throws IAE
      *              Can be 1 bigger if top byte is zero
      */
+    @SuppressWarnings("unchecked")
     private T makeKey(byte[] data) {
         int len = _us.length();
         int dlen = data.length;
diff --git a/core/java/src/net/i2p/stat/BufferedStatLog.java b/core/java/src/net/i2p/stat/BufferedStatLog.java
index 20b6a2a498d1f3396f8a1b182b3b755d8c594496..7c9b7b72318a6ac072eaaa7cb04cfcc732f2a9a7 100644
--- a/core/java/src/net/i2p/stat/BufferedStatLog.java
+++ b/core/java/src/net/i2p/stat/BufferedStatLog.java
@@ -2,8 +2,9 @@ package net.i2p.stat;
 
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.io.OutputStreamWriter;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -115,7 +116,7 @@ public class BufferedStatLog implements StatLog {
             if (_out != null) try { _out.close(); } catch (IOException ioe) {}
             _outFile = filename;
             try {
-                _out = new BufferedWriter(new FileWriter(_outFile, true), 32*1024);
+                _out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(_outFile, true), "UTF-8"), 32*1024);
             } catch (IOException ioe) { ioe.printStackTrace(); }
         }
     }
diff --git a/core/java/src/net/i2p/stat/Frequency.java b/core/java/src/net/i2p/stat/Frequency.java
index 50536fa4fd14089171ced8d5451b659cb1e9542a..721578ce6e1fc3944780f7ef0440dc064c86c767 100644
--- a/core/java/src/net/i2p/stat/Frequency.java
+++ b/core/java/src/net/i2p/stat/Frequency.java
@@ -150,4 +150,16 @@ public class Frequency {
     private final static long now() {
         return System.currentTimeMillis();
     }
+    
+    /**
+     * Appends the data of this frequency to the specified StringBuilder
+     * @param dest to append data to
+     * @since 0.9.23
+     */
+    synchronized void store(StringBuilder dest) {
+        dest.append("avgInterval:").append(_avgInterval).append(',');
+        dest.append("minAverageInterval").append(_minAverageInterval).append(',');
+        dest.append("lastEvent").append(_lastEvent).append(",");
+        dest.append("count").append(_count);
+    }
 }
diff --git a/core/java/src/net/i2p/stat/FrequencyStat.java b/core/java/src/net/i2p/stat/FrequencyStat.java
index d18a469dbd3c921a640cf7e06d3141db968747be..c2c49d6fbe0999c6e5480d5614b5d842f1ef8fcc 100644
--- a/core/java/src/net/i2p/stat/FrequencyStat.java
+++ b/core/java/src/net/i2p/stat/FrequencyStat.java
@@ -1,5 +1,10 @@
 package net.i2p.stat;
 
+import java.io.IOException;
+import java.io.OutputStream;
+
+import net.i2p.data.DataHelper;
+
 /** coordinate an event frequency over various periods */
 public class FrequencyStat {
     /** unique name of the statistic */
@@ -92,5 +97,34 @@ public class FrequencyStat {
         if ((obj == null) || !(obj instanceof FrequencyStat)) return false;
         return _statName.equals(((FrequencyStat)obj)._statName);
     }
+    
+    private final static String NL = System.getProperty("line.separator");
+    
+    /**
+     * Serializes this FrequencyStat to the provided OutputStream
+     * @param out to write to
+     * @param prefix to prepend to the stat
+     * @throws IOException if something goes wrong
+     * @since 0.9.23
+     */
+    public void store(OutputStream out, String prefix) throws IOException {
+        StringBuilder buf = new StringBuilder(1024);
+        buf.append(NL);
+        buf.append("################################################################################").append(NL);
+        buf.append("# Frequency: ").append(_groupName).append(": ").append(_statName).append(NL);
+        buf.append("# ").append(_description).append(NL);
+        buf.append("# ").append(NL).append(NL);
+        out.write(buf.toString().getBytes("UTF-8"));
+        buf.setLength(0);
+        for (Frequency r: _frequencies){
+            buf.append("#######").append(NL);
+            buf.append("# Period : ").append(DataHelper.formatDuration(r.getPeriod())).append(" for rate ")
+                .append(_groupName).append(" - ").append(_statName).append(NL);
+            buf.append(NL);
+            r.store(buf);
+            out.write(buf.toString().getBytes("UTF-8"));
+            buf.setLength(0);
+        }
+    }
 
 }
diff --git a/core/java/src/net/i2p/stat/Rate.java b/core/java/src/net/i2p/stat/Rate.java
index e37f9db9f76337a0d5c35628914bc927cdba2280..edac7d96b6ea2edf2d4a56961eeaaa141105da91 100644
--- a/core/java/src/net/i2p/stat/Rate.java
+++ b/core/java/src/net/i2p/stat/Rate.java
@@ -14,19 +14,19 @@ import net.i2p.data.DataHelper;
  */
 public class Rate {
     //private final static Log _log = new Log(Rate.class);
-    private double _currentTotalValue;
+    private float _currentTotalValue;
     // was long, save space
     private int _currentEventCount;
-    private long _currentTotalEventTime;
-    private double _lastTotalValue;
+    private int _currentTotalEventTime;
+    private float _lastTotalValue;
     // was long, save space
     private int _lastEventCount;
-    private long _lastTotalEventTime;
-    private double _extremeTotalValue;
+    private int _lastTotalEventTime;
+    private float _extremeTotalValue;
     // was long, save space
     private int _extremeEventCount;
-    private long _extremeTotalEventTime;
-    private double _lifetimeTotalValue;
+    private int _extremeTotalEventTime;
+    private float _lifetimeTotalValue;
     private long _lifetimeEventCount;
     private long _lifetimeTotalEventTime;
     private RateSummaryListener _summaryListener;
@@ -227,10 +227,10 @@ public class Rate {
             // ok ok, lets coalesce
 
             // how much were we off by?  (so that we can sample down the measured values)
-            double periodFactor = measuredPeriod / (double)_period;
+            float periodFactor = measuredPeriod / (float)_period;
             _lastTotalValue = _currentTotalValue / periodFactor;
             _lastEventCount = (int) (0.499999 + (_currentEventCount / periodFactor));
-            _lastTotalEventTime = (long) (_currentTotalEventTime / periodFactor);
+            _lastTotalEventTime = (int) (_currentTotalEventTime / periodFactor);
             _lastCoalesceDate = now;
             if (_currentEventCount == 0)
                 correctedTotalValue = 0;
@@ -244,7 +244,7 @@ public class Rate {
                 _extremeTotalEventTime = _lastTotalEventTime;
             }
 
-            _currentTotalValue = 0.0D;
+            _currentTotalValue = 0.0f;
             _currentEventCount = 0;
             _currentTotalEventTime = 0;
         }
@@ -505,16 +505,16 @@ public class Rate {
         _period = PersistenceHelper.getInt(props, prefix, ".period");
         _creationDate = PersistenceHelper.getLong(props, prefix, ".creationDate");
         _lastCoalesceDate = PersistenceHelper.getLong(props, prefix, ".lastCoalesceDate");
-        _currentTotalValue = PersistenceHelper.getDouble(props, prefix, ".currentTotalValue");
+        _currentTotalValue = (float)PersistenceHelper.getDouble(props, prefix, ".currentTotalValue");
         _currentEventCount = PersistenceHelper.getInt(props, prefix, ".currentEventCount");
-        _currentTotalEventTime = PersistenceHelper.getLong(props, prefix, ".currentTotalEventTime");
-        _lastTotalValue = PersistenceHelper.getDouble(props, prefix, ".lastTotalValue");
+        _currentTotalEventTime = (int)PersistenceHelper.getLong(props, prefix, ".currentTotalEventTime");
+        _lastTotalValue = (float)PersistenceHelper.getDouble(props, prefix, ".lastTotalValue");
         _lastEventCount = PersistenceHelper.getInt(props, prefix, ".lastEventCount");
-        _lastTotalEventTime = PersistenceHelper.getLong(props, prefix, ".lastTotalEventTime");
-        _extremeTotalValue = PersistenceHelper.getDouble(props, prefix, ".extremeTotalValue");
+        _lastTotalEventTime = (int)PersistenceHelper.getLong(props, prefix, ".lastTotalEventTime");
+        _extremeTotalValue = (float)PersistenceHelper.getDouble(props, prefix, ".extremeTotalValue");
         _extremeEventCount = PersistenceHelper.getInt(props, prefix, ".extremeEventCount");
-        _extremeTotalEventTime = PersistenceHelper.getLong(props, prefix, ".extremeTotalEventTime");
-        _lifetimeTotalValue = PersistenceHelper.getDouble(props, prefix, ".lifetimeTotalValue");
+        _extremeTotalEventTime = (int)PersistenceHelper.getLong(props, prefix, ".extremeTotalEventTime");
+        _lifetimeTotalValue = (float)PersistenceHelper.getDouble(props, prefix, ".lifetimeTotalValue");
         _lifetimeEventCount = PersistenceHelper.getLong(props, prefix, ".lifetimeEventCount");
         _lifetimeTotalEventTime = PersistenceHelper.getLong(props, prefix, ".lifetimeTotalEventTime");
 
diff --git a/core/java/src/net/i2p/stat/RateStat.java b/core/java/src/net/i2p/stat/RateStat.java
index 512fd64027a9d6a5aec692aff2f800ed4f05301a..018ef1973404de23a9806a6bdbe405fa6873dde1 100644
--- a/core/java/src/net/i2p/stat/RateStat.java
+++ b/core/java/src/net/i2p/stat/RateStat.java
@@ -184,7 +184,7 @@ public class RateStat {
         buf.append("# Rate: ").append(_groupName).append(": ").append(_statName).append(NL);
         buf.append("# ").append(_description).append(NL);
         buf.append("# ").append(NL).append(NL);
-        out.write(buf.toString().getBytes());
+        out.write(buf.toString().getBytes("UTF-8"));
         buf.setLength(0);
         for (Rate r: _rates){
             buf.append("#######").append(NL);
@@ -193,7 +193,7 @@ public class RateStat {
             buf.append(NL);
             String curPrefix = prefix + "." + DataHelper.formatDuration(r.getPeriod());
             r.store(curPrefix, buf);
-            out.write(buf.toString().getBytes());
+            out.write(buf.toString().getBytes("UTF-8"));
             buf.setLength(0);
         }
     }
diff --git a/core/java/src/net/i2p/stat/StatManager.java b/core/java/src/net/i2p/stat/StatManager.java
index f0f59a1b911675f4a1e78a4acfd8d10f7b3c9ce9..7f6d9859b6aef0ff5a8825c87ebdcff93574e883 100644
--- a/core/java/src/net/i2p/stat/StatManager.java
+++ b/core/java/src/net/i2p/stat/StatManager.java
@@ -1,5 +1,7 @@
 package net.i2p.stat;
 
+import java.io.IOException;
+import java.io.OutputStream;
 import java.text.Collator;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -247,4 +249,18 @@ public class StatManager {
     public boolean ignoreStat(String statName) {
         return _context.isRouterContext() && !_context.getBooleanProperty(PROP_STAT_FULL);
     }
+    
+    /**
+     * Serializes all Frequencies and Rates to the provided OutputStream
+     * @param out to write to
+     * @param prefix to use when serializing
+     * @throws IOException if something goes wrong
+     * @since 0.9.23
+     */
+    public void store(OutputStream out, String prefix) throws IOException {
+        for (FrequencyStat fs : _frequencyStats.values())
+            fs.store(out, prefix);
+        for (RateStat rs : _rateStats.values())
+            rs.store(out,prefix);
+    }
 }
diff --git a/core/java/src/net/i2p/update/UpdateManager.java b/core/java/src/net/i2p/update/UpdateManager.java
index ce18c59ee976685050c636427d578604aa4495e8..57065dcb3a9c206f45153c074aaad5654b681e0b 100644
--- a/core/java/src/net/i2p/update/UpdateManager.java
+++ b/core/java/src/net/i2p/update/UpdateManager.java
@@ -121,6 +121,114 @@ public interface UpdateManager {
      *  @return true if valid, false if corrupt
      */
     public boolean notifyComplete(UpdateTask task, String actualVersion, File file);
+    
+    /**
+     *  Is an update available?
+     *  Blocking.
+     *  An available update may still have a constraint or lack sources.
+     *  @param type the UpdateType of this request
+     *  @return new version or null if nothing newer is available
+     *  @since 0.9.21
+     */
+    public String checkAvailable(UpdateType type);
+    
+    /**
+     *  Is an update available?
+     *  Blocking.
+     *  An available update may still have a constraint or lack sources.
+     *  @param type the UpdateType of this request
+     *  @param maxWait max time to block
+     *  @return new version or null if nothing newer is available
+     *  @since 0.9.21
+     */
+    public String checkAvailable(UpdateType type, long maxWait);
+    
+    /**
+     *  Is an update available?
+     *  Blocking.
+     *  An available update may still have a constraint or lack sources.
+     *  @param type the UpdateType of this request
+     *  @param maxWait max time to block
+     *  @param id id of this request
+     *  @return new version or null if nothing newer is available
+     *  @since 0.9.21
+     */
+    public String checkAvailable(UpdateType type, String id, long maxWait);
+    
+    /**
+     *  Is a router update being downloaded?
+     *  @return true iff router update is being downloaded
+     *  @since 0.9.21
+     */
+    public boolean isUpdateInProgress();
+    
+    /**
+     *  Is a router update being downloaded?
+     *  @param type the UpdateType of this request
+     *  @return true iff router update is being downloaded
+     *  @since 0.9.21
+     */
+    public boolean isUpdateInProgress(UpdateType type);
+    
+    /**
+     *  Is a router update being downloaded?
+     *  @param type the UpdateType of this request
+     *  @param id of this request
+     *  @return true iff router update is being downloaded
+     *  @since 0.9.21
+     */
+    public boolean isUpdateInProgress(UpdateType type, String id);
+
+    /**
+     *  Non-blocking. Does not check.
+     *  Fails if check or update already in progress.
+     *  If returns true, then call isUpdateInProgress() in a loop
+     *  @param type the UpdateType of this request   
+     *  @return true if task started
+     *  @since 0.9.21
+     */
+    public boolean update(UpdateType type);
+    
+    /**
+     *  Non-blocking. Does not check.
+     *  Fails if check or update already in progress.
+     *  If returns true, then call isUpdateInProgress() in a loop
+     *  @param type the UpdateType of this request   
+     *  @param id id of this request
+     *  @return true if task started
+     *  @since 0.9.21
+     */
+    public boolean update(UpdateType type, String id);
+    
+    /**
+     *  Non-blocking. Does not check.
+     *  Fails if check or update already in progress.
+     *  If returns true, then call isUpdateInProgress() in a loop
+     *  @param type the UpdateType of this request   
+     *  @param maxTime not honored by all Updaters
+     *  @return true if task started
+     *  @since 0.9.21
+     */
+    public boolean update(UpdateType type, long maxTime);
+    
+    /**
+     *  Non-blocking. Does not check.
+     *  Fails if check or update already in progress.
+     *  If returns true, then call isUpdateInProgress() in a loop
+     *  @param type the UpdateType of this request   
+     *  @param maxTime not honored by all Updaters
+     *  @param id id of this request
+     *  @return true if task started
+     *  @since 0.9.21
+     */
+    public boolean update(UpdateType type, String id, long maxTime);
+    
+    /**
+     *  The status on any update current or last finished.
+     *  @return status or ""
+     *  @since 0.9.21
+     */
+    public String getStatus();
 
     /**
      *  For debugging
diff --git a/core/java/src/net/i2p/util/Addresses.java b/core/java/src/net/i2p/util/Addresses.java
index d522167f446bb1782972244b020a4b96f2e6876a..e4a78cc37dd80a7c27df4a64114ea4c3c4cedb11 100644
--- a/core/java/src/net/i2p/util/Addresses.java
+++ b/core/java/src/net/i2p/util/Addresses.java
@@ -15,6 +15,8 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
+import org.apache.http.conn.util.InetAddressUtils;
+
 import net.i2p.I2PAppContext;
 
 /**
@@ -229,10 +231,10 @@ public abstract class Addresses {
         I2PAppContext ctx = I2PAppContext.getCurrentContext();
         if (ctx != null && ctx.isRouterContext()) {
             long maxMemory = SystemVersion.getMaxMemory();
-            long min = 128;
+            long min = 256;
             long max = 4096;
-            // 512 nominal for 128 MB
-            size = (int) Math.max(min, Math.min(max, 1 + (maxMemory / (256*1024))));
+            // 1024 nominal for 128 MB
+            size = (int) Math.max(min, Math.min(max, 1 + (maxMemory / (128*1024))));
         } else {
             size = 32;
         }
@@ -260,12 +262,9 @@ public abstract class Addresses {
         }
         if (rv == null) {
             try {
-                boolean isIPv4 = host.replaceAll("[0-9\\.]", "").length() == 0;
-                if (isIPv4 && host.replaceAll("[0-9]", "").length() != 3)
-                    return null;
                 rv = InetAddress.getByName(host).getAddress();
-                if (isIPv4 ||
-                    host.replaceAll("[0-9a-fA-F:]", "").length() == 0) {
+                if (InetAddressUtils.isIPv4Address(host) ||
+                    InetAddressUtils.isIPv6Address(host)) {
                     synchronized (_IPAddress) {
                         _IPAddress.put(host, rv);
                     }
diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java
index c31184dbddb9098d7a66b61a153904cfcc245f35..88cae89fea821082244584165adcbaefb8918249 100644
--- a/core/java/src/net/i2p/util/EepGet.java
+++ b/core/java/src/net/i2p/util/EepGet.java
@@ -24,6 +24,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import gnu.getopt.Getopt;
 
@@ -312,22 +314,52 @@ public class EepGet {
             System.exit(1);
     }
 
+    /**
+     * Parse URL for a viable filename.
+     * 
+     * @param   url  a URL giving the location of an online resource
+     * @return       a filename to save the resource as on local filesystem
+     */
     public static String suggestName(String url) {
-        int last = url.lastIndexOf('/');
-        if ((last < 0) || (url.lastIndexOf('#') > last))
-            last = url.lastIndexOf('#');
-        if ((last < 0) || (url.lastIndexOf('?') > last))
-            last = url.lastIndexOf('?');
-        if ((last < 0) || (url.lastIndexOf('=') > last))
-            last = url.lastIndexOf('=');
-
-        String name = null;
-        if (last >= 0)
-            name = sanitize(url.substring(last+1));
-        if ( (name != null) && (name.length() > 0) )
-            return name;
-        else
-            return sanitize(url);
+        URL nameURL = null;  // URL object
+        String name;         // suggested name
+
+        try {
+            nameURL = new URL(url);
+        } catch (MalformedURLException e) {
+            System.err.println("Please enter a properly formed URL.");
+            System.exit(1);
+        }
+
+        String path = nameURL.getPath();  // discard any URI queries
+
+        // if no file specified, eepget scrapes webpage - use domain as name
+        Pattern slashes = Pattern.compile("/+");
+        Matcher matcher = slashes.matcher(path);
+        // if empty path or just /'s - nameURL lets multiple /'s through
+        if (path.equals("") || matcher.matches()) {
+            name = sanitize(nameURL.getAuthority());
+        // if path specified
+        } else {
+            int last = path.lastIndexOf('/');
+            // if last / not at end of string, use following string as filename
+            if (last != path.length() - 1) {
+                name = sanitize(path.substring(last + 1));
+            // if there's a trailing / group look for previous / as trim point
+            } else {
+                int i = 1;
+                int slash;
+                while (true) {
+                    slash = path.lastIndexOf('/', last - i);
+                    if (slash != last - i) {
+                        break;
+                    }
+                    i += 1;
+                }
+                name = sanitize(path.substring(slash + 1, path.length() - i));
+            }
+        }
+        return name;
     }
 
 
@@ -755,6 +787,8 @@ public class EepGet {
         Thread pusher = null;
         _decompressException = null;
         if (_isGzippedResponse) {
+            if (_log.shouldInfo())
+                _log.info("Gzipped response, starting decompressor");
             PipedInputStream pi = BigPipedInputStream.getInstance();
             PipedOutputStream po = new PipedOutputStream(pi);
             pusher = new I2PAppThread(new Gunzipper(pi, _out), "EepGet Decompressor");
@@ -1096,7 +1130,7 @@ public class EepGet {
      */
     private int handleStatus(String line) {
         if (_log.shouldLog(Log.DEBUG))
-            _log.debug("Status line: [" + line + "]");
+            _log.debug("Status line: [" + line.trim() + "]");
         String[] toks = line.split(" ", 3);
         if (toks.length < 2) {
             if (_log.shouldLog(Log.WARN))
@@ -1160,17 +1194,13 @@ public class EepGet {
         lookahead[1] = lookahead[2];
         lookahead[2] = (byte)cur;
     }
+
     private static boolean isEndOfHeaders(byte lookahead[]) {
-        byte first = lookahead[0];
-        byte second = lookahead[1];
-        byte third = lookahead[2];
-        return (isNL(second) && isNL(third)) || //   \n\n
-               (isNL(first) && isNL(third));    // \n\r\n
+        return lookahead[2] == NL &&
+               (lookahead[0] == NL || lookahead[1] == NL);    // \n\n or \n\r\n
     }
 
-    /** we ignore any potential \r, since we trim it on write anyway */
     private static final byte NL = '\n';
-    private static boolean isNL(byte b) { return (b == NL); }
 
     /**
      *  @param timeout may be null
@@ -1315,7 +1345,8 @@ public class EepGet {
             buf.append("Content-length: ").append(_postData.length()).append("\r\n");
         // This will be replaced if we are going through I2PTunnelHTTPClient
         buf.append("Accept-Encoding: ");
-        if ((!_shouldProxy) &&
+        // as of 0.9.23, the proxy passes the Accept-Encoding header through
+        if (  /* (!_shouldProxy) && */
             // This is kindof a hack, but if we are downloading a gzip file
             // we don't want to transparently gunzip it and save it as a .gz file.
             (!path.endsWith(".gz")) && (!path.endsWith(".tgz")))
diff --git a/core/java/src/net/i2p/util/FileUtil.java b/core/java/src/net/i2p/util/FileUtil.java
index eeca4416feba3bcd2a644d4e41b8de995e795c23..296030818d892924a31b11d5738f755661470e40 100644
--- a/core/java/src/net/i2p/util/FileUtil.java
+++ b/core/java/src/net/i2p/util/FileUtil.java
@@ -300,9 +300,9 @@ public class FileUtil {
         if (!_failedOracle) {
             try {
                 Class<?> p200 = Class.forName("java.util.jar.Pack200", true, ClassLoader.getSystemClassLoader());
-                Method newUnpacker = p200.getMethod("newUnpacker", (Class[]) null);
+                Method newUnpacker = p200.getMethod("newUnpacker");
                 Object unpacker = newUnpacker.invoke(null,(Object[])  null);
-                Method unpack = unpacker.getClass().getMethod("unpack", new Class[] {InputStream.class, JarOutputStream.class});
+                Method unpack = unpacker.getClass().getMethod("unpack", InputStream.class, JarOutputStream.class);
                 // throws IOException
                 unpack.invoke(unpacker, new Object[] {in, out});
                 return;
@@ -321,9 +321,9 @@ public class FileUtil {
         if (!_failedApache) {
             try {
                 Class<?> p200 = Class.forName("org.apache.harmony.unpack200.Archive", true, ClassLoader.getSystemClassLoader());
-                Constructor<?> newUnpacker = p200.getConstructor(new Class[] {InputStream.class, JarOutputStream.class});
-                Object unpacker = newUnpacker.newInstance(new Object[] {in, out});
-                Method unpack = unpacker.getClass().getMethod("unpack", (Class[]) null);
+                Constructor<?> newUnpacker = p200.getConstructor(InputStream.class, JarOutputStream.class);
+                Object unpacker = newUnpacker.newInstance(in, out);
+                Method unpack = unpacker.getClass().getMethod("unpack");
                 // throws IOException or Pack200Exception
                 unpack.invoke(unpacker, (Object[]) null);
                 return;
diff --git a/core/java/src/net/i2p/util/FortunaRandomSource.java b/core/java/src/net/i2p/util/FortunaRandomSource.java
index 340b836a4694fda43bc87c9fdeda50177032fcad..9688e87648588f6bc01a199a3d339ebb59365450 100644
--- a/core/java/src/net/i2p/util/FortunaRandomSource.java
+++ b/core/java/src/net/i2p/util/FortunaRandomSource.java
@@ -262,8 +262,14 @@ public class FortunaRandomSource extends RandomSource implements EntropyHarveste
     /** reseed the fortuna */
     @Override
     public void feedEntropy(String source, byte[] data, int offset, int len) {
-        synchronized(_fortuna) {
-            _fortuna.addRandomBytes(data, offset, len);
+        try {
+            synchronized(_fortuna) {
+                _fortuna.addRandomBytes(data, offset, len);
+            }
+        } catch (Exception e) {
+            // AIOOBE seen, root cause unknown, ticket #1576
+            Log log = _context.logManager().getLog(FortunaRandomSource.class);
+            log.warn("feedEntropy()", e);
         }
     }
     
diff --git a/core/java/src/net/i2p/util/HexDump.java b/core/java/src/net/i2p/util/HexDump.java
index 0d56d2f981c1c691bad35c1a3541acc9c8b3b359..9765f3317b0c5c79659a9c2aa82ba18757865e82 100644
--- a/core/java/src/net/i2p/util/HexDump.java
+++ b/core/java/src/net/i2p/util/HexDump.java
@@ -13,6 +13,8 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 
+import net.i2p.data.DataHelper;
+
 /**
  * Hexdump class (well, it's actually a namespace with some functions,
  * but let's stick with java terminology :-).  These methods generate
@@ -25,7 +27,7 @@ public class HexDump {
 
     private static final int FORMAT_OFFSET_PADDING = 8;
     private static final int FORMAT_BYTES_PER_ROW = 16;
-    private static final byte[] HEXCHARS = "0123456789abcdef".getBytes();
+    private static final byte[] HEXCHARS = DataHelper.getASCII("0123456789abcdef");
 
     /**
      * Dump a byte array in a String.
@@ -37,11 +39,10 @@ public class HexDump {
 
         try {
             dump(data, 0, data.length, out);
+            return out.toString("ISO-8859-1");
         } catch (IOException e) {
-            e.printStackTrace();
+            throw new RuntimeException("no 8859?", e);
         }
-
-        return out.toString();
     }
 
     /**
@@ -56,11 +57,10 @@ public class HexDump {
 
         try {
             dump(data, off, len, out);
+            return out.toString("ISO-8859-1");
         } catch (IOException e) {
-            e.printStackTrace();
+            throw new RuntimeException("no 8859?", e);
         }
-
-        return out.toString();
     }
 
     /**
@@ -91,9 +91,10 @@ public class HexDump {
             hexoff = Integer.toString(dumpoff, 16);
             hexofflen = hexoff.length();
             for (i = 0; i < FORMAT_OFFSET_PADDING - hexofflen; ++i) {
-                hexoff = "0" + hexoff;
+                out.write('0');
             }
-            out.write((hexoff + " ").getBytes());
+            out.write(DataHelper.getASCII(hexoff));
+            out.write(' ');
 
             // Bytes to be printed in the current line
             nextbytes = (FORMAT_BYTES_PER_ROW < (end - dumpoff) ? FORMAT_BYTES_PER_ROW : (end - dumpoff));
@@ -101,15 +102,15 @@ public class HexDump {
             for (i = 0; i < FORMAT_BYTES_PER_ROW; ++i) {
                 // Put two spaces to separate 8-bytes blocks
                 if ((i % 8) == 0) {
-                    out.write(" ".getBytes());
+                    out.write(' ');
                 }
                 if (i >= nextbytes) {
-                    out.write("   ".getBytes());
+                    out.write(DataHelper.getASCII("   "));
                 } else {
                     val = data[dumpoff + i] & 0xff;
                     out.write(HEXCHARS[val >>> 4]);
                     out.write(HEXCHARS[val & 0xf]);
-                    out.write(" ".getBytes());
+                    out.write(' ');
                 }
             }
 
@@ -117,19 +118,32 @@ public class HexDump {
 
             for (i = 0; i < FORMAT_BYTES_PER_ROW; ++i) {
                 if (i >= nextbytes) {
-                    out.write(" ".getBytes());
+                    out.write(' ');
                 } else {
                     val = data[i + dumpoff];
                     // Is it a printable character?
                     if ((val > 31) && (val < 127)) {
                         out.write(val);
                     } else {
-                        out.write(".".getBytes());
+                        out.write('.');
                     }
                 }
             }
 
-            out.write("|\n".getBytes());
+            out.write('|');
+            out.write('\n');
         }
     }
-}
\ No newline at end of file
+
+    /**
+     *  @since 0.9.21
+     */
+/****
+    public static void main(String[] args) {
+        byte[] b = new byte[9993];
+        RandomSource.getInstance().nextBytes(b);
+        System.out.println(dump(b));
+        System.out.println(dump("test test test abcde xyz !!!".getBytes()));
+    }
+****/
+}
diff --git a/core/java/src/net/i2p/util/I2PAppThread.java b/core/java/src/net/i2p/util/I2PAppThread.java
index da291d210431c9eb68710deb97f6f48774510b52..ebbe6c06e1a55cf6da2905876f95a95cc78fb846 100644
--- a/core/java/src/net/i2p/util/I2PAppThread.java
+++ b/core/java/src/net/i2p/util/I2PAppThread.java
@@ -14,10 +14,13 @@ import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 /**
- * Like I2PThread but with per-thread OOM listeners,
+ * Like {@link I2PThread} but with per-thread OOM listeners,
  * rather than a static router-wide listener list,
  * so that an OOM in an app won't call the router listener
  * to shutdown the whole router.
+ *
+ * This is preferred for application use.
+ * See {@link I2PThread} for features.
  */
 public class I2PAppThread extends I2PThread {
 
@@ -38,9 +41,17 @@ public class I2PAppThread extends I2PThread {
     public I2PAppThread(Runnable r, String name) {
         super(r, name);
     }
+
     public I2PAppThread(Runnable r, String name, boolean isDaemon) {
         super(r, name, isDaemon);
     }
+
+    /**
+     *  @since 0.9.23
+     */
+    public I2PAppThread(ThreadGroup group, Runnable r, String name) {
+        super(group, r, name);
+    }
     
     @Override
     protected void fireOOM(OutOfMemoryError oom) {
diff --git a/core/java/src/net/i2p/util/I2PSSLSocketFactory.java b/core/java/src/net/i2p/util/I2PSSLSocketFactory.java
index 6c149252bbcb4f76e6be8ca61940d69259e5719f..774415f4dfb71d52d5b2c48c6fc2d7c063025bcd 100644
--- a/core/java/src/net/i2p/util/I2PSSLSocketFactory.java
+++ b/core/java/src/net/i2p/util/I2PSSLSocketFactory.java
@@ -204,7 +204,15 @@ public class I2PSSLSocketFactory {
         "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
         "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
         "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
-        "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"
+        "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
+        // following is disabled because it is weak
+        // see e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=1107787
+        "TLS_DHE_DSS_WITH_AES_128_CBC_SHA"
+        // ??? "TLS_DHE_DSS_WITH_AES_256_CBC_SHA"
+        //
+        //  NOTE:
+        //  If you add anything here, please also add to installer/resources/eepsite/jetty-ssl.xml
+        //
     }));
 
     /**
@@ -284,7 +292,7 @@ public class I2PSSLSocketFactory {
             host.equals("localhost") ||
             host.equals("127.0.0.1") ||
             host.equals("::1") ||
-            host.equals("0:0:0:0:0:0:0::1")) {
+            host.equals("0:0:0:0:0:0:0:1")) {
             if (log.shouldWarn())
                 log.warn("Skipping hostname validation for " + host);
             return;
@@ -301,7 +309,6 @@ public class I2PSSLSocketFactory {
             // is not a viable option because the default HostnameVerifier expects to only be called
             // in the case that there is a mismatch (and therefore always returns false) while some
             // of the AsyncHttpClient providers (e.g. Netty, the default) call it on all connections.
-            // in the case that there is a mismatch (and therefore always returns false) while some
             // To make matters worse, the check is not trivial (consider SAN and wildcard matching)
             // and is implemented in sun.security.util.HostnameChecker (a Sun internal proprietary API).
             // This leaves the developer in the position of either depending on an internal API or
diff --git a/core/java/src/net/i2p/util/I2PThread.java b/core/java/src/net/i2p/util/I2PThread.java
index 044b82f54c4e124a98538f71d9679ff830e38fdd..3c08e3639c7120ca165c8b4c2b0532fb5bb3b6f6 100644
--- a/core/java/src/net/i2p/util/I2PThread.java
+++ b/core/java/src/net/i2p/util/I2PThread.java
@@ -14,68 +14,63 @@ import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 /**
- * In case its useful later...
- * (e.g. w/ native programatic thread dumping, etc)
- *
+ * Preferred over {@link Thread} for all router uses.
+ * For applications, {@link I2PAppThread} is preferred.
+ * <p>
+ * Provides the following features:
+ * <ul>
+ * <li>Logging to wrapper log on unexpected termination in {@link #run()}.
+ * <li>Notification of OOM to registered listener (the router),
+ *     which will cause logging to the wrapper log and a router restart
+ * <li>Catching and logging "OOM" caused by thread limit in {@link #start()}
+ *     with distinct message, and does not call the OOM listener.
+ * <li>As of 0.9.21, initialization to NORM_PRIORITY
+ *     (not the priority of the creating thread).
+ * </ul>
  */
 public class I2PThread extends Thread {
-    /**
-     *  Non-static to avoid refs to old context in Android.
-     *  Probably should just remove all the logging though.
-     *  Logging removed, too much trouble with extra contexts
-     */
-    //private volatile Log _log;
+
     private static final Set<OOMEventListener> _listeners = new CopyOnWriteArraySet<OOMEventListener>();
-    //private String _name;
-    //private Exception _createdBy;
 
     public I2PThread() {
         super();
-        //if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
-        //    _createdBy = new Exception("Created by");
+        setPriority(NORM_PRIORITY);
     }
 
     public I2PThread(String name) {
         super(name);
-        //if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
-        //    _createdBy = new Exception("Created by");
+        setPriority(NORM_PRIORITY);
     }
 
     public I2PThread(Runnable r) {
         super(r);
-        //if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
-        //    _createdBy = new Exception("Created by");
+        setPriority(NORM_PRIORITY);
     }
 
     public I2PThread(Runnable r, String name) {
         super(r, name);
-        //if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
-        //    _createdBy = new Exception("Created by");
+        setPriority(NORM_PRIORITY);
     }
+
     public I2PThread(Runnable r, String name, boolean isDaemon) {
         super(r, name);
 	setDaemon(isDaemon);
-        //if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
-        //    _createdBy = new Exception("Created by");
+        setPriority(NORM_PRIORITY);
     }
     
     public I2PThread(ThreadGroup g, Runnable r) {
         super(g, r);
-        //if ( (_log == null) || (_log.shouldLog(Log.DEBUG)) )
-        //    _createdBy = new Exception("Created by");
+        setPriority(NORM_PRIORITY);
     }
 
-/****
-    private void log(int level, String msg) { log(level, msg, null); }
-
-    private void log(int level, String msg, Throwable t) {
-        // we cant assume log is created
-        if (_log == null) _log = new Log(I2PThread.class);
-        if (_log.shouldLog(level))
-            _log.log(level, msg, t);
+    /**
+     *  @since 0.9.23
+     */
+    public I2PThread(ThreadGroup group, Runnable r, String name) {
+        super(group, r, name);
+        setPriority(NORM_PRIORITY);
     }
-****/
-    
+
     /**
      *  Overridden to provide useful info to users on OOM, and to prevent
      *  shutting down the whole JVM for what is most likely not a heap issue.
@@ -101,19 +96,9 @@ public class I2PThread extends Thread {
     
     @Override
     public void run() {
-        //_name = Thread.currentThread().getName();
-        //log(Log.INFO, "New thread started" + (isDaemon() ? " (daemon): " : ": ") + _name, _createdBy);
         try {
             super.run();
         } catch (Throwable t) {
-          /****
-            try {
-                log(Log.CRIT, "Thread terminated unexpectedly: " + getName(), t);
-            } catch (Throwable woof) {
-                System.err.println("Died within the OOM itself");
-                t.printStackTrace();
-            }
-          ****/
             if (t instanceof OutOfMemoryError) {
                 fireOOM((OutOfMemoryError)t);
             } else {
@@ -121,18 +106,8 @@ public class I2PThread extends Thread {
                 t.printStackTrace();
             }
         }
-        // This creates a new I2PAppContext after it was deleted
-        // in Router.finalShutdown() via RouterContext.killGlobalContext()
-        //log(Log.INFO, "Thread finished normally: " + _name);
     }
     
-/****
-    protected void finalize() throws Throwable {
-        //log(Log.DEBUG, "Thread finalized: " + _name);
-        super.finalize();
-    }
-****/
-    
     protected void fireOOM(OutOfMemoryError oom) {
         for (OOMEventListener listener : _listeners)
             listener.outOfMemory(oom);
diff --git a/core/java/src/net/i2p/util/InternalSocket.java b/core/java/src/net/i2p/util/InternalSocket.java
index d2b4cb4580bdbf0f7520e7c028ca6c332c1d084c..6e7d3c8d03c7f35573b4d1b25ddabaa9a72c366b 100644
--- a/core/java/src/net/i2p/util/InternalSocket.java
+++ b/core/java/src/net/i2p/util/InternalSocket.java
@@ -68,7 +68,7 @@ public class InternalSocket extends Socket {
     }
 
     @Override
-    public void close() {
+    public synchronized void close() {
         try {
             if (_is != null) {
                 _is.close();
@@ -84,7 +84,7 @@ public class InternalSocket extends Socket {
     }
 
     @Override
-    public boolean isClosed() {
+    public synchronized boolean isClosed() {
         return _is == null || _os == null;
     }
 
diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java
index 85d948c5375f3d2b5a169a217689cd7ebda0479c..ca2476de8379d44f4c64047e7936fb38cdf8ae08 100644
--- a/core/java/src/net/i2p/util/LogManager.java
+++ b/core/java/src/net/i2p/util/LogManager.java
@@ -10,6 +10,7 @@ package net.i2p.util;
  */
 
 import java.io.File;
+import java.io.Flushable;
 import java.io.IOException;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
@@ -37,7 +38,7 @@ import net.i2p.data.DataHelper;
  * writes them where appropriate.
  * 
  */
-public class LogManager {
+public class LogManager implements Flushable {
     public final static String CONFIG_LOCATION_PROP = "loggerConfigLocation";
     public final static String FILENAME_OVERRIDE_PROP = "loggerFilenameOverride";
     public final static String CONFIG_LOCATION_DEFAULT = "logger.config";
@@ -762,7 +763,7 @@ public class LogManager {
 
     private static final AtomicInteger __id = new AtomicInteger();
 
-    private class ShutdownHook extends Thread {
+    private class ShutdownHook extends I2PAppThread {
         private final int _id;
         public ShutdownHook() {
             _id = __id.incrementAndGet();
diff --git a/core/java/src/net/i2p/util/LogRecordFormatter.java b/core/java/src/net/i2p/util/LogRecordFormatter.java
index d46a6ec7669680bb9fb0ee79fa03daa0c4d99cb8..05d04b92be711adc1606eba2c2329d4356b4cdeb 100644
--- a/core/java/src/net/i2p/util/LogRecordFormatter.java
+++ b/core/java/src/net/i2p/util/LogRecordFormatter.java
@@ -9,12 +9,13 @@ package net.i2p.util;
  *
  */
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.Date;
 
 import net.i2p.I2PAppContext;
+import net.i2p.data.DataHelper;
 
 /**
  * Render a log record according to the log manager's settings
@@ -71,16 +72,11 @@ class LogRecordFormatter {
         }
         buf.append(NL);
         if (rec.getThrowable() != null) {
-            ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
-            PrintWriter pw = new PrintWriter(baos, true);
+            StringWriter sw = new StringWriter(512);
+            PrintWriter pw = new PrintWriter(sw);
             rec.getThrowable().printStackTrace(pw);
-            try {
-                pw.flush();
-                baos.flush();
-            } catch (IOException ioe) { // nop
-            }
-            byte tb[] = baos.toByteArray();
-            buf.append(new String(tb));
+            pw.flush();
+            buf.append(sw.toString());
         }
         return buf.toString();
     }
diff --git a/core/java/src/net/i2p/util/LogWriterBase.java b/core/java/src/net/i2p/util/LogWriterBase.java
index 053cccdc60a8be1bc101810861359a94eb5aa4f6..b9b98e10d4e9723b4545d690fd29cafff0da9628 100644
--- a/core/java/src/net/i2p/util/LogWriterBase.java
+++ b/core/java/src/net/i2p/util/LogWriterBase.java
@@ -67,10 +67,12 @@ abstract class LogWriterBase implements Runnable {
 
     public void run() {
         _write = true;
+        // don't bother on Android
+        final boolean shouldReadConfig = !SystemVersion.isAndroid();
         try {
             while (_write) {
                 flushRecords();
-                if (_write)
+                if (_write && shouldReadConfig)
                     rereadConfig();
             }
         } catch (Exception e) {
@@ -145,7 +147,7 @@ abstract class LogWriterBase implements Runnable {
     private String dupMessage(int dupCount, LogRecord lastRecord, boolean reverse) {
         String arrows = reverse ? "&darr;&darr;&darr;" : "^^^";
         return LogRecordFormatter.getWhen(_manager, lastRecord) + ' ' + arrows + ' ' +
-               _(dupCount, "1 similar message omitted", "{0} similar messages omitted") + ' ' + arrows + '\n';
+               _t(dupCount, "1 similar message omitted", "{0} similar messages omitted") + ' ' + arrows + '\n';
     }
     
     private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
@@ -154,7 +156,7 @@ abstract class LogWriterBase implements Runnable {
      *  gettext
      *  @since 0.9.3
      */
-    private String _(int a, String b, String c) {
+    private String _t(int a, String b, String c) {
         return Translate.getString(a, b, c, _manager.getContext(), BUNDLE_NAME);
     }
 
diff --git a/core/java/src/net/i2p/util/PortMapper.java b/core/java/src/net/i2p/util/PortMapper.java
index b3c8e65e775f289e63e9e233b904392c0cc5c32b..e73399b19c73491d209c790600fff931765226d0 100644
--- a/core/java/src/net/i2p/util/PortMapper.java
+++ b/core/java/src/net/i2p/util/PortMapper.java
@@ -2,6 +2,7 @@ package net.i2p.util;
 
 import java.io.IOException;
 import java.io.Writer;
+import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -16,7 +17,7 @@ import net.i2p.I2PAppContext;
  * @since 0.8.12
  */
 public class PortMapper {
-    private final ConcurrentHashMap<String, Integer> _dir;
+    private final ConcurrentHashMap<String, InetSocketAddress> _dir;
 
     public static final String SVC_CONSOLE = "console";
     public static final String SVC_HTTPS_CONSOLE = "https_console";
@@ -32,12 +33,14 @@ public class PortMapper {
     public static final String SVC_BOB = "BOB";
     /** not necessary, already in config? */
     public static final String SVC_I2CP = "I2CP";
+    /** @since 0.9.23 */
+    public static final String SVC_I2CP_SSL = "I2CP-SSL";
 
     /**
      *  @param context unused for now
      */
     public PortMapper(I2PAppContext context) {
-        _dir = new ConcurrentHashMap<String, Integer>(8);
+        _dir = new ConcurrentHashMap<String, InetSocketAddress>(8);
     }
 
     /**
@@ -46,9 +49,19 @@ public class PortMapper {
      *  @return success, false if already registered
      */
     public boolean register(String service, int port) {
-        if (port <= 0)
+        return register(service, "127.0.0.1", port);
+    }
+
+    /**
+     *  Add the service
+     *  @param port > 0
+     *  @return success, false if already registered
+     *  @since 0.9.21
+     */
+    public boolean register(String service, String host, int port) {
+        if (port <= 0 || port > 65535)
             return false;
-        return _dir.putIfAbsent(service, Integer.valueOf(port)) == null;
+        return _dir.putIfAbsent(service, InetSocketAddress.createUnresolved(host, port)) == null;
     }
 
     /**
@@ -73,10 +86,24 @@ public class PortMapper {
      *  @return def if not registered
      */
     public int getPort(String service, int def) {
-        Integer port = _dir.get(service);
-        if (port == null)
+        InetSocketAddress ia = _dir.get(service);
+        if (ia == null)
+            return def;
+        return ia.getPort();
+    }
+
+    /**
+     *  Get the registered host for a service.
+     *  Will return "127.0.0.1" if the service was registered without a host.
+     *  @param def default
+     *  @return def if not registered
+     *  @since 0.9.21
+     */
+    public String getHost(String service, String def) {
+        InetSocketAddress ia = _dir.get(service);
+        if (ia == null)
             return def;
-        return port.intValue();
+        return ia.getHostName();
     }
 
     /**
@@ -84,11 +111,14 @@ public class PortMapper {
      *  @since 0.9.20
      */
     public void renderStatusHTML(Writer out) throws IOException {
-        List<String> services = new ArrayList(_dir.keySet());
-        out.write("<h2>Port Mapper</h2><table><tr><th>Service<th>Port\n");
+        List<String> services = new ArrayList<String>(_dir.keySet());
+        out.write("<h2>Port Mapper</h2><table><tr><th>Service<th>Host<th>Port\n");
         Collections.sort(services);
         for (String s : services) {
-            out.write("<tr><td>" + s + "<td>" + _dir.get(s) + '\n');
+            InetSocketAddress ia = _dir.get(s);
+            if (ia == null)
+                continue;
+            out.write("<tr><td>" + s + "<td>" + ia.getHostName() + "<td>" + ia.getPort() + '\n');
         }
         out.write("</table>\n");
     }
diff --git a/core/java/src/net/i2p/util/ResettableGZIPInputStream.java b/core/java/src/net/i2p/util/ResettableGZIPInputStream.java
index a25e54d6e8c0e1483a7de5d41af7dc2c4b26976c..645bd29f398b278c5af354fc3343dd69cb894b8f 100644
--- a/core/java/src/net/i2p/util/ResettableGZIPInputStream.java
+++ b/core/java/src/net/i2p/util/ResettableGZIPInputStream.java
@@ -110,7 +110,7 @@ public class ResettableGZIPInputStream extends InflaterInputStream {
             //if (_lookaheadStream.getEOFReached()) {
             if (inf.finished()) {
                 verifyFooter();
-                inf.reset(); // so it doesn't bitch about missing data...
+                inf.reset(); // so it doesn't complain about missing data...
                 _complete = true;
             }
             return read;
diff --git a/core/java/src/net/i2p/util/ShellCommand.java b/core/java/src/net/i2p/util/ShellCommand.java
index 70de62ea85783be2cb0778376e42a77958e6a226..955830fe1e0a71844d5d9ad29c1e8a36bf3312ab 100644
--- a/core/java/src/net/i2p/util/ShellCommand.java
+++ b/core/java/src/net/i2p/util/ShellCommand.java
@@ -51,7 +51,7 @@ public class ShellCommand {
      * 
      * @author hypercubus
      */
-    private class CommandThread extends Thread {
+    private class CommandThread extends I2PAppThread {
         private final boolean consumeOutput;
         private final Object shellCommand;
         private final Result result;
@@ -84,7 +84,7 @@ public class ShellCommand {
      * 
      * @author hypercubus
      */
-    private static class StreamConsumer extends Thread {
+    private static class StreamConsumer extends I2PAppThread {
         private final BufferedReader bufferedReader;
 
         public StreamConsumer(InputStream inputStream) {
@@ -115,7 +115,7 @@ public class ShellCommand {
      * 
      * @author hypercubus
      */
-    private static class StreamReader extends Thread {
+    private static class StreamReader extends I2PAppThread {
         private final BufferedReader bufferedReader;
 
         public StreamReader(InputStream inputStream) {
@@ -149,7 +149,7 @@ public class ShellCommand {
      * 
      * @author hypercubus
      */
-    private static class StreamWriter extends Thread {
+    private static class StreamWriter extends I2PAppThread {
         private final BufferedWriter bufferedWriter;
 
         public StreamWriter(OutputStream outputStream) {
diff --git a/core/java/src/net/i2p/util/SimpleTimer2.java b/core/java/src/net/i2p/util/SimpleTimer2.java
index ec4f2528db2f052fe9f9a027370e1366244d7678..e8dcc2fcbe8c03da0094fc0348edb056d71c5347 100644
--- a/core/java/src/net/i2p/util/SimpleTimer2.java
+++ b/core/java/src/net/i2p/util/SimpleTimer2.java
@@ -6,6 +6,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import net.i2p.I2PAppContext;
 
@@ -38,7 +39,7 @@ public class SimpleTimer2 {
     private static final int MAX_THREADS = 4;
     private final ScheduledThreadPoolExecutor _executor;
     private final String _name;
-    private volatile int _count;
+    private final AtomicInteger _count = new AtomicInteger();
     private final int _threads;
 
     /**
@@ -102,7 +103,7 @@ public class SimpleTimer2 {
             super.afterExecute(r, t);
             if (t != null) { // shoudn't happen, caught in RunnableEvent.run()
                 Log log = I2PAppContext.getGlobalContext().logManager().getLog(SimpleTimer2.class);
-                log.log(Log.CRIT, "wtf, event borked: " + r, t);
+                log.log(Log.CRIT, "event borked: " + r, t);
             }
         }
     }
@@ -110,18 +111,19 @@ public class SimpleTimer2 {
     private class CustomThreadFactory implements ThreadFactory {
         public Thread newThread(Runnable r) {
             Thread rv = Executors.defaultThreadFactory().newThread(r);
-            rv.setName(_name + ' ' + (++_count) + '/' + _threads);
+            rv.setName(_name + ' ' + _count.incrementAndGet() + '/' + _threads);
 // Uncomment this to test threadgrouping, but we should be all safe now that the constructor preallocates!
 //            String name = rv.getThreadGroup().getName();
 //            if(!name.equals("main")) {
 //                (new Exception("OWCH! DAMN! Wrong ThreadGroup `" + name +"', `" + rv.getName() + "'")).printStackTrace();
 //           }
             rv.setDaemon(true);
+            rv.setPriority(Thread.NORM_PRIORITY + 1);
             return rv;
         }
     }
 
-    private ScheduledFuture schedule(TimedEvent t, long timeoutMs) {
+    private ScheduledFuture<?> schedule(TimedEvent t, long timeoutMs) {
         return _executor.schedule(t, timeoutMs, TimeUnit.MILLISECONDS);
     }
     
@@ -164,7 +166,8 @@ public class SimpleTimer2 {
      * New code should use SimpleTimer2.TimedEvent.
      * 
      * @since 0.9.20
-     * @param timeoutMs run first and subsequent iterations of this event every timeoutMs ms
+     * @param timeoutMs run subsequent iterations of this event every timeoutMs ms, 5000 minimum
+     * @throws IllegalArgumentException if timeoutMs less than 5000
      */
     public void addPeriodicEvent(final SimpleTimer.TimedEvent event, final long timeoutMs) {
         addPeriodicEvent(event, timeoutMs, timeoutMs);
@@ -183,7 +186,8 @@ public class SimpleTimer2 {
      * 
      * @since 0.9.20
      * @param delay run the first iteration of this event after delay ms
-     * @param timeoutMs run subsequent iterations of this event every timeoutMs ms
+     * @param timeoutMs run subsequent iterations of this event every timeoutMs ms, 5000 minimum
+     * @throws IllegalArgumentException if timeoutMs less than 5000
      */
     public void addPeriodicEvent(final SimpleTimer.TimedEvent event, final long delay,  final long timeoutMs) {
         
@@ -245,7 +249,7 @@ public class SimpleTimer2 {
         private final SimpleTimer2 _pool;
         private int _fuzz;
         protected static final int DEFAULT_FUZZ = 3;
-        private ScheduledFuture _future; // _executor.remove() doesn't work so we have to use this
+        private ScheduledFuture<?> _future; // _executor.remove() doesn't work so we have to use this
                                          // ... and I expect cancelling this way is more efficient
 
         /** state of the current event.  All access should be under lock. */
@@ -254,6 +258,8 @@ public class SimpleTimer2 {
         private long _nextRun;
         /** whether this was scheduled during RUNNING state.  LOCKING: this */
         private boolean _rescheduleAfterRun;
+        /** whether this was cancelled during RUNNING state.  LOCKING: this */
+        private boolean _cancelAfterRun;
         
         /** must call schedule() later */
         public TimedEvent(SimpleTimer2 pool) {
@@ -286,12 +292,17 @@ public class SimpleTimer2 {
         public synchronized void schedule(long timeoutMs) {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Scheduling: " + this + " timeout = " + timeoutMs + " state: " + _state);
-            if (timeoutMs <= 0 && _log.shouldLog(Log.WARN))
+            if (timeoutMs <= 0) {
+                // streaming timers do call with timeoutMs == 0
+                if (timeoutMs < 0 && _log.shouldLog(Log.WARN))
+                    _log.warn("Timeout <= 0: " + this + " timeout = " + timeoutMs + " state: " + _state);
                 timeoutMs = 1; // otherwise we may execute before _future is updated, which is fine
                                // except it triggers 'early execution' warning logging
+            }
 
             // always set absolute time of execution
             _nextRun = timeoutMs + System.currentTimeMillis();
+            _cancelAfterRun = false;
             
             switch(_state) {
               case RUNNING:
@@ -352,11 +363,13 @@ public class SimpleTimer2 {
          * @param timeoutMs 
          */
         public synchronized void forceReschedule(long timeoutMs) {
-            cancel();
+            // don't cancel while running!
+            if (_state == TimedEventState.SCHEDULED)
+                cancel();
             schedule(timeoutMs);
         }
 
-        /** returns true if cancelled */
+        /** @return true if cancelled */
         public synchronized boolean cancel() {
             // always clear
             _rescheduleAfterRun = false;
@@ -365,7 +378,9 @@ public class SimpleTimer2 {
               case CANCELLED:  // fall through
               case IDLE: 
                 break; // my preference is to throw IllegalState here, but let it be.
-              case RUNNING:    // fall through
+              case RUNNING:
+                _cancelAfterRun = true;
+                return true;
               case SCHEDULED:
                 boolean cancelled = _future.cancel(false);
                 if (cancelled)
@@ -378,27 +393,38 @@ public class SimpleTimer2 {
         }
 
         public void run() {
+            try {
+                run2();
+            } catch (RuntimeException re) {
+                _log.error("timer error", re);
+                throw re;
+            }
+        }
+
+        private void run2() {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Running: " + this);
             long before = System.currentTimeMillis();
             long delay = 0;
             synchronized(this) {
                 if (_rescheduleAfterRun)
-                    throw new IllegalStateException("rescheduleAfterRun cannot be true here");
+                    throw new IllegalStateException(this + " rescheduleAfterRun cannot be true here");
                 
                 switch(_state) {
                   case CANCELLED: 
                     return; // goodbye
                   case IDLE:  // fall through
                   case RUNNING:
-                    throw new IllegalStateException("not possible to be in " + _state);
-                  case SCHEDULED: // proceed, switch to IDLE in case I need to reschedule
-                    _state = TimedEventState.IDLE;
+                    throw new IllegalStateException(this + " not possible to be in " + _state);
+                  case SCHEDULED:
+                    // proceed, will switch to IDLE to reschedule
                 }
                                                
                 // if I was rescheduled by the user, re-submit myself to the executor.
-                int difference = (int)(_nextRun - before); // careful with long uptimes
+                long difference = _nextRun - before; // careful with long uptimes
                 if (difference > _fuzz) {
+                    // proceed, switch to IDLE to reschedule
+                    _state = TimedEventState.IDLE;
                     schedule(difference); 
                     return;
                 }
@@ -411,12 +437,14 @@ public class SimpleTimer2 {
             if (_future != null)
                 delay = _future.getDelay(TimeUnit.MILLISECONDS);
             else if (_log.shouldLog(Log.WARN))
-                _log.warn(_pool + " wtf, no _future " + this);
+                _log.warn(_pool + " no _future " + this);
             // This can be an incorrect warning especially after a schedule(0)
-            if (_log.shouldLog(Log.WARN) && delay > 100)
-                _log.warn(_pool + " wtf, early execution " + delay + ": " + this);
-            else if (_log.shouldLog(Log.WARN) && delay < -1000)
-                _log.warn(" wtf, late execution " + (0 - delay) + ": " + this + _pool.debug());
+            if (_log.shouldWarn()) {
+                if (delay > 100)
+                    _log.warn(_pool + " early execution " + delay + ": " + this);
+                else if (delay < -1000)
+                    _log.warn(" late execution " + (0 - delay) + ": " + this + _pool.debug());
+            }
             try {
                 timeReached();
             } catch (Throwable t) {
@@ -426,22 +454,27 @@ public class SimpleTimer2 {
                     switch(_state) {
                       case SCHEDULED:  // fall through
                       case IDLE:
-                        throw new IllegalStateException("can't be " + _state);
+                        throw new IllegalStateException(this + " can't be " + _state);
                       case CANCELLED:
                         break; // nothing
                       case RUNNING: 
-                        _state = TimedEventState.IDLE; 
-                        // do we need to reschedule?
-                        if (_rescheduleAfterRun) {
-                            _rescheduleAfterRun = false;
-                            schedule(_nextRun - System.currentTimeMillis());
+                        if (_cancelAfterRun) {
+                            _cancelAfterRun = false;
+                            _state = TimedEventState.CANCELLED;
+                        } else {
+                            _state = TimedEventState.IDLE; 
+                            // do we need to reschedule?
+                            if (_rescheduleAfterRun) {
+                                _rescheduleAfterRun = false;
+                                schedule(_nextRun - System.currentTimeMillis());
+                            }
                         }
                     }
                 }
             }
             long time = System.currentTimeMillis() - before;
             if (time > 500 && _log.shouldLog(Log.WARN))
-                _log.warn(_pool + " wtf, event execution took " + time + ": " + this);
+                _log.warn(_pool + " event execution took " + time + ": " + this);
             if (_log.shouldLog(Log.INFO)) {
                  // this call is slow - iterates through a HashMap -
                  // would be better to have a local AtomicLong if we care
@@ -470,6 +503,7 @@ public class SimpleTimer2 {
         return _executor.getCompletedTaskCount();
     }
 
+    /** warning - slow */
     private String debug() {
         _executor.purge();  // Remove cancelled tasks from the queue so we get a good queue size stat
         return
@@ -490,10 +524,13 @@ public class SimpleTimer2 {
          * Schedule periodic event
          * 
          * @param delay run the first iteration of this event after delay ms
-         * @param timeoutMs run subsequent iterations of this event every timeoutMs ms
+         * @param timeoutMs run subsequent iterations of this event every timeoutMs ms, 5000 minimum
+         * @throws IllegalArgumentException if timeoutMs less than 5000
          */
         public PeriodicTimedEvent(SimpleTimer2 pool, long delay, long timeoutMs) {
             super(pool, delay);
+            if (timeoutMs < 5000)
+                throw new IllegalArgumentException("timeout minimum 5000");
             _timeoutMs = timeoutMs;
         }
         
diff --git a/core/java/src/net/i2p/util/SystemVersion.java b/core/java/src/net/i2p/util/SystemVersion.java
index 6650cf479704f27d54b483ba4c068fe2b6f785bd..3e5e56e7c30acd07ca70d0e0811e5fb572b29564 100644
--- a/core/java/src/net/i2p/util/SystemVersion.java
+++ b/core/java/src/net/i2p/util/SystemVersion.java
@@ -18,6 +18,8 @@ public abstract class SystemVersion {
     private static final boolean _isArm = System.getProperty("os.arch").startsWith("arm");
     private static final boolean _isX86 = System.getProperty("os.arch").contains("86") ||
                                           System.getProperty("os.arch").equals("amd64");
+    private static final boolean _isGentoo = System.getProperty("os.version").contains("gentoo") ||
+                                             System.getProperty("os.version").contains("hardened");  // Funtoo
     private static final boolean _isAndroid;
     private static final boolean _isApache;
     private static final boolean _isGNU;
@@ -27,6 +29,7 @@ public abstract class SystemVersion {
     private static final boolean _oneDotSix;
     private static final boolean _oneDotSeven;
     private static final boolean _oneDotEight;
+    private static final boolean _oneDotNine;
     private static final int _androidSDK;
 
     static {
@@ -62,10 +65,12 @@ public abstract class SystemVersion {
             _oneDotSix = _androidSDK >= 9;
             _oneDotSeven = _androidSDK >= 19;
             _oneDotEight = false;
+            _oneDotNine = false;
         } else {
             _oneDotSix = VersionComparator.comp(System.getProperty("java.version"), "1.6") >= 0;
             _oneDotSeven = _oneDotSix && VersionComparator.comp(System.getProperty("java.version"), "1.7") >= 0;
             _oneDotEight = _oneDotSeven && VersionComparator.comp(System.getProperty("java.version"), "1.8") >= 0;
+            _oneDotNine = _oneDotEight && VersionComparator.comp(System.getProperty("java.version"), "1.9") >= 0;
         }
     }
 
@@ -95,6 +100,13 @@ public abstract class SystemVersion {
         return _isGNU;
     }
 
+    /**
+     *  @since 0.9.23
+     */
+    public static boolean isGentoo() {
+        return _isGentoo;
+    }
+
     /**
      *  @since 0.9.8
      */
@@ -139,6 +151,15 @@ public abstract class SystemVersion {
         return _oneDotEight;
     }
 
+    /**
+     *
+     *  @return true if Java 1.9 or higher, false for Android.
+     *  @since 0.9.23
+     */
+    public static boolean isJava9() {
+        return _oneDotNine;
+    }
+
     /**
      * This isn't always correct.
      * http://stackoverflow.com/questions/807263/how-do-i-detect-which-kind-of-jre-is-installed-32bit-vs-64bit
diff --git a/core/java/src/net/i2p/util/Translate.java b/core/java/src/net/i2p/util/Translate.java
index d83036d02b01c26b566abbfb28f3423cfdea76d5..3b5ab1b5350ba82c5bbacb7d6d9828be3b74ea40 100644
--- a/core/java/src/net/i2p/util/Translate.java
+++ b/core/java/src/net/i2p/util/Translate.java
@@ -65,7 +65,7 @@ public abstract class Translate {
      *    The {0} will be replaced by the parameter.
      *    Single quotes must be doubled, i.e. ' -> '' in the string.
      *  @param o parameter, not translated.
-     *    To tranlslate parameter also, use _("foo {0} bar", _("baz"))
+     *    To tranlslate parameter also, use _t("foo {0} bar", _t("baz"))
      *    Do not double the single quotes in the parameter.
      *    Use autoboxing to call with ints, longs, floats, etc.
      */
diff --git a/core/java/src/net/i2p/util/TranslateReader.java b/core/java/src/net/i2p/util/TranslateReader.java
index bc26bbe59a3b232dad4184e6b8bc624445510cc3..171edd4a87e085519d88ea7546a10fbfd25b7a1a 100644
--- a/core/java/src/net/i2p/util/TranslateReader.java
+++ b/core/java/src/net/i2p/util/TranslateReader.java
@@ -351,7 +351,7 @@ public class TranslateReader extends FilterReader {
         public void tag(List<String> args) {
             if (args.size() <= 0)
                 return;
-            _out.print("\t_(");
+            _out.print("\t_t(");
             for (int i = 0; i < args.size(); i++) {
                 if (i > 0)
                     _out.print(", ");
@@ -373,6 +373,9 @@ public class TranslateReader extends FilterReader {
         }
     }
 
+    /**
+     *  Do not comment out, used to extract tags as a part of the build process.
+     */
     public static void main(String[] args) {
         try {
             if (args.length >= 2 && args[0].equals("test"))
diff --git a/core/java/src/net/metanotion/io/RandomAccessInterface.java b/core/java/src/net/metanotion/io/RandomAccessInterface.java
index fa382621c8332325e8162c1dca08727ee6dc03c4..1f3df6af654eda08f1912fea0fe824ab230ed16b 100644
--- a/core/java/src/net/metanotion/io/RandomAccessInterface.java
+++ b/core/java/src/net/metanotion/io/RandomAccessInterface.java
@@ -28,9 +28,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.io;
 
+import java.io.Closeable;
 import java.io.IOException;
 
-public interface RandomAccessInterface {
+public interface RandomAccessInterface extends Closeable {
 	public long getFilePointer() throws IOException;
 	public long length() throws IOException;
 	public int read() throws IOException;
diff --git a/core/java/src/net/metanotion/io/block/BlockFile.java b/core/java/src/net/metanotion/io/block/BlockFile.java
index f6ea7d63409ff7ef76129f4df03564ab00632d25..01870220489432d4d73ba242392ca9193661e9bd 100644
--- a/core/java/src/net/metanotion/io/block/BlockFile.java
+++ b/core/java/src/net/metanotion/io/block/BlockFile.java
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.io.block;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.io.RandomAccessFile;
@@ -64,7 +65,7 @@ import net.i2p.util.Log;
  * Pages are 1 KB and are numbered starting from 1.
  * e.g. the Metaindex skiplist is at offset 1024 bytes
  */
-public class BlockFile {
+public class BlockFile implements Closeable {
 	public static final int PAGESIZE = 1024;
 	public static final long OFFSET_MOUNTED = 20;
 	public final Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
diff --git a/core/java/src/net/metanotion/io/block/index/BSkipList.java b/core/java/src/net/metanotion/io/block/index/BSkipList.java
index 5eef949cf4a518a21f1feaed13853ccd5bfcaf73..3a2d8b599c68bf82b93c995ed806081beee3f918 100644
--- a/core/java/src/net/metanotion/io/block/index/BSkipList.java
+++ b/core/java/src/net/metanotion/io/block/index/BSkipList.java
@@ -28,6 +28,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.io.block.index;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.util.HashMap;
 
@@ -50,7 +51,7 @@ import net.i2p.util.Log;
  *
  * Always fits on one page.
  */
-public class BSkipList extends SkipList {
+public class BSkipList extends SkipList implements Closeable {
 	private static final long MAGIC = 0x536b69704c697374l;  // "SkipList"
 	public int firstSpanPage = 0;
 	public int firstLevelPage = 0;
diff --git a/core/java/src/net/metanotion/util/skiplist/SkipLevels.java b/core/java/src/net/metanotion/util/skiplist/SkipLevels.java
index e4665fc4b316cc4f48852d8a85714c6c0fa205f4..bd9da7ba16b1f821b3da6caeb943a4948d29df12 100644
--- a/core/java/src/net/metanotion/util/skiplist/SkipLevels.java
+++ b/core/java/src/net/metanotion/util/skiplist/SkipLevels.java
@@ -28,12 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.util.skiplist;
 
+import java.io.Flushable;
+
 import net.metanotion.io.block.BlockFile;
 
 import net.i2p.I2PAppContext;
 import net.i2p.util.Log;
 
-public class SkipLevels {
+public class SkipLevels implements Flushable {
 	/** We can't have more than 2**32 pages */
 	public static final int MAX_SIZE = 32;
 
diff --git a/core/java/src/net/metanotion/util/skiplist/SkipList.java b/core/java/src/net/metanotion/util/skiplist/SkipList.java
index 74e35f56ac7394725103038605d17cf6f9a5db76..6f44e9e23afc1f133b580aea751fe246e1ae4b6f 100644
--- a/core/java/src/net/metanotion/util/skiplist/SkipList.java
+++ b/core/java/src/net/metanotion/util/skiplist/SkipList.java
@@ -28,13 +28,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.util.skiplist;
 
+import java.io.Flushable;
 import java.util.Random;
 
 import net.i2p.util.RandomSource;
 
 //import net.metanotion.io.block.BlockFile;
 
-public class SkipList {
+public class SkipList implements Flushable {
 	/** the probability of each next higher level */
 	protected static final int P = 2;
 	private static final int MIN_SLOTS = 4;
diff --git a/core/java/src/net/metanotion/util/skiplist/SkipSpan.java b/core/java/src/net/metanotion/util/skiplist/SkipSpan.java
index ae2cc9ef7d86f7567d7ded293b525e597a3301fb..94210ebd4bc6d727b51322471761bb72cdacf588 100644
--- a/core/java/src/net/metanotion/util/skiplist/SkipSpan.java
+++ b/core/java/src/net/metanotion/util/skiplist/SkipSpan.java
@@ -28,9 +28,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 package net.metanotion.util.skiplist;
 
+import java.io.Flushable;
+
 //import net.metanotion.io.block.BlockFile;
 
-public class SkipSpan {
+public class SkipSpan implements Flushable {
 	/** This is actually limited by BlockFile.spanSize which is much smaller */
 	public static final int MAX_SIZE = 256;
 
diff --git a/core/java/test/junit/net/i2p/client/I2PClientTestSuite.java b/core/java/test/junit/net/i2p/client/I2PClientTestSuite.java
index 208ddf3517c0dbe26750f927989cda459e1ae787..fef8aed52c17ed468c8d02729f110d6420988b7e 100644
--- a/core/java/test/junit/net/i2p/client/I2PClientTestSuite.java
+++ b/core/java/test/junit/net/i2p/client/I2PClientTestSuite.java
@@ -11,6 +11,7 @@ package net.i2p.client;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 import net.i2p.client.datagram.DatagramTest;
+import net.i2p.client.impl.I2PSessionTest;
 
 /**
  * @author Comwiz
@@ -26,4 +27,4 @@ public class I2PClientTestSuite {
         
         return suite;
     }
-}
\ No newline at end of file
+}
diff --git a/core/java/test/junit/net/i2p/client/I2PSessionTest.java b/core/java/test/junit/net/i2p/client/impl/I2PSessionTest.java
similarity index 93%
rename from core/java/test/junit/net/i2p/client/I2PSessionTest.java
rename to core/java/test/junit/net/i2p/client/impl/I2PSessionTest.java
index a3a2cd603593db68acfd93c5b7bc6e08d01cc7e8..14fbab67635f495b70e06e28bcff7c12e163dc86 100644
--- a/core/java/test/junit/net/i2p/client/I2PSessionTest.java
+++ b/core/java/test/junit/net/i2p/client/impl/I2PSessionTest.java
@@ -1,4 +1,4 @@
-package net.i2p.client;
+package net.i2p.client.impl;
 /*
  * free (adj.): unencumbered; not under the control of others
  * Written by jrandom in 2003 and released into the public domain 
@@ -15,6 +15,10 @@ import java.util.Set;
 
 import junit.framework.TestCase;
 import net.i2p.I2PAppContext;
+import net.i2p.client.I2PClientFactory;
+import net.i2p.client.I2PSession;
+import net.i2p.client.I2PSessionException;
+import net.i2p.client.I2PSessionListener;
 import net.i2p.data.Destination;
 
 
@@ -87,4 +91,4 @@ public class I2PSessionTest extends TestCase implements I2PSessionListener{
         }
     }
     public void reportAbuse(I2PSession session, int severity){}
-}
\ No newline at end of file
+}
diff --git a/core/java/test/junit/net/i2p/data/KeyCertificateTest.java b/core/java/test/junit/net/i2p/data/KeyCertificateTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..032b3ef7009c14ddc8c05e1883ecb618a00f72ed
--- /dev/null
+++ b/core/java/test/junit/net/i2p/data/KeyCertificateTest.java
@@ -0,0 +1,45 @@
+package net.i2p.data;
+/*
+ * free (adj.): unencumbered; not under the control of others
+ * Written by str4d in 2015 and released into the public domain 
+ * with no warranty of any kind, either expressed or implied.  
+ * It probably won't make your computer catch on fire, or eat 
+ * your children, but it might.  Use at your own risk.
+ *
+ */
+
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
+import net.i2p.crypto.EncType;
+import net.i2p.crypto.SigType;
+import junit.framework.TestCase;
+
+/**
+ * @author str4d
+ */
+public class KeyCertificateTest extends TestCase {
+    private static final byte[] P256_PAYLOAD = new byte[] {
+                                    0, (byte) (SigType.ECDSA_SHA256_P256.getCode()),
+                                    0, (byte) (EncType.EC_P256.getCode())
+    };
+
+    private static final byte[] P521_PAYLOAD = new byte[] {
+                                    0, (byte) (SigType.ECDSA_SHA512_P521.getCode()),
+                                    0, (byte) (EncType.ELGAMAL_2048.getCode()),
+                                    0, 0, 0, 0
+    };
+
+    public void testFromP256Payload() throws DataFormatException {
+        KeyCertificate cert = new KeyCertificate(P256_PAYLOAD);
+        assertThat(cert.getSigTypeCode(), is(equalTo(SigType.ECDSA_SHA256_P256.getCode())));
+        assertThat(cert.getCryptoTypeCode(), is(equalTo(EncType.EC_P256.getCode())));
+        assertThat(cert.getExtraSigningKeyData(), is(nullValue()));
+    }
+
+    public void testFromEd25519Payload() throws DataFormatException {
+        KeyCertificate cert = new KeyCertificate(P521_PAYLOAD);
+        assertThat(cert.getSigTypeCode(), is(equalTo(SigType.ECDSA_SHA512_P521.getCode())));
+        assertThat(cert.getCryptoTypeCode(), is(equalTo(EncType.ELGAMAL_2048.getCode())));
+        assertThat(cert.getExtraSigningKeyData().length, is(4));
+    }
+}
\ No newline at end of file
diff --git a/debian/apparmor/i2p b/debian/apparmor/i2p
index 2b548fcb4c63a17e782283147c523549f2c04e96..8e06c9b7c78bcd50ce0fc16dbb8eec6407e0825c 100644
--- a/debian/apparmor/i2p
+++ b/debian/apparmor/i2p
@@ -5,10 +5,11 @@
   #include <abstractions/fonts>
   #include <abstractions/nameservice>
   #include <abstractions/ssl_certs>
-  #include <abstractions/user-tmp>
 
   network inet stream,
+  network inet dgram,
   network inet6 stream,
+  network inet6 dgram,
 
   # Needed by Java
   @{PROC}                                                 r,
@@ -51,11 +52,20 @@
   /usr/share/java/wrapper*.jar                            r,
 
   # 'm' is needed by the I2P-Bote plugin
-  /{,var/}tmp/                                            rwm,
-  owner /{,var/}tmp/**                                    rwklm,
+  /{,lib/live/mount/overlay/}tmp/                         rwm,
+  owner /{,lib/live/mount/overlay/}tmp/hsperfdata_i2psvc/ rwk,
+  owner /{,lib/live/mount/overlay/}tmp/hsperfdata_i2psvc/** rw,
+  owner /{,lib/live/mount/overlay/}tmp/wrapper*           rwk,
+  owner /{,lib/live/mount/overlay/}tmp/wrapper*/**        rw,
+  # Scrypt used by I2P-Bote
+  owner /{,lib/live/mount/overlay/}tmp/scrypt*            rwk,
+  owner /{,lib/live/mount/overlay/}tmp/scrypt*/**         rw,
+  owner /{,lib/live/mount/overlay/}tmp/i2p-daemon/        rwm,
+  owner /{,lib/live/mount/overlay/}tmp/i2p-daemon/**      rwklm,
 
   # Prevent spamming the logs
   deny /dev/tty                                           rw,
+  deny /{,lib/live/mount/overlay/}var/tmp/                r,
   deny @{PROC}/[0-9]*/fd/                                 r,
   deny /usr/sbin/                                         r,
   deny /var/cache/fontconfig/                             wk,
diff --git a/debian/changelog b/debian/changelog
index fcc4669a9cd6a73fb8931614c1e207251b2080e3..f0d4d62d908d27b8e79178b5f3a7e8d7363137c4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,116 @@
+i2p (0.9.21-2) unstable; urgency=medium
+
+  * Add exception to apparmor rules for scrypt, needed by I2P-Bote
+
+ -- Kill Your TV <killyourtv@i2pmail.org>  Sun, 02 Aug 2015 15:00:30 +0000
+
+i2p (0.9.21-1) unstable; urgency=medium
+
+  * New Upstream Version
+    - Add multisession support for dual-signature crypto on the same tunnels
+    - Use multisession for shared clients
+    - Increase default outbound bandwidth limit to 60 KBps
+    - Increase default maximum participating tunnels
+    - Floodfills will send database store acks directly if connected, for efficiency
+    - Set TCP keepalive on I2CP and SAM sockets
+    - More efficient decompression in HTTP proxy, use less threads
+    - Add support for fast extensions in i2psnark
+    - i2psnark only autostarts torrents that were running previously
+    - Add support for translated console news
+    - SSU fixes to compete better with NTCP for bandwidth when limited
+    - Fixes to prevent SSU stalls
+    - Wait for outbound tunnels before sending first leaseset to client, to
+      prevent dropping first message
+    - Clean up resources correctly when SAM stops
+    - Better error handling and notification when HTTP proxy is not running
+    - More i2ptunnel fixes at startup and shutdown of tunnels
+    - Fix total_size in i2psnark metadata message
+    - Restore dates in console news headers
+    - Several I2CP fixes
+    - Use same session for naming lookups in I2PSocketEepGet
+    - Increase max bandwidth to 16 MBps, add larger Bloom filter
+    - New floodfills will send their info to nearby floodfills to speed integration
+    - Apache Tomcat 6.0.44
+    - Translation updates
+  * Drop the following patches; included in 0.9.21:
+    - 0005-i2ptunnel-Don-t-connect-manager-to-router-in-constru.patch
+    - 0006-i2ptunnel-Don-t-call-startup-in-chained-constructor-.patch
+    - 0007-Define-I2PTunnelClientBase-stats-in-one-place.patch
+    - 0008-i2psnark-Fix-NPE-ticket-1602.patch
+
+
+ -- Kill Your TV <killyourtv@i2pmail.org>  Fri, 31 Jul 2015 20:01:42 +0000
+
+i2p (0.9.20-3) unstable; urgency=medium
+
+  * Add datagram exception to the apparmor profile
+
+ -- Kill Your TV <killyourtv@i2pmail.org>  Sat, 20 Jun 2015 11:22:28 +0000
+i2p (0.9.20-2) unstable; urgency=medium
+
+  [str4d]
+  * i2ptunnel: Don't connect manager to router in constructor (ticket #815)
+  * i2ptunnel: Don't call startup() in chained constructor (ticket #1593)
+  * Define I2PTunnelClientBase stats in one place
+
+  [killyourtv]
+  * Tighten apparmor rules for TMPDIR
+  * Add support for specifying limits to the initscript
+  * Fix NPE in I2PSnark (I2P Trac #1602)
+
+ -- Kill Your TV <killyourtv@i2pmail.org>  Sun, 14 Jun 2015 16:11:33 +0000
+
+i2p (0.9.20-1) unstable; urgency=medium
+
+  * New Upstream Version
+   - Add support for address book export
+   - Add support for SSL in HTTP server tunnel
+   - Allow class 'M' (64-128 KBps share bandwidth) to become floodfill
+   - Raise connection limits for new classes 'P' (512-2000 KBps share
+     bandwidth) and 'X' (over 2000 KBps)
+   - Add support for signed development builds
+   - Clock skew fixes
+   - Fixes and configuration for when IPv4 is firewalled but IPv6 still works
+   - Locking fixes for i2ptunnel clients to prevent hangs at startup
+   - Verify hostnames when reseeding
+   - Fix deletion of config files for deleted torrents in i2psnark
+   - Fix hangs fetching proxy.i2p local resources via Privoxy
+   - Fixes for duplicate shared clients
+   - Fix for occasional page truncation in HTTP client
+   - Fixes for handling corrupted SSU packets
+   - Fix closing of SAM sessions when I2P session closes
+   - Reduce NTCP threads
+   - Eliminate SimpleScheduler threads
+   - Add continent-based NTP servers as fallbacks for country-based ones
+   - Remove all default non-SSL reseed hosts
+   - Disable fallback to non-su3 reseeding
+   - Several fixes in streaming for better "loopback" performance,
+     may or may not help in real world
+   - Reduce latency in i2ptunnel
+   - Add a larger Bloom filter for very high bandwidth and memory
+   - Add Bloom filter warning when configured for high bandwidth but not
+     enough memory
+   - Reduce max netdb search depth to reduce floodfill load
+   - Improved header processing and error handling in i2ptunnel HTTP server
+   - Better error handling and user feedback when HTTP client tunnel is
+     disabled
+   - More changes to improve floodfill capacity
+   - New configuration for forcing IPv4 (only) to firewalled on /confignet
+   - New configuration for floodfill on /configadvanced
+   - Show separate IPv4 and IPv6 status in summary bar when appropriate
+   - Better handling of corrupt SSU packets
+   - Jetty 8.1.17.v20150415
+   - Translation updates
+   - Update GeoIP data (new installs and PPA only)
+
+ -- Kill Your TV <killyourtv@i2pmail.org>  Tue, 02 Jun 2015 18:36:42 +0000
+
+i2p (0.9.19-4) unstable; urgency=medium
+
+  * Re-enable systemd unit file
+
+ -- Kill Your TV <killyourtv@i2pmail.org>  Thu, 30 Apr 2015 22:54:56 +0000
+
 i2p (0.9.19-3) unstable; urgency=medium
 
   * A couple more apparmor profile tweaks
diff --git a/debian/control b/debian/control
index 6e24840d0dfd5111812ba41be4aa4c5958640242..afac9f505627deec43b2beef8346b7125f80792a 100644
--- a/debian/control
+++ b/debian/control
@@ -12,7 +12,7 @@ Build-Depends: debhelper (>= 7.0.50~)
  ,default-jdk | openjdk-7-jdk | openjdk-6-jdk
  ,dh-apparmor
  ,gettext
- ,libgmp3-dev
+ ,libgmp-dev (>= 2:5.0.5)
 # uncomment the next line for official builds
 # ,libservice-wrapper-java
  ,libcommons-logging-java
diff --git a/debian/i2p.init b/debian/i2p.init
index eac736f702d7c7905be37071fdcbe22b9ce1f25e..3b61904de0de8570d7add05cb3b94038c971179a 100755
--- a/debian/i2p.init
+++ b/debian/i2p.init
@@ -32,7 +32,6 @@ WRAPPERLOG="/var/log/i2p/wrapper.log"
 RUN_DAEMON="False"
 NICE=0
 I2PUSER="i2psvc"
-USE_AA="yes"
 
 I2P_ARGS="/etc/i2p/wrapper.config \
  wrapper.java.additional.1=-DloggerFilenameOverride=/var/log/i2p/log-router-@.txt \
@@ -67,6 +66,15 @@ if [ -z "$RUN_DAEMON" ]; then
     exit 1
 fi
 
+case "$CONFINE_WITH_APPARMOR" in
+    [NnFf]*)
+        USE_AA="no"
+        ;;
+    *)
+        USE_AA="yes"
+        ;;
+esac
+
 case "$RUN_DAEMON" in
     [NnFf]*)
         log_action_msg "$DESC daemon disabled in /etc/default/$NAME".
@@ -83,6 +91,7 @@ esac
 
 do_start()
 {
+    [ ! -z $ULIMIT ] && ulimit -n $ULIMIT
     start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null 2>&1 \
         || return 1
     [ -d $RUN ] || mkdir $RUN > /dev/null 2>&1
diff --git a/debian/i2p.postinst b/debian/i2p.postinst
index 328926704056ce969a45ac1c3dccc1f7c38cae36..d612902ba3313c8f6c3170b085b73dc560654107 100755
--- a/debian/i2p.postinst
+++ b/debian/i2p.postinst
@@ -6,7 +6,7 @@ I2PHOME=/var/lib/i2p
 I2PSYSUSER=i2psvc
 
 conffile="/etc/default/i2p"
-#systemdservice="/lib/systemd/system/i2p.service"
+systemdservice="/lib/systemd/system/i2p.service"
 
 # Source debconf library -- we have a Depends line
 # to make sure it is there...
@@ -25,6 +25,7 @@ case "$1" in
             echo >> $conffile
             echo "RUN_DAEMON=" >> $conffile
             echo "I2PUSER=" >> $conffile
+            echo "ULIMIT=" >> $conffile
             echo "CONFINE_WITH_APPARMOR=" >> $conffile
             echo "# The next value is also wrapper.java.maxmemory in /etc/i2p/wrapper.config" >> $conffile
             echo "MEMORYLIMIT=" >> $conffile
@@ -49,6 +50,8 @@ case "$1" in
             echo "I2PUSER=" >> $conffile
         test -z "$MEMORYLIMIT" || grep -Eq '^ *MEMORYLIMIT=' $conffile || \
             echo "MEMORYLIMIT=" >> $conffile
+        test -z "$ULIMIT" || grep -Eq '^ *ULIMIT=' $conffile || \
+            echo "ULIMIT=" >> $conffile
         test -z "$CONFINE_WITH_APPARMOR" || grep -Eq '^ *CONFINE_WITH_APPARMOR=' $conffile || \
             echo "CONFINE_WITH_APPARMOR=" >> $conffile
 
@@ -57,8 +60,6 @@ case "$1" in
             I2PUSER="i2psvc"
         fi
 
-
-
         sed -e "s/^ *RUN_DAEMON=.*/RUN_DAEMON=\"$RUN_DAEMON\"/" \
             -e "s/^ *I2PUSER=.*/I2PUSER=\"$I2PUSER\"/" \
             -e "s/^ *MEMORYLIMIT=.*/MEMORYLIMIT=\"$MEMORYLIMIT\"/" \
@@ -66,19 +67,19 @@ case "$1" in
             < $conffile > $conffile.tmp
         mv -f $conffile.tmp $conffile
 
-#        if [ -e "$systemdservice" ]; then
-#            sed -e "s/User=.*/User=$I2PUSER/" < "$systemdservice" > "$systemdservice.tmp"
-#            mv -f "$systemdservice.tmp" "$systemdservice"
-#            chmod 0644 -f "$systemdservice"
-#            if grep -q 'systemd' /proc/1/comm > /dev/null 2>&1; then
-#                systemctl --system daemon-reload
-#                if [ $RUN_DAEMON = 'true' ]; then
-#                    systemctl enable i2p.service
-#                else
-#                    systemctl disable i2p.service
-#                fi
-#            fi
-#        fi
+        if [ -e "$systemdservice" ]; then
+            sed -e "s/User=.*/User=$I2PUSER/" < "$systemdservice" > "$systemdservice.tmp"
+            mv -f "$systemdservice.tmp" "$systemdservice"
+            chmod 0644 -f "$systemdservice"
+            if grep -q 'systemd' /proc/1/comm > /dev/null 2>&1; then
+                systemctl --system daemon-reload
+                if [ $RUN_DAEMON = 'true' ]; then
+                    systemctl enable i2p.service
+                else
+                    systemctl disable i2p.service
+                fi
+            fi
+        fi
 
         sed -e "s/^ *wrapper\.java\.maxmemory=.*/wrapper\.java\.maxmemory=$MEMORYLIMIT/" \
             < /etc/i2p/wrapper.config > /etc/i2p/wrapper.config.tmp
diff --git a/debian/i2p.service b/debian/i2p.service
index 6a4c8d3b40b294cd6400cfa6b93abce979f31d35..4199e99108377515b8e0ea9465be008730559a58 100644
--- a/debian/i2p.service
+++ b/debian/i2p.service
@@ -1,10 +1,31 @@
+# It's not recommended to modify this file because it will be
+# overwritten during package upgrades.  If you want to make changes, the
+# best way is to create a file "/etc/systemd/system/i2p.service.d/foo.conf"
+# and make your changes there. This file will be parsed after the file
+# i2p.service itself is parsed.
+#
+# For more info about custom unit files, see systemd.unit(5) or
+# http://fedoraproject.org/wiki/Systemd#How_do_I_customize_a_unit_file.2F_add_a_custom_unit_file.3F
+
+# For example, if you want to increase I2P's open-files-limit to 10000,
+# you need to increase systemd's LimitNOFILE setting, so create a file named
+# "/etc/systemd/system/i2p.service.d/limits.conf" containing:
+#	[Service]
+#	LimitNOFILE=10000
+
+# Don't forget to reload systemd daemon after you change unit configuration:
+# root> systemctl --system daemon-reload
+
 [Unit]
 Description=load-balanced unspoofable packet switching network
-After=network.target
+After=local-fs.target network.target time-sync.target
 
 [Service]
 Type=forking
 EnvironmentFile=/etc/default/i2p
+RuntimeDirectory=i2p
+RuntimeDirectoryMode=750
+PIDFile=/run/i2p/i2p.pid
 Environment="I2P_ARGS=/etc/i2p/wrapper.config \
  wrapper.java.additional.1=-DloggerFilenameOverride=/var/log/i2p/log-router-@.txt \
  wrapper.java.additional.10=-Dwrapper.logfile=/var/log/i2p/wrapper.log \
@@ -16,11 +37,12 @@ Environment="I2P_ARGS=/etc/i2p/wrapper.config \
  wrapper.daemonize=TRUE" TZ=UTC
 User=i2psvc
 PermissionsStartOnly=true
-ExecStartPre=/bin/mkdir -p /run/i2p /tmp/i2p-daemon
+AppArmorProfile=system_i2p
+ExecStartPre=/bin/mkdir -p /tmp/i2p-daemon
 ExecStartPre=/bin/chown -R ${I2PUSER}:${I2PUSER} /var/log/i2p /run/i2p /tmp/i2p-daemon
 ExecStartPre=/bin/chmod 750 /var/log/i2p
 ExecStart=/usr/sbin/wrapper "$I2P_ARGS"
-ExecStopPost=/bin/rm -rf /run/i2p /tmp/i2p-daemon
+ExecStopPost=/bin/rm -rf /run/i2p
 
 [Install]
 WantedBy=multi-user.target
diff --git a/debian/patches/0001-path-substitution.patch b/debian/patches/0001-path-substitution.patch
index e4cb1fcacac79dc65c9faae900a9d7f011538287..f7d9c5b28c1bc180bfc1eb0a3151d498ce48db09 100644
--- a/debian/patches/0001-path-substitution.patch
+++ b/debian/patches/0001-path-substitution.patch
@@ -345,17 +345,17 @@ Debian wrapper.config to try to prevent confusion.
 @@ -195,15 +195,15 @@
  msgstr "Falls gestartet, fordere einen Java Thread dump an"
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Bitte bearbeite i2prouter und setze die Variable RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Bitte bearbeite /etc/default/i2p und setze die Variable RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "I2P als root Benutzer auszuführen ist *nicht* empfehlenswert."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -367,16 +367,16 @@ Debian wrapper.config to try to prevent confusion.
 @@ -185,7 +185,7 @@
  msgstr ""
  
- #: ../i2prouter:1825
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
  msgstr ""
  
- #: ../i2prouter:1830
+ #: ../i2prouter:1869
 @@ -193,5 +193,5 @@
  msgstr ""
  
- #: ../i2prouter:1833
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -385,16 +385,16 @@ Debian wrapper.config to try to prevent confusion.
 @@ -187,7 +187,7 @@
  msgstr ""
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
  msgstr ""
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
 @@ -195,5 +195,5 @@
  msgstr ""
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -403,57 +403,59 @@ Debian wrapper.config to try to prevent confusion.
 @@ -187,13 +187,13 @@
  msgstr "请求Java转储(如果在运行)。"
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "请编辑 i2prouter 设置 RUN_AS_USER 变量"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "请编辑 /etc/default/i2p 设置 RUN_AS_USER 变量"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "推荐 *不要* 以 root 身份运行 I2P 。"
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 -msgstr "要以root运行,请编辑 i2prouter 并设置 ALLOW_ROOT=true。"
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
 +msgstr "要以root运行,请编辑 /etc/default/i2p 并设置 ALLOW_ROOT=true。"
 --- a/installer/resources/locale/po/messages_tr.po
 +++ b/installer/resources/locale/po/messages_tr.po
-@@ -186,13 +186,13 @@
+@@ -188,15 +188,15 @@
  msgstr "Çalışıyorsa Java iş parçacığı dökümü isteyin."
  
- #: ../i2prouter:1796
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "i2prouter dosyasını düzenleyin ve RUN_AS_USER değişkenini ayarlayın"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "/etc/default/i2p dosyasını düzenleyin ve RUN_AS_USER değişkenini ayarlayın"
  
- #: ../i2prouter:1801
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "I2P yazılımının root olarak çalıştırmanız *önerilmez*."
  
- #: ../i2prouter:1804
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
--msgstr "Root olarak çalıştırmak için i2prouter dosyasını düzenleyin ve ALLOW_ROOT=true ayarını yapın."
-+msgid "To run as root anyway, edit /etc/defalt/i2p and set ALLOW_ROOT=true."
-+msgstr "Root olarak çalıştırmak için /etc/default/i2p dosyasını düzenleyin ve ALLOW_ROOT=true ayarını yapın."
++msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
+ msgstr ""
+-"Root olarak çalıştırmak için i2prouter dosyasını düzenleyin ve "
++"Root olarak çalıştırmak için /etc/default/i2p dosyasını düzenleyin ve "
+ "ALLOW_ROOT=true ayarını yapın."
 --- a/installer/resources/locale/po/messages_es.po
 +++ b/installer/resources/locale/po/messages_es.po
 @@ -193,15 +193,15 @@
  msgstr "Solicitar un volcado del hilo JAVA si se está ejecutando."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Por favor edite i2prouter e introduzca la variable RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Por favor edite /etc/default/i2p e introduzca la variable RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "\"No\" se recomienda ejecutar I2P como root."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -465,17 +467,17 @@ Debian wrapper.config to try to prevent confusion.
 @@ -189,15 +189,15 @@
  msgstr "Requisitar o histórico Java se iniciado."
  
- #: ../i2prouter:1796
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Favor editar o arquivo i2prouter e configurar a variável RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Favor editar o arquivo /etc/default/i2p e configurar a variável RUN_AS_USER"
  
- #: ../i2prouter:1801
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Iniciar I2P como permissões root *não* é recomendado."
  
- #: ../i2prouter:1804
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -487,18 +489,18 @@ Debian wrapper.config to try to prevent confusion.
 @@ -190,8 +190,8 @@
  msgstr "Request a Java thread dump if running."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Veuillez éditer i2prouter et paramétrer la variable RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Veuillez éditer /etc/default/i2p et paramétrer la variable RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
 @@ -199,7 +199,7 @@
  "Faire fonctionner I2P en tant qu'utilisateur root n'est *pas* recommandé."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -507,40 +509,43 @@ Debian wrapper.config to try to prevent confusion.
  "ALLOW_ROOT=true."
 --- a/installer/resources/locale/po/messages_ru.po
 +++ b/installer/resources/locale/po/messages_ru.po
-@@ -191,13 +191,13 @@
+@@ -193,16 +193,16 @@
  msgstr "Запросить дамп нитей Java, если запущено."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
--msgstr "Пожалуйста, отредактируйте i2prouter и установите переменную RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
-+msgstr "Пожалуйста, отредактируйте /etc/default/i2p и установите переменную RUN_AS_USER"
+ msgstr ""
+-"Пожалуйста, отредактируйте i2prouter и установите переменную RUN_AS_USER"
++"Пожалуйста, отредактируйте /etc/default/i2p и установите переменную RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Запускать I2P от имени root'а *НЕ* рекомендуется."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
--msgstr "Чтобы всё равно запустить под root'ом, отредактируйте i2prouter и установите ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
-+msgstr "Чтобы всё равно запустить под root'ом, отредактируйте /etc/default/i2p и установите ALLOW_ROOT=true."
+ msgstr ""
+-"Чтобы всё равно запустить под root'ом, отредактируйте i2prouter и установите "
++"Чтобы всё равно запустить под root'ом, отредактируйте /etc/default/i2p и установите "
+ "ALLOW_ROOT=true."
 --- a/installer/resources/locale/po/messages_sv.po
 +++ b/installer/resources/locale/po/messages_sv.po
 @@ -187,14 +187,14 @@
  msgstr "Fråga efter en Java thread dump vid drift."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Var god ändra i2prouter och set variabeln RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Var god ändra /etc/default/i2p och set variabeln RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Att köra I2P som användare root är *inte* rekommenderat."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -551,17 +556,17 @@ Debian wrapper.config to try to prevent confusion.
 @@ -187,15 +187,15 @@
  msgstr "Solicitarea dump-ului firului Java daca este pornit"
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Vă rugăm să editați i2prouter și setați variabila RUN_AS_USER "
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Vă rugăm să editați /etc/default/i2p și setați variabila RUN_AS_USER "
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Rularea I2P ca root *nu* este recomandată."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
  msgstr ""
@@ -570,81 +575,87 @@ Debian wrapper.config to try to prevent confusion.
  "true."
 --- a/installer/resources/locale/po/messages_pt_BR.po
 +++ b/installer/resources/locale/po/messages_pt_BR.po
-@@ -187,13 +187,13 @@
- msgstr ""
+@@ -190,15 +190,15 @@
+ msgstr "Solicitar um despejo de thread se está sendo executado."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Por favor, edite i2prouter e especifique a variável RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Por favor, edite /etc/default/i2p e especifique a variável RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Executar o roteador I2P como usuário root *não* é recomendado."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
--msgstr "De qualquer forma, se quiser mesmo executar o roteador como root, edite i2prouter e ponha ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
-+msgstr "De qualquer forma, se quiser mesmo executar o roteador como root, edite /etc/default/i2p e ponha ALLOW_ROOT=true."
+ msgstr ""
+ "De qualquer forma, se quiser mesmo executar o roteador como root, edite "
+-"i2prouter e ponha ALLOW_ROOT=true."
++"/etc/default/i2p e ponha ALLOW_ROOT=true."
 --- a/installer/resources/locale/po/messages_pl.po
 +++ b/installer/resources/locale/po/messages_pl.po
-@@ -186,13 +186,13 @@
+@@ -191,13 +191,13 @@
  msgstr "Zażądaj zrzutu wątków Java jeśli jest uruchomiona."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "ProszÄ™ edytuj i2prouter i ustaw zmiennÄ… RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "ProszÄ™ edytuj /etc/default/i2p i ustaw zmiennÄ… RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Nie jest polecane uruchamianie I2P jako root."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 -msgstr "Aby uruchomić jako root, edytuj i2prouter i ustaw ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
 +msgstr "Aby uruchomić jako root, edytuj /etc/default/i2p i ustaw ALLOW_ROOT=true."
 --- a/installer/resources/locale/po/messages_ja.po
 +++ b/installer/resources/locale/po/messages_ja.po
-@@ -186,13 +186,13 @@
+@@ -189,15 +189,15 @@
  msgstr "起動中の場合、 Java スレッドダンプを要求"
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "i2prouter を編集して、変数 RUN_AS_USER を設定してください"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "/etc/default/i2p を編集して、変数 RUN_AS_USER を設定してください"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "root ユーザーとしての I2P の起動は推奨され*ません*。"
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
--msgstr "とにかく root として起動し、 i2prouter を編集して、ALLOW_ROOT=true と設定する。"
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
-+msgstr "とにかく root として起動し、/etc/default/i2p を編集して、ALLOW_ROOT=true と設定する。"
+ msgstr ""
+-"とにかく root として起動し、 i2prouter を編集して、ALLOW_ROOT=true と設定す"
++"とにかく root として起動し、 /etc/default/i2p を編集して、ALLOW_ROOT=true と設定す"
+ "る。"
 --- a/installer/resources/locale/po/messages_sk.po
 +++ b/installer/resources/locale/po/messages_sk.po
-@@ -187,13 +187,13 @@
+@@ -189,15 +189,15 @@
  msgstr "Vyžiadať zrušenie vlákna Javy, ak je spustený."
  
- #: ../i2prouter:1807
+ #: ../i2prouter:1864
 -msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 -msgstr "Prosím upravte i2prouter a nastavte premennú RUN_AS_USER"
 +msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
 +msgstr "Prosím upravte /etc/default/i2p a nastavte premennú RUN_AS_USER"
  
- #: ../i2prouter:1812
+ #: ../i2prouter:1869
  msgid "Running I2P as the root user is *not* recommended."
  msgstr "Spúšťať I2P ako root *nie* je odporúčané."
  
- #: ../i2prouter:1815
+ #: ../i2prouter:1872
 -msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
--msgstr "Ak ho chcete spustiť ako root aj tak, upravte i2prouter a nastavte ALLOW_ROOT=true."
 +msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
-+msgstr "Ak ho chcete spustiť ako root aj tak, upravte /etc/default/i2p a nastavte ALLOW_ROOT=true."
+ msgstr ""
+-"Ak ho chcete spustiť ako root aj tak, upravte i2prouter a nastavte "
++"Ak ho chcete spustiť ako root aj tak, upravte /etc/default/i2p a nastavte "
+ "ALLOW_ROOT=true."
diff --git a/debian/po/hu.po b/debian/po/hu.po
index d83e999732e2ab372aa8c9a25c805ea98ecc7603..2d0e183c5b9896119fbff1d3dd95cb3cae9bac1a 100644
--- a/debian/po/hu.po
+++ b/debian/po/hu.po
@@ -3,13 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
+# benewfy <benewfy@gmail.com>, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
 "POT-Creation-Date: 2015-02-18 22:14+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"PO-Revision-Date: 2015-06-29 12:34+0000\n"
+"Last-Translator: benewfy <benewfy@gmail.com>\n"
 "Language-Team: Hungarian (http://www.transifex.com/projects/p/I2P/language/hu/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -79,7 +80,7 @@ msgstr "Lehetséges, hogy nagy szávszélességű routerek, úgyis mint sok akt
 #. Description
 #: ../i2p.templates:5001
 msgid "Run I2P daemon confined with AppArmor"
-msgstr ""
+msgstr "I2P kiszolgáló futtatása korlátozva az AppArmor-ral"
 
 #. Type: boolean
 #. Description
@@ -87,4 +88,4 @@ msgstr ""
 msgid ""
 "With this option enabled I2P will be sandboxed with AppArmor, restricting "
 "which files and directories may be accessed by I2P."
-msgstr ""
+msgstr "Ezzel az opcióval engedélyezed, hogy az I2P sandboxolva legyen az AppArmor-ral, korlátozva, hogy melyik fájlokat és könyvtárakat érheti el az I2P."
diff --git a/debian/po/id.po b/debian/po/id.po
index 842c7c029031f86d8e399e7ebb94d5c3bb198979..cf65db986f396991489f3252d2f54b0f05324edf 100644
--- a/debian/po/id.po
+++ b/debian/po/id.po
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
-# Khairul Agasta <khairuldroids@gmail.com>, 2014
+# Khairul Agasta <khairuldroids@gmail.com>, 2014-2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
 "POT-Creation-Date: 2015-02-18 22:14+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"PO-Revision-Date: 2015-06-02 04:22+0000\n"
+"Last-Translator: Khairul Agasta <khairuldroids@gmail.com>\n"
 "Language-Team: Indonesian (http://www.transifex.com/projects/p/I2P/language/id/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -22,7 +22,7 @@ msgstr ""
 #. Description
 #: ../i2p.templates:2001
 msgid "Should the I2P router be started at boot?"
-msgstr "Apakah router I2P perlu dimuali saat boot?"
+msgstr "Apakah router I2P perlu memulai saat boot?"
 
 #. Type: boolean
 #. Description
@@ -30,7 +30,7 @@ msgstr "Apakah router I2P perlu dimuali saat boot?"
 msgid ""
 "The I2P router can be run as a daemon that starts automatically when your "
 "computer boots up. This is the recommended configuration."
-msgstr "Router I2P dapat dijalankan sebagai daemon yang memulai secara otomatis ketika komputer Anda booting. Ini adalah konfigurasi yang direkomendasikan."
+msgstr "Router I2P dapat dijalankan sebagai daemon yang memulai secara otomatis ketika komputer anda booting. Ini adalah konfigurasi yang direkomendasikan."
 
 #. Type: string
 #. Description
@@ -80,7 +80,7 @@ msgstr "Router bandwidth tinggi, seperti halnya router dengan banyak torrent / p
 #. Description
 #: ../i2p.templates:5001
 msgid "Run I2P daemon confined with AppArmor"
-msgstr ""
+msgstr "Jalankan daemon I2P yang dibatasi dengan AppArmor"
 
 #. Type: boolean
 #. Description
@@ -88,4 +88,4 @@ msgstr ""
 msgid ""
 "With this option enabled I2P will be sandboxed with AppArmor, restricting "
 "which files and directories may be accessed by I2P."
-msgstr ""
+msgstr "Dengan mengaktifkan opsi ini I2P akan di sandboxkan dengan AppArmor, membatasi file dan direktori mana yang dapat diakses oleh I2P."
diff --git a/debian/po/pl.po b/debian/po/pl.po
index 64484263a407e347e6bc0a68ea71b011c91f065b..08cac081dbf3dc6dce5a30acdc9e189654f1fe62 100644
--- a/debian/po/pl.po
+++ b/debian/po/pl.po
@@ -4,13 +4,14 @@
 # 
 # Translators:
 # PolishAnon <b790979@klzlk.com>, 2011, 2012
+# seb, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
 "POT-Creation-Date: 2015-02-18 22:14+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"PO-Revision-Date: 2015-06-09 20:57+0000\n"
+"Last-Translator: seb\n"
 "Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -80,7 +81,7 @@ msgstr "Rutery z wysoka przepustowościa oraz rutery z wieloma aktywnymi torrent
 #. Description
 #: ../i2p.templates:5001
 msgid "Run I2P daemon confined with AppArmor"
-msgstr ""
+msgstr "Uruchom I2P deamon ograniczony przez AppArmor"
 
 #. Type: boolean
 #. Description
@@ -88,4 +89,4 @@ msgstr ""
 msgid ""
 "With this option enabled I2P will be sandboxed with AppArmor, restricting "
 "which files and directories may be accessed by I2P."
-msgstr ""
+msgstr "Z tą opcją I2P będzie w sandboxie z AppArmor, broniąc plików i folderów do których I2P mogłoby mieć dostęp."
diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po
index 067db03f3f4d60e649c0953c67972dd821d85969..4898209fd6e1f8eaf564111b300c124a3771a6d1 100644
--- a/debian/po/pt_BR.po
+++ b/debian/po/pt_BR.po
@@ -3,15 +3,15 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
-# blueboy, 2014
+# blueboy, 2014-2015
 # Victor Maximiliano <VicBrd09@mail2tor.com>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
 "POT-Creation-Date: 2015-02-18 22:14+0000\n"
-"PO-Revision-Date: 2015-03-29 14:31+0000\n"
-"Last-Translator: kytv <killyourtv@i2pmail.org>\n"
+"PO-Revision-Date: 2015-06-10 17:27+0000\n"
+"Last-Translator: blueboy\n"
 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -37,7 +37,7 @@ msgstr "O roteador I2P pode rodar como um daemon que inicia automaticamente quan
 #. Description
 #: ../i2p.templates:3001
 msgid "I2P daemon user:"
-msgstr "Usuário I2P daemon:"
+msgstr "Usuário daemon I2P:"
 
 #. Type: string
 #. Description
@@ -75,13 +75,13 @@ msgstr "Por omissão, será permitido ao roteador I2P usar apenas até 128 MB de
 msgid ""
 "High bandwidth routers, as well as routers with a lot of active torrents / "
 "plugins, may need to have this value increased."
-msgstr "Roteadores de alta velocidade, assim como roteadores com uma porção de torrents / plugins ativos, talvez precisem que esse valor seja aumentado."
+msgstr "Roteadores de alta velocidade, assim como roteadores com uma porção de torrents / extensões ativas, talvez precisem ter esse valor aumentado."
 
 #. Type: boolean
 #. Description
 #: ../i2p.templates:5001
 msgid "Run I2P daemon confined with AppArmor"
-msgstr ""
+msgstr "Confinar a execução do daemon I2P com AppArmor"
 
 #. Type: boolean
 #. Description
@@ -89,4 +89,4 @@ msgstr ""
 msgid ""
 "With this option enabled I2P will be sandboxed with AppArmor, restricting "
 "which files and directories may be accessed by I2P."
-msgstr ""
+msgstr "Com essa opção selecionada, o roteador I2P funcionará confinado pelo AppArmor, sendo restritos os arquivos e diretórios passíveis de acesso."
diff --git a/debian/po/zh.po b/debian/po/zh.po
index cd6466b547e5bc420dfc0fc11323f1a6cae47c0c..9d249283723019db62cdd3fc077957887b759472 100644
--- a/debian/po/zh.po
+++ b/debian/po/zh.po
@@ -10,7 +10,7 @@ msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
 "POT-Creation-Date: 2015-02-18 22:14+0000\n"
-"PO-Revision-Date: 2015-03-29 15:00+0000\n"
+"PO-Revision-Date: 2015-06-07 16:29+0000\n"
 "Last-Translator: YF <yfdyh000@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/language/zh_CN/)\n"
 "MIME-Version: 1.0\n"
@@ -47,7 +47,7 @@ msgid ""
 " a daemon. To use an **existing** I2P profile you may enter a different "
 "account name here. For example, if your previous I2P installation is at "
 "/home/user/i2p, you may enter 'user' here."
-msgstr "I2P后台服务默认以i2psvc账户运行。要使用*已有*的I2P配置文件,您可以输入不同的账户名。例如,如果您之前的I2P安装在 /home/user/i2p,此处可输入'user'。"
+msgstr "I2P后台服务默认以 i2psvc 账户运行。要使用*已有*的I2P配置文件,您可以输入不同的账户名。例如,如果您之前的I2P安装在 /home/user/i2p,此处可输入 'user'。"
 
 #. Type: string
 #. Description
@@ -55,19 +55,19 @@ msgstr "I2P后台服务默认以i2psvc账户运行。要使用*已有*的I2P配
 msgid ""
 "Very important: If a user other than the default of 'i2psvc' is entered "
 "here, the chosen username *MUST* already exist."
-msgstr "重要:如果您输入默认'i2psvc'以外的账户,此账户务必已经存在。"
+msgstr "重要:如果您输入默认的 'i2psvc' 以外的账户,此账户必须已经存在。"
 
 #. Type: string
 #. Description
 #: ../i2p.templates:4001
 msgid "Memory that can be allocated to I2P:"
-msgstr "I2P 可用最大内存:"
+msgstr "I2P 最多可占用内存:"
 
 #. Type: string
 #. Description
 #: ../i2p.templates:4001
 msgid "By default, I2P will only be allowed to use up to 128MB of RAM."
-msgstr "I2P 默认最大内存128M。"
+msgstr "默认情况下,I2P 最多只允许使用 128MB 系统内存。"
 
 #. Type: string
 #. Description
diff --git a/history.txt b/history.txt
index a8f316f19aadd042a7c68ba668eab32f1a5e543e..82a4b99171151a6c5d27f74c109fe19c97d72592 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,345 @@
+2015-11-05 zzz
+ * I2CP: Fix additional connections getting rejected during tunnel open (ticket #1650)
+ * Streaming: Split blacklist into one for EC and one for Ed
+
+2015-11-04 zzz
+ * Threads: More conversions to I2PAppThread
+ * Timers: Improve OutboundMessageRegistry locking (ticket #1694)
+
+2015-11-02 z3r0fox
+ * EepGet: Fix command line filename selection (ticket #1616)
+
+2015-11-01 zzz
+ * Utils: Double IP lookup cache size (ticket #1700)
+
+2015-10-31 zzz
+ * Convert remaining Threads to I2PThread or I2PAppThread
+ * UPnP: Fix deadlock in callbacks (ticket #1699)
+
+2015-10-30 zzz
+ * Router: Fix cascading I2CP error (ticket #1692)
+
+2015-10-21 zzz
+ * i2psnark: More consistency and torrent links in messages
+ * Router: Increase timer thread priority
+
+2015-10-17 zzz
+ * Crypto:
+   - Consolidate duplicate unlimited strength crypto check code
+   - Disable TLS_DHE_DSS_WITH_AES_128_CBC_SHA
+
+2015-10-16 zzz
+ * Console: Add Java 6 warning to summary bar
+ * i2psnark:
+   - Fix deadlock (ticket #1432)
+   - Add "smart sort" option, set sort based on language (tickets #637, #1303)
+   - Don't balloon files on ARM (ticket #1684)
+
+2015-10-14 zzz
+ * Update:
+   - Require Java 7 to download dev builds (ticket #1669)
+   - Fix persistence of the available dev version
+
+2015-10-13 zzz
+ * Startup: Delete our old RI from netDB when rekeying
+
+2015-10-11 zzz
+ * Crypto: Test for broken Gentoo ECDSA support
+
+2015-10-10 zzz
+ * i2psnark: Increase max piece size to 16 MB, max files to 999,
+   close files faster based on file count (tickets #1626, #1671)
+ * JobQueue: Only adjust timing for negative clock shifts
+ * NamingServices: Add support for lookups prefixed with "www."
+ * Startup: Increase rekey probability
+
+2015-10-08 zzz
+ * SimpleTimer2: Additional fix for uncaught IllegalStateException
+   affecting streaming timers (ticket #1672)
+
+2015-10-02 zzz
+ * Router: Don't check config files for reload on Android
+
+2015-09-28 zzz
+ * Addressbook: Fix isValidDest() for EC/Ed dests
+ * i2psnark: Support adding plain base 32 hashes
+ * Susimail: Hide headers and buttons if search results are empty
+
+2015-09-27 dg
+ * Router: Fix soft restarts for 'massive' clock jumps (over +150s or -61s) and recover from standby
+   and hibernate (ticket #1014).
+
+2015-09-27 zzz
+ * Console:
+   - Export SSL cert on creation
+   - New /certs page to show local SSL certs
+   - Show 'none' if no leasesets
+ * SimpleTimer2: Fix bug in forceReschedule() that caused subsequent uncaught IllegalStateException,
+   affected streaming timers
+ * Streaming: Move throttler from context timer to streaming timer
+ * Tunnels: Use max of 2 not-failing peers in an exploratory tunnel,
+   use high cap for the rest; change outbound exploratory
+   default length from 2 + 0-1 to 3+0.
+ * Util: Speed up IP address validation by using Apache's implementation (ticket #1198)
+
+2015-09-25 dg
+ * Rename _() for translation to _t() for Java 9 compatibility (ticket #1456)
+
+2015-09-24 zzz
+  - Rename bad .torrent files instead of deleting them
+
+2015-09-20 dg
+ * /configreseed: Add 'Reset URL list' button for revert to default hosts (ticket #1554, thanks dzirtt@gmail.com)
+
+2015-09-19 zzz
+ * i2psnark: Add recheck/start/stop buttons to details page (ticket #372)
+
+2015-09-18 zzz
+ * EepGet:
+   - Send Accept-Encoding: gzip even when proxied
+   - Fix man page (ticket #1631)
+ * i2psnark:
+   - Don't display "Tracker Error" if torrent is stopped (ticket #1654)
+   - Improve directory listing efficiency (ticket #1079)
+ * i2ptunnel:
+   - Pass Accept-Encoding header through HTTP client and server proxies,
+     to allow end-to-end compression
+   - Don't do transparent response compression if response
+     Content-Encoding indicates it is already compressed
+ * Streaming: Move remaining timers from the context to streaming's SimpleTimer2
+
+2015-09-17 zzz
+ * i2psnark:
+   - Store magnet parameters across restart (ticket #1485)
+   - Don't delete torrent config file after error on initial startup (tickets #1575, #1658)
+
+2015-09-16 zzz
+ * Build:
+   - Include geoip in update files for next release
+   - Add created-by string to release torrents
+ * i2psnark:
+   - Store torrent added and completed times in config files, display on details page
+   - Add metainfo creation command line support for created-by string
+ * Profiles: Bias slightly away from floodfills
+
+2015-09-15 zzz
+ * Console:
+   - Store news feed items separately on disk in XML, like a real feed reader
+   - Limit display to 2 news items in summary bar, /home and /console
+   - New /news page to show all news (ticket #1425)
+
+* 2015-09-12 0.9.22 released
+
+2015-09-11 kytv
+ * Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
+   database from 2015-09-02.
+ * Translation updates pulled from Transifex
+
+2015-09-04 zzz
+ * UPnP: Fix "content not allowed in trailing section"
+   (tickets #481, #1653)
+
+2015-08-31 zzz
+ * Data: Cache P256 and Ed255i9 key certificates
+ * i2psnark: Change default sig type to Ed25519
+
+2015-08-29 zzz
+ * Router:
+   - Change default RI sig type to Ed25519, with a 10% chance od
+     rekeying from DSA at each restart
+   - Don't initialize KeyManager before selecting sig type
+   - Don't log KeyManager error when changing sig type
+
+2015-08-25 zzz
+ * i2psnark:
+   - Return partial piece to coordinator after reject
+   - Fix tracking of downloaded portion of piece after reject
+   - Send reject on receipt of bad request
+   - Mark piece unrequested after receiving bad data, so it
+     will be requested again, but not from the same peer
+   - Fix NPE in Request constructor on error
+   - Fix stuck before completion due to reject handling (ticket #1633)
+   - Fix orphaned temp files due to reject handling (ticket #1635)
+
+2015-08-02 zzz
+ * Console: Fix SSL excluded ciphers (thx lazyg)
+ * SU3File: Add keystore password command line option
+
+* 2015-07-31 0.9.21 released
+
+2015-07-27 zzz
+ * Update: Fix processing of translated news su3 files
+
+2015-07-26 zzz
+ * Update translations
+
+2015-07-25 zzz
+ * i2psnark: Fix total_size in metadata message (ticket #1618)
+ * NetDB: Fix NPE (ticket #1619)
+
+2015-07-21 str4d
+ * Core: Throw DFE in Certificate.create() instead of AIOOBE (ticket #1016)
+
+2015-07-21 str4d
+ * Core: Fix parsing bug in KeyCertificate
+
+2015-07-16 zzz
+ * Console: Add dates to news headings
+
+2015-07-12 zzz
+ * Findbugs all over
+
+2015-07-08 zzz
+ * Tunnels: New Bloom filter size, increase bandwidth limit (ticket #1505)
+
+2015-07-07 zzz
+ * Crypto: Check for error return from sign()
+ * i2psnark: Tweak dest display in footer
+ * Streaming: New config to add to DSA-only list
+ * Updates: New news URL
+
+2015-07-05 zzz
+ * SSU: Compete better with NTCP for outbound bandwidth allocations
+ * Transport: Adjust thread priorities to prevent I/O stalling
+
+2015-06-29 zzz
+ * Transport: More fixes for SSU stalling
+
+2015-06-28 zzz
+ * Apache Tomcat 6.0.44
+
+2015-06-25 zzz
+ * Console: Use registered host/port for eepsite link (ticket #1604)
+ * Jetty starter: Register host/port when started
+ * PortMapper: Add hostname support
+
+2015-06-24 zzz
+ * Transport: Add failsafe to prevent complete SSU stall waiting
+   for bandwidth limiter
+
+2015-06-23 zzz
+ * Console: Fix NPE on /configtunnels
+ * GeoIP: Add countries and flags for Asia/Pacific, Bonaire, St. Barts,
+   St. Maarten, South Sudan
+ * I2CP: Don't try to decrypt an LS before it's encrypted (ticket #1608)
+ * Router: Increase default outbound bandwidth to 60 KBps;
+   raise class L/M boundary to match so defaulted routers are still L
+
+2015-06-22 dg
+ * NetDB: Partially revert last NetDB change: flood because we don't want
+   to create a hole in the DHT before publisher resends to somebody else.
+
+2015-06-20 dg
+ * I2PSnark: Auto-start now only starts torrents which were running at shutdown (#766)
+ * NetDB: Don't say we stored, and don't flood, if we're shutting down
+
+2015-06-19 zzz
+ * I2CP: Fix simple session lookups, broken in prop
+ * I2PSocketEepGet: Do hostname lookups in-session for efficiency
+ * Tunnels: Increase default max tunnels
+
+2015-06-18 zzz
+ * I2CP:
+   - Don't send the first LS request to the client until we have
+     at least one OB tunnel, so the client waits until we are ready.
+   - Fixes to prevent multiple pending LS requests
+   - Move client-side implementation classes to
+     new package net.i2p.client.impl, leaving only the
+     factories and interfaces in net.i2p.client
+ * Update: Add language param to news fetch for translated news (ticket #1425)
+
+2015-06-17 zzz
+Prop from i2p.i2p.zzz.multisess:
+ * Router, I2CP, Streaming, i2ptunnel:
+   - Multisession support and multiple destinations in one tunnel pool
+   - Connections to Hardcoded blacklist of destinations that do not
+     support ECDSA will use the DSA session
+   - Change shared clients to ECDSA by default, with a DSA subsession
+   - Add support for 'aliased' local destinations that use the same tunnel pools
+   - No UI or config support, no server support, may be added later
+   - Catch uncaught exceptions in ClientConnectionRunner and stop connection
+   - When socket is closed, set sessionID and LS to null,
+     close subsession and set its sessionID and LS to null
+   - Checks on client side for null session ID
+   - Check for null session in Destroy Session message
+
+2015-06-13 zzz
+ * i2psnark: Fix NPE (ticket #1602)
+ * NetDB:
+   - Improve routing of DatabaseStoreMessage acks
+   - Send our own RI unsolicited in reply if we aren't floodfill
+   - Don't ack or flood a store of an unknown type
+   - Don't say we stored, and don't flood if we're shutting down
+ * PeerTestJob: Don't generate zero reply token
+ * Timestamper: Reduce NTP timeouts to shorten startup time
+   when NTP is blocked
+ * Tunnels: More checks of messages received down exploratory tunnels
+
+2015-06-08 dg
+ * Language fixes
+ * Make netDb.storeFloodNew graphable for testing (#1195)
+ * Directly connect to nearby floodfills to share our RI
+   to speed up integration of new floodfills (#1195)
+ * Silence Irc{Inbound,Outbound}Filter warnings about 'no streams'
+   when we can't connect to an IRC server. Change to WARN.
+
+2015-06-07 zzz
+ * Logs: Correct wrapper.config location when running as a service
+ * NetDB: Fix early NPE
+ * SSU: Possible fix for NPE in establisher
+
+2015-06-06 zzz
+ * Console: Add indication of current ff status on /configadvanced,
+   change immediately when config changes, force republish
+
+2015-06-06 str4d
+ * newsxml: Don't use XXX for parsing dates on Android
+
+2015-06-04 str4d
+ * i2ptunnel:
+   - Don't connect manager to router in constructor (ticket #815)
+   - Don't call startup() in chained constructor (ticket #1593)
+
+2015-06-03 zzz
+Prop from i2p.i2p.zzz.sam:
+ * I2CP: Set keepalive on sockets (ticket #1573)
+ * SAM:
+   - Close sockets and stop tunnels when router-side SAM stops (ticket #1572)
+   - Better checks for quoting status message strings (ticket #1488)
+   - Set encoding for sam.keys file
+   - Don't throw NPE on rare stream errors
+   - Comment out unused dumpProperties()
+   - Cleanups, log tweaks, thread name tweaks
+   - Set keepalive on sockets (ticket #1573)
+Prop from i2p.i2p.zzz.test2:
+ * Console:
+   -  Don't allow unbanning of all-zero hash
+   -  Nicer "move" icons on /configsidebar, add tooltips
+   -  Prevent bad line-wrap of very long menu items
+ * HTTP Client: Greatly simplify decompression by using InflaterOutputStream
+ * I2CP: Prevent sending messages before handshake with router is complete
+ * i2psnark:
+   - Add support for fast extensions (BEP 6)
+   - Don't say 'download finished' unless we downloaded something
+   - Don't lose sort param when hiding peers
+ * i2ptunnel: Strip top-level supercookies too
+ * LogWriter: Write dup message to wrapper log and crit buf also (ticket #1585)
+ * Reseed: Only log reseed network disconnected warning once
+ * Router: Add gzip and translate caches to clearCaches()
+ * Susidns, addressbook: Don't attempt to fetch subscriptions if
+   HTTP proxy is down (ticket #1530)
+ * SSU: More synchronization in PeerState
+ * Stats: Reduce number of rates in required stats to save memory
+ * UPnP: Only log network disconnected warning once
+
+* 2015-06-02 0.9.20 released
+
+2015-05-31 zzz
+ * Fortuna: Catch AIOOBE (ticket #1576)
+
+2015-05-30 zzz
+ * i2ptunnel: Fix +/- variance config (ticket #1587)
+
 2015-05-29 zzz
  * HTTP client: Fix occasional truncation of compressed responses
 
@@ -4299,7 +4641,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     - Use new synchronized change-and-save-config methods
       to eliminate races with ReadConfigJob
   * Tunnels:
-    - When a peer is shitlisted, fail all our tunnels where
+    - When a peer is banlisted, fail all our tunnels where
       that peer is the adjacent hop. In particular this
       will remove outbound tunnels when we can't contact
       the first hop, and enable quicker recovery.
@@ -4818,7 +5160,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 
 2011-09-30 zzz
   * logs.jsp: Add wrapper version
-  * Shitlist: Shorten time
+  * Banlist: Shorten time
   * Wrapper: Update armv7 to 3.5.12
 
 2011-09-30 kytv
@@ -4909,7 +5251,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     tunnels from being expired and causing high CPU usage
 
 2011-09-08 zzz
-  * Blocklist: Include IP in shitlist reason
+  * Blocklist: Include IP in banlist reason
   * Ministreaming: Drop old classes replaced by streaming
     years ago.
   * NTCP: Hopefully fix race NPE, thx devzero
@@ -7081,7 +7423,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * Transport clock skews:
       - Store and report UDP clock skews even for large values, so
         a badly skewed local clock will be reported to the console
-      - Don't shitlist for NTCP clock skew if we don't know what time it is
+      - Don't banlist for NTCP clock skew if we don't know what time it is
       - If NTP hasn't worked yet, have NTCP or SSU update the clock one time
       - Include failed clock skew in NTCP skew vector if there aren't many connections
       - Don't include NTCP clock skews for non-established connections
@@ -7443,7 +7785,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * addressbook: Move class to net.i2p.addressbook
     * build: Take two test scripts out of the installer
     * i2psnark: Bye TPB
-    * Shitlist: Fix bug from two checkins ago, all were forever
+    * Banlist: Fix bug from two checkins ago, all were forever
 
 2009-11-14 zzz
     * HTTP Proxy:
@@ -7458,7 +7800,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2009-11-11 zzz
     * Console: Some colon cleansing
     * FloodfillPeerSelector: Adjustments
-    * Shitlist: Move HTML renderer to router console,
+    * Banlist: Move HTML renderer to router console,
       add cause parameter for ease of translation,
       tag all causes
 
@@ -7806,13 +8148,13 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * logs.jsp: Add system encoding
     * Ministreaming: Cleanups, deprecation, move demos out of the lib
     * netdb.jsp: Flags for leases
-    * NTCP: Clean up clock skew shitlist message
+    * NTCP: Clean up clock skew banlist message
     * profiles.jsp:
       - Rename the Failing column
       - Reduce the time cutoff again to 90m (was 2h)
     * readme*html: localhost -> 127.0.0.1
     * Router: Don't do some things when we are shutting down
-    * Shitlist: Clean up expire message
+    * Banlist: Clean up expire message
     * Stats:
       - Fix BufferedStatsLog so it works at all
       - Don't instantiate BufferedStatsLog unless stats.logFilters
@@ -7878,7 +8220,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
            including our own
         2) It randomly dies after a while
     * Console:
-      - Rename the shitlist and the blocklist
+      - Rename the banlist and the blocklist
       - Try to reduce servlet problems on iframe
       - Select server or client icon for local dests
     * EepHead: New
@@ -8613,7 +8955,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
         spiff up tunnels.jsp and profiles.jsp.
         Existing installs can get files with 'ant updaterWIthGeoIP'
         or in the console docs bundle 'ant consoleDocs'
-      - Use flags for shitlist and peers.jsp too
+      - Use flags for banlist and peers.jsp too
       - Tweak tunnels.jsp to show class letters
       - Hide in-progress details on tunnels.jsp
       - Add a little color to confignav
@@ -9094,7 +9436,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       - Plug in-progress build leak
 
 2009-02-07 zzz
-    * ClientConnectionRunner, Shitlist, TunnelDispatcher:
+    * ClientConnectionRunner, Banlist, TunnelDispatcher:
       Update using concurrent
     * Streaming ConnectionHandler: Bound SYN queue and
       use concurrent to prevent blowup
@@ -9242,13 +9584,13 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       - Floodfills periodically shuffle their KBuckets, and
         FloodfillPeerSelector sorts more keys, so that
         exploration works well
-    * Shitlist: Reduce max time to 30m (was 60m)
+    * Banlist: Reduce max time to 30m (was 60m)
     * Streaming:
       - Reduce default initial window size from 12 to 6,
          to account for the MTU increase in the last release
          and try to limit initial packet loss
       - Reduce fast retransmit threshold from 3 to 2
-    * Transport: Don't shitlist a peer if we are at our
+    * Transport: Don't banlist a peer if we are at our
       connection limit
 
 2009-01-03 zzz
@@ -9372,7 +9714,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 
 2008-11-21 zzz
     * Cache DNS and negative DNS for 5m (was 1m and forever)
-    * Delay shitlist cleaner at startup
+    * Delay banlist cleaner at startup
     * Strip wrapper properties from client config
     * Define multiple cert type
     * Prohibit negative maxSends in streaming
@@ -9580,7 +9922,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * configpeer.jsp: Add blocklist info
     * help.jsp: Add link to German FAQ
     * tunnels.jsp: Fix inactive participating count
-    * SearchReplyJob: Don't look up references to shitlisted peers
+    * SearchReplyJob: Don't look up references to banlisted peers
     * TunnelPeerSelector: Avoid a peer for 20s after a reject or timeout
 
 2008-09-20 zzz
@@ -9643,7 +9985,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2008-09-06 zzz
     * EepGet command line: Fix byte counts after a failed resume
     * NTCP: Mark unreachable on outbound connection timeout
-    * Shitlist: Fix partial shitlisting (still unused though)
+    * Banlist: Fix partial banlisting (still unused though)
     * Summary Bar: Warn if firewalled and floodfill
     * Throttle: Combine current and last bw measurement,
       reduce default max tunnels to 2500 (was 3000)
@@ -9687,16 +10029,16 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2008-08-04 zzz
     * Floodfill Peer Selector:
       - Avoid peers whose netdb is old, or have a recent failed store,
-        or are forever-shitlisted
+        or are forever-banlisted
 
 2008-07-30 zzz
     * Blocklists:
       - New, disabled by default, except for blocking of
-        forever-shitlisted peers. See source for instructions
+        forever-banlisted peers. See source for instructions
         and file format.
     * Transport - Reject peers from inbound connections:
       - Check IP against blocklist
-      - Check router hash against forever-shitlist, then block IP
+      - Check router hash against forever-banlist, then block IP
 
 2008-07-16 zzz
     * configpeer.jsp: New
@@ -9728,7 +10070,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       - Change some logging from WARN to INFO
       - Clean up toString()
     * SSU:
-      - Try to pick better introducers by checking shitlist,
+      - Try to pick better introducers by checking banlist,
         wasUnreachable list, failing list, and idle times
       - To keep introducer connections up and valid,
         periodically send a "ping" (a data packet with no data and no acks)
@@ -9815,8 +10157,8 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 
 2008-06-07 zzz
     * NetDb: Tweak some logging on lease problems
-    * Shitlist:
-      - Add shitlistForever() and isShitlistedForever(), unused for now
+    * Banlist:
+      - Add banlistForever() and isBanlistedForever(), unused for now
       - Sort the HTML output by router hash
     * netdb.jsp:
       - Sort the lease HTML output by dest hash, local first
@@ -9858,7 +10200,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
         (for SAM for example). Defaults to true of course.
     * Logging: Move common WARN output to DEBUG so we can ask users to
         set the default log level to WARN without massive spewage
-    * ProfileOrganizer: Restrict !isSelectable() (i.e. shitlisted) peers from the High Capacity tier,
+    * ProfileOrganizer: Restrict !isSelectable() (i.e. banlisted) peers from the High Capacity tier,
       not just the Fast tier, since we don't use them for tunnels anyway
     * SAM: Add some compiler flexibility to two obscure makefiles
     * i2psnark: Change displayed peer idents to match that shown by bytemonsoon
@@ -10021,7 +10363,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2008-04-17 zzz
     * Reachability:
       - Track unreachable peers persistently
-        (i.e. separately from shitlist, and not cleared when they contact us)
+        (i.e. separately from banlist, and not cleared when they contact us)
       - Exclude detected unreachable peers from inbound tunnels
       - Exclude detected unreachable peers from selected leases
       - Exclude detected unreachable floodfill peers from lookups
@@ -10029,15 +10371,15 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 
 2008-04-16 zzz
     * SSU/Reachability:
-      - Extend shitlist time from 4-8m to 40-60m
-      - Add some shitlist logging
-      - Don't shitlist twice when unreachable on all transports
+      - Extend banlist time from 4-8m to 40-60m
+      - Add some banlist logging
+      - Don't banlist twice when unreachable on all transports
       - Exclude netDb-listed unreachable peers from inbound tunnels;
         this won't help much since there are very few of these now
       - Remove 10s delay on inbound UDP connections used for the
         0.6.1.10 transition
       - Track and display UDP connection direction on peers.jsp
-      - Show shitlist status in-line on profiles.jsp
+      - Show banlist status in-line on profiles.jsp
 
 2008-04-15 zzz
     * SSU Reachability/PeerTestManager:
@@ -10135,7 +10477,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 
 2008-03-14 zzz
     * Floodfill Search:
-       - Prefer heard-from, unfailing, unshitlisted floodfill peers
+       - Prefer heard-from, unfailing, unbanlisted floodfill peers
 
 2008-03-14 zzz
     * ProfileOrganizer:
@@ -10920,8 +11262,8 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       new "identlog.txt" text file in the I2P install directory.  For
       debugging purposes, publish the count of how many identities the
       router has cycled through, though not the identities itself.
-    * Cleaned up the way the multitransport shitlisting worked, and
-      added per-transport shitlists
+    * Cleaned up the way the multitransport banlisting worked, and
+      added per-transport banlists
     * When dropping a router reference locally, first fire a netDb
       lookup for the entry
     * Take the peer selection filters into account when organizing the
@@ -10951,7 +11293,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       even if those shouldn't exist)
 
 2006-07-14  jrandom
-    * Improve the multitransport shitlisting (thanks Complication!)
+    * Improve the multitransport banlisting (thanks Complication!)
     * Allow routers with a capacity of 16-32KBps to be used in tunnels under
       the default configuration (thanks for the stats Complication!)
     * Properly allow older router references to load on startup
@@ -10973,7 +11315,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       GNU/Classpath based JVMs
     * Adjust the Fortuna PRNG's pooling system to reduce contention on
       refill with a background thread to refill the output buffer
-    * Add per-transport support for the shitlist
+    * Add per-transport support for the banlist
     * Add a new async pumped tunnel gateway to reduce tunnel dispatcher
       contention
 
@@ -11043,7 +11385,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * SSU modifications to cut down on unnecessary connection failures
 
 2006-05-16  jrandom
-    * Further shitlist randomizations
+    * Further banlist randomizations
     * Adjust the stats monitored for detecting cpu overload when dropping new
       tunnel requests
 
@@ -11256,7 +11598,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       picker.
     * Cut down on subsequent streaming lib reset packets transmitted
     * Use a larger MTU more often
-    * Allow netDb searches to query shitlisted peers, as the queries are
+    * Allow netDb searches to query banlisted peers, as the queries are
       indirect.
     * Add an option to disable non-floodfill netDb searches (non-floodfill
       searches are used by default, but can be disabled by adding
@@ -11318,7 +11660,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       searches outside the floodfill set)
     * Fix to the SSU IP detection code so we won't use introducers when we
       don't need them (thanks Complication!)
-    * Add a brief shitlist to i2psnark so it doesn't keep on trying to reach
+    * Add a brief banlist to i2psnark so it doesn't keep on trying to reach
       peers given to it
     * Don't let netDb searches wander across too many peers
     * Don't use the 1s bandwidth usage in the tunnel participation throttle,
@@ -11877,7 +12219,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       left to the (work in progress) web UI.
 
 2005-12-14  jrandom
-    * Fix to drop peer references when we shitlist people again (thanks zzz!)
+    * Fix to drop peer references when we banlist people again (thanks zzz!)
     * Further I2PSnark fixes to deal with arbitrary torrent info attributes
       (thanks Complication!)
 
@@ -11976,7 +12318,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       separate jdom or rome, as they're inside syndie.war.
 
 2005-11-30  jrandom
-    * Don't let the TCP transport alone shitlist a peer, since other
+    * Don't let the TCP transport alone banlist a peer, since other
       transports may be working.  Also display whether TCP connections are
       inbound or outbound on the peers page.
     * Fixed some substantial bugs in the SSU introducers where we wouldn't
@@ -12044,7 +12386,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       address (read: SSU IP or port).  This only offers minimal additional
       protection against trivial attackers, but should provide functional
       improvement for people who have periodic IP changes, since their new
-      router address would not be shitlisted while their old one would be.
+      router address would not be banlisted while their old one would be.
     * Added further infrastructure for restricted route operation, but its use
       is not recommended.
 
@@ -12192,10 +12534,10 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * Improved the bandwidth throtting on tunnel participation, especially for
       low bandwidth peers.
     * Improved failure handling in SSU with proactive reestablishment of
-      failing idle peers, and rather than shitlisting a peer who failed too
+      failing idle peers, and rather than banlisting a peer who failed too
       much, drop the SSU session and allow a new attempt (which, if it fails,
-      will cause a shitlisting)
-    * Clarify the cause of the shitlist on the profiles page, and include
+      will cause a banlisting)
+    * Clarify the cause of the banlist on the profiles page, and include
       bandwidth limiter info at the bottom of the peers page.
 
 2005-10-26  jrandom
@@ -12208,7 +12550,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2005-10-25  jrandom
     * Defer netDb searches for newly referenced peers until we actually want
       them
-    * Ignore netDb references to peers on our shitlist
+    * Ignore netDb references to peers on our banlist
     * Set the timeout for end to end client messages to the max delay after
       finding the leaseSet, so we don't have as many expired messages floating
       around.
@@ -12423,7 +12765,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       reseeding - useful on OSes that make it hard to create dot files.
       Thanks Complication (and anon)!
     * Fixed the installer version string (thanks Frontier!)
-    * Added cleaner rejection of invalid IP addresses, shitlist those who send
+    * Added cleaner rejection of invalid IP addresses, banlist those who send
       us invalid IP addresses, verify again that we are not sending invalid IP
       addresses, and log an error if it happens. (Thanks Complication, ptm,
       and adab!)
@@ -12451,7 +12793,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       instead of k/cwin)
     * Limit the number of inbound SSU sessions being built at once (using
       half of the i2np.udp.maxConcurrentEstablish config prop)
-    * Don't shitlist on a message send failure alone (unless there aren't any
+    * Don't banlist on a message send failure alone (unless there aren't any
       common transports).
     * More careful bandwidth bursting
 
@@ -12588,7 +12930,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2005-09-13  jrandom
     * More careful error handling with introductions (thanks dust!)
     * Fix the forceIntroducers checkbox on config.jsp (thanks Complication!)
-    * Hide the shitlist on the summary so it doesn't confuse new users.
+    * Hide the banlist on the summary so it doesn't confuse new users.
 
 2005-09-12  comwiz
     * Migrated the router tests to junit
@@ -12695,8 +13037,8 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
 2005-08-24  jrandom
     * Catch errors with corrupt tunnel messages more gracefully (no need to
       kill the thread and cause an OOM...)
-    * Don't skip shitlisted peers for netDb store messages, as they aren't
-      necessarily shitlisted by other people (though they probably are).
+    * Don't skip banlisted peers for netDb store messages, as they aren't
+      necessarily banlisted by other people (though they probably are).
     * Adjust the netDb store per-peer timeout based on each particular peer's
       profile (timeout = 4x their average netDb store response time)
     * Don't republish leaseSets to *failed* peers - send them to peers who
@@ -12739,14 +13081,14 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       netDb.
     * Don't overwrite the status with 'unknown' unless we haven't had a valid
       status in a while.
-    * Make sure to avoid shitlisted peers for peer testing.
+    * Make sure to avoid banlisted peers for peer testing.
     * When we get an unknown result to a peer test, try again soon afterwards.
     * When a peer tells us that our address is different from what we expect,
       if we've done a recent peer test with a result of OK, fire off a peer
       test to make sure our IP/port is still valid.  If our test is old or the
       result was not OK, accept their suggestion, but queue up a peer test for
       later.
-    * Don't try to do a netDb store to a shitlisted peer, and adjust the way
+    * Don't try to do a netDb store to a banlisted peer, and adjust the way
       we monitor netDb store progress (to clear up the high netDb.storePeers
       stat)
 
@@ -13378,7 +13720,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
     * Fix a fencepost in the tunnel building so that e.g. a variance of
       2 means +/- 2, not +/- 1 (thanks dm!)
     * Avoid an NPE on client disconnect
-    * Never select a shitlisted peer to participate in a tunnel
+    * Never select a banlisted peer to participate in a tunnel
     * Have netDb store messages timeout after 10s, not the full 60s (duh)
     * Keep session tags around for a little longer, just in case (grr)
     * Cleaned up some closing event issues on the streaming lib
@@ -14228,7 +14570,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       (thanks Jonva!)
 
 2004-10-04  jrandom
-    * Update the shitlist to reject a peer for an exponentially increasing
+    * Update the banlist to reject a peer for an exponentially increasing
       period of time (with an upper bounds of an hour).
     * Various minor stat and debugging fixes
 
@@ -14242,7 +14584,7 @@ i2psnark: Fix ConnectionAcceptor not restarting after tunnel
       such as "dbResponseTime" or "tunnelTestResponseTime".
 
 2004-10-02  jrandom
-    * Assure that we quickly fail messages bound for shitlisted peers.
+    * Assure that we quickly fail messages bound for banlisted peers.
     * Address a race on startup where the first peer contacted could hang the
       router (thanks Romster!)
     * Only whine about an intermittent inability to query the time server once
diff --git a/installer/install.xml b/installer/install.xml
index cdbf0a510f782d6c15b19387d0cda4164418520a..f7cdcfbbd8bd0136a5ba0dd92d8e5502be6d3f9c 100644
--- a/installer/install.xml
+++ b/installer/install.xml
@@ -4,7 +4,7 @@
 
     <info>
         <appname>i2p</appname>
-        <appversion>0.9.19</appversion>
+        <appversion>0.9.22</appversion>
         <authors>
             <author name="I2P" email="https://geti2p.net/"/>
         </authors>
diff --git a/installer/resources/certificates/news/ampernand_at_gmail.com.crt b/installer/resources/certificates/news/ampernand_at_gmail.com.crt
new file mode 100644
index 0000000000000000000000000000000000000000..70956369b948c2910dcefa012ca54480beb6fc8c
--- /dev/null
+++ b/installer/resources/certificates/news/ampernand_at_gmail.com.crt
@@ -0,0 +1,32 @@
+-----BEGIN CERTIFICATE-----
+MIIFhTCCA22gAwIBAgIEGdD2PTANBgkqhkiG9w0BAQ0FADBzMQswCQYDVQQGEwJY
+WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt
+b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEcMBoGA1UEAwwTYW1wZXJuYW5kQGdt
+YWlsLmNvbTAeFw0xNTA3MjIxMjMxMTBaFw0yNTA3MjExMjMxMTBaMHMxCzAJBgNV
+BAYTAlhYMQswCQYDVQQIEwJYWDELMAkGA1UEBxMCWFgxHjAcBgNVBAoTFUkyUCBB
+bm9ueW1vdXMgTmV0d29yazEMMAoGA1UECxMDSTJQMRwwGgYDVQQDDBNhbXBlcm5h
+bmRAZ21haWwuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjpTU
+nBYHsqpQbAodtOQlEaRTMMI4YUi+JBMNEmlU2/9MozW13xxFr6brfgYTje0dTTgN
+eGe/pvDM7H/a5ppSIEFCGDnn9mwrciIjHMaXeb7Z4cvxwFVwOxMclsFiw/+3sHQj
+GyoR6TQQfsIupdtKwedmBQgVmHU+UKg3WKCyaE6J7DNHa0/nD4vtW+vaXFpv8o1w
+PqEOar1Y34glxq6NTiivgGFtckBWkFLTQNjOAh/uSsdhnSDKiNHKFa3mNzjm2glf
+B0ETP3yOMkEbVf9tTanlJbYsMEpfeajymGd5+P1S/2Eo0c2MlJOvLkLXAvXMdHzK
+kmOTsSn/65bm5Rc2X+GQflLJlC0kuBoIyTXqFiAY7CN5y4F9llbjQ91CE2WgRv5U
+dGcEilAjE36ZenQvHlKfHEs0SLAfb86GA0R5cBPQeTZq3AEqAJ9NaFgFzGvKzlJ/
+8c3JeOMyc/1YwodoWwhuNICGijAA5X7MUrJVZAh4Z18ZoOd3ITkUz/ugkHhmFU3Z
+vV8LrHUoIiZxTsjSxhxYz7JHQa3eZQty4/66j+FXZThzwBm419RlXLnHVURwwQaX
+znC7qYUE0YeiHDw4NaGwM8qlayPYMyD8sggZfXDH+SoeJBCji6zfgbdpF/aEsQhi
+++/SWDNJfy6V1TQL5AXpmJEZmUTnZKm7paJfgyUCAwEAAaMhMB8wHQYDVR0OBBYE
+FIBx9Nz6oPIgX8pKgmL04wxFkVWuMA0GCSqGSIb3DQEBDQUAA4ICAQAMsHfnEB/q
+p8ToRmythRTiDjgSEc0VDOzKdizieJtFcFgK0WEzpuTeTXo012bTCv+qE5wWf32d
+Lgv49PDJw+j8spkkdZzO6GIRhbI1C/4sCPe6p6ev/a3SZIbUi4NGIW48DeEIArjt
+AwF94b3v4t067oZ1rNIHgdiKvqIMdztPiyqOjcx1/iuFDkrOnByqvWXVmOxHGskZ
+F7CqId1/WVRCdzVYK6Ln5HwDHfZr8EYWTZE6zUd5osHJMYeitRYBtk7tylrDk3uP
+88BD/fHRxc5+hBKEhVHua7Arm9R2CPvgK352dyxIpoiGuOUr98A8tM08pU6gNnuO
+OZ7LU+5+Oc8FqPuUyhogwgDuBFA7s0fx464F1jofVPWOlarNZq7Mc0AwlA6jwLRY
+1HExOlKkMbhALSOOAnSypozxFg1t8bkb0QUaUuz7Rck3gKvHX99mqzl7Ql6ZS4rm
+umJNDEsGh0F6dxEQJ+b2I7NbSpGEf8PaUM5jASZeQncjPCMfBjPC8QwzYySLad5Y
+n9e9sZN92zPYetdiQfpHwRY4N8itb4rb6TpwiSG6vVVvQJdFt77Y+4MtgFm9ofqA
+ZDOBxt0r2AOT4Jrj92ifCKLDjevTaZjCSS2lPMMZbxoL+TXvNu12IKCm9rKn/+oP
+WX+lDNy2nNJXrnKSvcyrBWxAi8+t0ZzGug==
+-----END CERTIFICATE-----
diff --git a/installer/resources/certificates/reseed/j_at_torontocrypto.org.crt b/installer/resources/certificates/reseed/j_at_torontocrypto.org.crt
new file mode 100644
index 0000000000000000000000000000000000000000..4a2789ec03291d1d8987f75e33deafbc963a451e
--- /dev/null
+++ b/installer/resources/certificates/reseed/j_at_torontocrypto.org.crt
@@ -0,0 +1,34 @@
+-----BEGIN CERTIFICATE-----
+MIIF7TCCA9egAwIBAgIQJpzITX40IacsYOr3X98gPzALBgkqhkiG9w0BAQswczEL
+MAkGA1UEBhMCWFgxHjAcBgNVBAoTFUkyUCBBbm9ueW1vdXMgTmV0d29yazEMMAoG
+A1UECxMDSTJQMQswCQYDVQQHEwJYWDELMAkGA1UECRMCWFgxHDAaBgNVBAMME2pA
+dG9yb250b2NyeXB0by5vcmcwHhcNMTUwOTIyMjIxNTMzWhcNMjUwOTIyMjIxNTMz
+WjBzMQswCQYDVQQGEwJYWDEeMBwGA1UEChMVSTJQIEFub255bW91cyBOZXR3b3Jr
+MQwwCgYDVQQLEwNJMlAxCzAJBgNVBAcTAlhYMQswCQYDVQQJEwJYWDEcMBoGA1UE
+AwwTakB0b3JvbnRvY3J5cHRvLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
+AgoCggIBAKbQH61RibAeLRemYah/071wPid99vpPoVxJMwFc/42kbnpSFHUiXRYP
+WMkzqPmdZRkr9BNqt3Fa19IiMQbJ49yKRh9+HPJ09b88r2Z75wo71b4eq4Ohd8/4
+pSfn7zPCxtqvBh79N0e6O1jC7I01WkXaQfRN1BpIpRT/80H7muWOHoN/AFbJL2KK
+eRx+G1hsHqn3pBcsq5QV+bAQdpzxYYYKHn/EPFYk9LM3p1F2uWOQDN0UU+rINvpw
+JIR+cvk/bTpPpMCQrYIXdn4hxgCX7KeKYvsFpTieMmGU0omFGWMRc5nm23REpm1N
+cU7Oj8kUIW9YbCMzR4KT/x6h1BwRS4L9Hq/ofQM+vDXff3zvcw7MMmVpgU/jh/9I
+XNc6A3IBHfpJaxIzhk7UfOZX6k1kyeXjXA8Gr5FvA9Ap9eH7KVFXeyaYq1gTWrGA
+MPvgY6dNAH7OFXtqZUGrIAqyWnbaxEsO1HWyRYitCM91LI5gFURUwQPzo2ewgshq
+0uGaO+2J61fM9cb8aKOU8Yaa4N04sZfu85k402Kr7bP/DE7Hv9K0+U5ZtbCJxrOU
+z5YgbfCrh/iwFti8VP8wFv29S1d6Kqj9OVroM1ns9aNwqyYsMbj/STe8BBRncxuw
+lkf69FXxyaGtyfc9ry8enkL8QYyzbVDRXw01yogwToZ8Mc/PinI7AgMBAAGjgYAw
+fjAOBgNVHQ8BAf8EBAMCAIQwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
+MA8GA1UdEwEB/wQFMAMBAf8wHAYDVR0OBBUEE2pAdG9yb250b2NyeXB0by5vcmcw
+HgYDVR0jBBcwFYATakB0b3JvbnRvY3J5cHRvLm9yZzALBgkqhkiG9w0BAQsDggIB
+AJGmZv3TKCwuNafmPUCvvJV6PwdBqYdVX270pLI2IjPa5sE+dDiCrrrH5tVsoUfY
+1xAy0eclic3SCu2DdQxicYFIsyN91oyZWljnVuOWDRQoyeGvcwN3FN8WQZ/VnoX/
+b4Xtx0D3HsQjLXfzk0AzSXp9TP9/orMR5bkWiqhUhXvlb7XhpZ+p9/8N0D7bjcaJ
+74Rn6g3sS+/wKJ0c7h5R3+mRNPW1SecbfQFN/GkgDQxZscvmbRsCG03IRQeYpqt2
+M8KA5KXu/H6ZU5XlC6+VI7vf6yWWPf3s8CRBDgfYtI7uRFkfwJLsTBZCOFoyQe+F
+CIZZj4lg6f46FHMekbPouw+g2B+2QNdW+fZqdVLAXbuN2xMsVakZn5X9iBfanNmN
+t5QH4T81SZb9ZIJSD+L0lKiMw1klbaYYPp2mjwbo42DhsezcJX3TKXhMe3qkYZ3I
+E0a9Kq4TmoWAkdycT1oH51wmybwWc3ix7rXbUe8h6KgBEXqJV60ybX7iacrq9WgG
+xIr5hnSUEGZtMcdhEA4oD319h+8j/UjXKgWwuuNExpSnARbwQTbPJ/PLD6mQVpHv
+jL2S9nbb1r/GmRdzCpHVwLGczUJvwfjAZ8bDCONSGHzuzw8lgpdRpdeWCLfQzXyo
+mjh0U8QNpeHEMdQhmnaYa8WJ83DTnO7pwaoYqjeDQ9yM
+-----END CERTIFICATE-----
diff --git a/installer/resources/certificates/ssl/193.150.121.66.crt b/installer/resources/certificates/ssl/193.150.121.66.crt
deleted file mode 100644
index 450581d236a5b95e127a76fca8931336197e3809..0000000000000000000000000000000000000000
--- a/installer/resources/certificates/ssl/193.150.121.66.crt
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDgDCCAmgCCQCAKEkFUJcEezANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UEBhMC
-Tk8xDTALBgNVBAgMBE9zbG8xDTALBgNVBAcMBE9zbG8xDDAKBgNVBAoMA0kyUDEM
-MAoGA1UECwwDSTJQMRcwFQYDVQQDDA4xOTMuMTUwLjEyMS42NjEfMB0GCSqGSIb3
-DQEJARYQbWVlaEBpMnBtYWlsLm9yZzAeFw0xMzA2MjcxODM2MjhaFw0yMDA2MjUx
-ODM2MjhaMIGBMQswCQYDVQQGEwJOTzENMAsGA1UECAwET3NsbzENMAsGA1UEBwwE
-T3NsbzEMMAoGA1UECgwDSTJQMQwwCgYDVQQLDANJMlAxFzAVBgNVBAMMDjE5My4x
-NTAuMTIxLjY2MR8wHQYJKoZIhvcNAQkBFhBtZWVoQGkycG1haWwub3JnMIIBIjAN
-BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuBuFY4ZFvsbr5l1/s/GeUBLIWQLB
-nqrRkonrwCyxgjSnnG1uz/Z5nf6QDUjiVnFKMXenLaDn4KCmEi4LjWQllhK9r6pj
-BRkR7C0DTHq7WqfyvWnGSZZsOJDiH2vLlivV8N9oGdjxvv0N9No3AJcsmLYrxSLi
-6/JF8xZ2HGuT/oWW6aWvpIOKpIqti865BJw5P5KgYAS24J8vHRFM3FA4dfLNTBA2
-IGqPqYLQA+2zfOC4z01aArmcYnT1iJLT7krgKnr/BXdJfGQ2GjxkRSt8IwB6WmXA
-byz6QdNYM/0eubi102/zpD/DrySTU2kc8xKjknGUqBJvVdsL+iLK98uJrQIDAQAB
-MA0GCSqGSIb3DQEBBQUAA4IBAQCTimMu3X7+ztXxlIFhwGh42GfMjeBYT0NHOLAy
-ZtQNRqhNvkl3jZ4ERPLxP99+bcAfCX0wgVpgD32OWEZopwveRyMImP8HfFr4NnZ+
-edbM37fRYiVJv57kbi6O0rhEC7J5JF+fnCaZVLCuvYIrIXTdxTjvxuLhyan6Ej7V
-7iGDJ8t16tpLVJgcXfRg+dvAa6aDOK6x3w78j0bvh6rhvpOd9sW/Nk3LBKP4Xgkx
-PHkqm3hNfDIu8Hubeav9SA1kLVMS/uce52VyYMEDauObfC65ds0GRmCtYhZqMvj+
-FFCbssLraVJE9Hi/ZKGu33jNngDCG+wG+nmleksMYE1yTSRt
------END CERTIFICATE-----
diff --git a/installer/resources/certificates/ssl/i2p.mooo.com.crt b/installer/resources/certificates/ssl/i2p.mooo.com.crt
index ac10e1ff4c1267c236e03095326b62361f39e7ad..839767b3b2d97b8d68a1ce1abaa3335b32b4788c 100644
--- a/installer/resources/certificates/ssl/i2p.mooo.com.crt
+++ b/installer/resources/certificates/ssl/i2p.mooo.com.crt
@@ -1,23 +1,23 @@
 -----BEGIN CERTIFICATE-----
-MIIDvjCCAyegAwIBAgICZhcwDQYJKoZIhvcNAQEFBQAwdTELMAkGA1UEBhMCVVMx
-DTALBgNVBAgMBG5vbmUxDTALBgNVBAcMBG5vbmUxDTALBgNVBAoMBG5vbmUxDTAL
-BgNVBAsMBG5vbmUxFTATBgNVBAMMDGkycC5tb29vLmNvbTETMBEGCSqGSIb3DQEJ
-ARYEbm9uZTAeFw0xMTEwMjMyMTM2NDFaFw0xOTEwMjMyMTM2NDFaMGYxCzAJBgNV
-BAYTAlVTMQ0wCwYDVQQIDARub25lMQ0wCwYDVQQKDARub25lMQ0wCwYDVQQLDARu
-b25lMRUwEwYDVQQDDAxpMnAubW9vby5jb20xEzARBgkqhkiG9w0BCQEWBG5vbmUw
-ggGPMA0GCSqGSIb3DQEBAQUAA4IBfAAwggF3AoIBbgMG1O7HRVa7UoiKbQTmKy5m
-x79Na8vjD3etcOwfc4TSenQFvn+GbAWkJwKpM8uvOcgj1CxNeHWdSaeTFH1OwJsw
-vl3leJ7clMdo3hpQDhPeGzBLyOiWwFHVn15YKa9xcM7S9Op5Q6rKBHUyyx1vGSz+
-/NBmkktpI6rcGFfP3ISRL0auR+db+adWv4TS6W8YiwQIVZNbSlKP6FNO9Mv1kxQZ
-KoHPn8vT/LtAh1fcI6ryBuy3F5oHfbGumIwsS5dpowryFxQzwg5vtMA7AMCMKyXv
-hP/W6OuaaEP5MCIxkWjQs35gOYa8eF1dLoy3AD9yVVhoNrA8Bc5FnVFJ32Qv7agy
-qRY85cXBA6hT/Qzs/wWwp7WrrnZuifaSv/u/Ayi5vX42/bf86PSM2IRNIESoA98A
-NFz4U2KGq9s1K2JbkQmnFy8IU0w7CMq6PvNEm/uNjSk6OE1rcCXML+EuX0zmXy8d
-PjRbLzC9csSg2CqMtQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQf
-Fh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUdjuOczdG
-hUpYzH0UXqKrOleT8GkwHwYDVR0jBBgwFoAU+SKWC49cM5sCodv89AFin3pkS0Yw
-DQYJKoZIhvcNAQEFBQADgYEAKYyWlDIStjjbn/ZzVScKR174I8whTbdqrX/vp9dr
-2hMv5m4F+aswX4Jr58WneKg2LvRaL6xEhoL7OAQ6aB/7xVSpDjIrrBLZd513NAam
-X6bOPYJ6IH7Vw9ClFY3AlfzsNlgRMXno7rySKKzhg24kusNwKDH2yCphZy4BgjMn
-y6A=
+MIIDvTCCAqWgAwIBAgIJAOeW0ejPrHimMA0GCSqGSIb3DQEBCwUAMHUxCzAJBgNV
+BAYTAlVTMQ0wCwYDVQQIDARub25lMQ0wCwYDVQQHDARub25lMQ0wCwYDVQQKDARu
+b25lMQ0wCwYDVQQLDARub25lMRUwEwYDVQQDDAxpMnAubW9vby5jb20xEzARBgkq
+hkiG9w0BCQEWBG5vbmUwHhcNMTUwMjA4MTczMzA5WhcNMTkwMzE5MTczMzA5WjB1
+MQswCQYDVQQGEwJVUzENMAsGA1UECAwEbm9uZTENMAsGA1UEBwwEbm9uZTENMAsG
+A1UECgwEbm9uZTENMAsGA1UECwwEbm9uZTEVMBMGA1UEAwwMaTJwLm1vb28uY29t
+MRMwEQYJKoZIhvcNAQkBFgRub25lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
+CgKCAQEAqxej7oRl9GOb8benIBCENrJXoow1iWhI9M+2nU0SaonrCDql5M2YMlwd
+HzYUWtFbRjz2NinjB0fgFq9cfzHfr1Sc8k/OeGg1jvNfqt8wWo9tryQNjiHtDQUZ
+6lQ5T13I+lj0CBasowgbApKQfrYjvaeuTaVYTfP8IVA60hoUQ+sy9JN+Unsx3/0Y
+PLLd98+bT27qYuBNRB1g/ifUTd9Wosj2PevGBlCxYDaUjmCG4Q8kcQr87KvM6RTu
+3AV61s/Wyy1j2YemlGG/ZhJ44YnlVMSu1vTjt9HInVf3lRRx/+RzbQO3lqeVC8LC
+Bq3KbSlfJVx4vHslfHwBFw9A4rmD1QIDAQABo1AwTjAdBgNVHQ4EFgQUsSUvX0ED
+yivB67iksVwZ+b8vLtQwHwYDVR0jBBgwFoAUsSUvX0EDyivB67iksVwZ+b8vLtQw
+DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAde4wts7Q8TylFEc38ftJ
+2f285fFIR7P1SSbBcHPK2eBwLEg0zJyFrCeiHuEpPrn+d5GqL2zOskjfcESGmDBT
+aFajj8jPBJj/AmpkdWJG6a1YKro5tu9wrlenGwHOHu2/Cl0IJvafxrOs2x4G+2Nl
+5Hcw/FIy8mK7eIch4pACfi0zNMZ6KMCKfX9bxPrQo78WdBfVjbrIBlgyOQJ5NJEF
+JlWvS7Butv7eERi4I2huN5VRJSCFzjbuO+tjP3I8IB6WgdBmTeqq8ObtXRgahBuD
+ZmkvqVSfIzK5JN4GjO8FOdCBomuwm9A92kgmAptwQwAHM9qCDJpH8L07/7poxlGb
+iA==
 -----END CERTIFICATE-----
diff --git a/installer/resources/certificates/ssl/i2p.mooo.com2.crt b/installer/resources/certificates/ssl/i2p.mooo.com2.crt
deleted file mode 100644
index 839767b3b2d97b8d68a1ce1abaa3335b32b4788c..0000000000000000000000000000000000000000
--- a/installer/resources/certificates/ssl/i2p.mooo.com2.crt
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDvTCCAqWgAwIBAgIJAOeW0ejPrHimMA0GCSqGSIb3DQEBCwUAMHUxCzAJBgNV
-BAYTAlVTMQ0wCwYDVQQIDARub25lMQ0wCwYDVQQHDARub25lMQ0wCwYDVQQKDARu
-b25lMQ0wCwYDVQQLDARub25lMRUwEwYDVQQDDAxpMnAubW9vby5jb20xEzARBgkq
-hkiG9w0BCQEWBG5vbmUwHhcNMTUwMjA4MTczMzA5WhcNMTkwMzE5MTczMzA5WjB1
-MQswCQYDVQQGEwJVUzENMAsGA1UECAwEbm9uZTENMAsGA1UEBwwEbm9uZTENMAsG
-A1UECgwEbm9uZTENMAsGA1UECwwEbm9uZTEVMBMGA1UEAwwMaTJwLm1vb28uY29t
-MRMwEQYJKoZIhvcNAQkBFgRub25lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEAqxej7oRl9GOb8benIBCENrJXoow1iWhI9M+2nU0SaonrCDql5M2YMlwd
-HzYUWtFbRjz2NinjB0fgFq9cfzHfr1Sc8k/OeGg1jvNfqt8wWo9tryQNjiHtDQUZ
-6lQ5T13I+lj0CBasowgbApKQfrYjvaeuTaVYTfP8IVA60hoUQ+sy9JN+Unsx3/0Y
-PLLd98+bT27qYuBNRB1g/ifUTd9Wosj2PevGBlCxYDaUjmCG4Q8kcQr87KvM6RTu
-3AV61s/Wyy1j2YemlGG/ZhJ44YnlVMSu1vTjt9HInVf3lRRx/+RzbQO3lqeVC8LC
-Bq3KbSlfJVx4vHslfHwBFw9A4rmD1QIDAQABo1AwTjAdBgNVHQ4EFgQUsSUvX0ED
-yivB67iksVwZ+b8vLtQwHwYDVR0jBBgwFoAUsSUvX0EDyivB67iksVwZ+b8vLtQw
-DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAde4wts7Q8TylFEc38ftJ
-2f285fFIR7P1SSbBcHPK2eBwLEg0zJyFrCeiHuEpPrn+d5GqL2zOskjfcESGmDBT
-aFajj8jPBJj/AmpkdWJG6a1YKro5tu9wrlenGwHOHu2/Cl0IJvafxrOs2x4G+2Nl
-5Hcw/FIy8mK7eIch4pACfi0zNMZ6KMCKfX9bxPrQo78WdBfVjbrIBlgyOQJ5NJEF
-JlWvS7Butv7eERi4I2huN5VRJSCFzjbuO+tjP3I8IB6WgdBmTeqq8ObtXRgahBuD
-ZmkvqVSfIzK5JN4GjO8FOdCBomuwm9A92kgmAptwQwAHM9qCDJpH8L07/7poxlGb
-iA==
------END CERTIFICATE-----
diff --git a/installer/resources/certificates/ssl/link.mx24.eu.crt b/installer/resources/certificates/ssl/link.mx24.eu.crt
deleted file mode 100644
index 8e0d910fc90ee1f859a29e13370b97c7f9f70413..0000000000000000000000000000000000000000
--- a/installer/resources/certificates/ssl/link.mx24.eu.crt
+++ /dev/null
@@ -1,24 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEDzCCAvegAwIBAgIJAMsPNG1k0yV4MA0GCSqGSIb3DQEBCwUAMIGdMQswCQYD
-VQQGEwJERTEVMBMGA1UECAwMbGluay5teDI0LmV1MRUwEwYDVQQHDAxsaW5rLm14
-MjQuZXUxFTATBgNVBAoMDGxpbmsubXgyNC5ldTEVMBMGA1UECwwMbGluay5teDI0
-LmV1MRUwEwYDVQQDDAxsaW5rLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDGxpbmsu
-bXgyNC5ldTAeFw0xNDExMTkxOTE4NTRaFw0yMDA1MTExOTE4NTRaMIGdMQswCQYD
-VQQGEwJERTEVMBMGA1UECAwMbGluay5teDI0LmV1MRUwEwYDVQQHDAxsaW5rLm14
-MjQuZXUxFTATBgNVBAoMDGxpbmsubXgyNC5ldTEVMBMGA1UECwwMbGluay5teDI0
-LmV1MRUwEwYDVQQDDAxsaW5rLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDGxpbmsu
-bXgyNC5ldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL8modDBRkyh
-SHSm92pTfguO3F6n5ocsBJ4vaVoosYq3ILCsapjqmynMHZUef6gEB7+Gn5cKXsH2
-JaKOeb8DHrOFCaxfj187x1QfZj1UNMQblx2T9q4th12tqp+k4JuLwgemr+2uAUpM
-xx/uHRJXD0hf67+fHQFYNVfa+WvT46xlKGsWDQ0LBsA/z4YGnyeaV4PrS5nj3euA
-IbdfDj7rJea3bfhSqYA1ZH1cquKlsXOOYO5cIcXsa5dxDWX51QS+i7+ocph+JN1X
-dRh6ZirE9OXZVXwXXVRnJSYjgBlP/DQBdE7YkE1R3LyCVZsgxJaaLV/ujijOIK61
-SqEhHvFNRe0CAwEAAaNQME4wHQYDVR0OBBYEFB6XRz6VZlrAE+3xL6AyKrkq+y2X
-MB8GA1UdIwQYMBaAFB6XRz6VZlrAE+3xL6AyKrkq+y2XMAwGA1UdEwQFMAMBAf8w
-DQYJKoZIhvcNAQELBQADggEBADhxBA5GHisDVf5a+1hIi7FBGBjJJLqzlaKh+bFB
-gTCYfk3F4wYzndr1HpdCZSSYDtY3mXFNMWQCpwvwvy1DM+9AMRY68wKNXHa/WypW
-zQSqTfEH8cdaIXUALB7pdWFVr3rx0f7/8I0Gj/ByUbJ94rzd22vduX5riY0Rag6B
-dPtW0M9bJrC1AIjexzDcStupj9v/ceGYZQYC4zb2tZ7Ek/6q+vei8TxWZjku7Dl4
-YRPXXufyB24uQ1hJVy2fSyIJ63tIRJoEFLBNaKDOB53i10xLWBcsJpXKY57AOQMn
-flqW4HG8uGJ/o1WjhiOB9eI7T9toy08zNzt+kSI/blFIoek=
------END CERTIFICATE-----
diff --git a/installer/resources/certificates/ssl/user.mx24.eu.crt b/installer/resources/certificates/ssl/user.mx24.eu.crt
new file mode 100644
index 0000000000000000000000000000000000000000..38c68ab5b8d82f0eae514030573c47eb25357673
--- /dev/null
+++ b/installer/resources/certificates/ssl/user.mx24.eu.crt
@@ -0,0 +1,17 @@
+-----BEGIN CERTIFICATE-----
+MIICwDCCAkagAwIBAgIJAKXCoCBjd/C0MAoGCCqGSM49BAMEMIGdMQswCQYDVQQG
+EwJERTEVMBMGA1UECAwMdXNlci5teDI0LmV1MRUwEwYDVQQHDAx1c2VyLm14MjQu
+ZXUxFTATBgNVBAoMDHVzZXIubXgyNC5ldTEVMBMGA1UECwwMdXNlci5teDI0LmV1
+MRUwEwYDVQQDDAx1c2VyLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDHVzZXIubXgy
+NC5ldTAeFw0xNTA5MDMxNjMyNDVaFw0yMTAyMjMxNjMyNDVaMIGdMQswCQYDVQQG
+EwJERTEVMBMGA1UECAwMdXNlci5teDI0LmV1MRUwEwYDVQQHDAx1c2VyLm14MjQu
+ZXUxFTATBgNVBAoMDHVzZXIubXgyNC5ldTEVMBMGA1UECwwMdXNlci5teDI0LmV1
+MRUwEwYDVQQDDAx1c2VyLm14MjQuZXUxGzAZBgkqhkiG9w0BCQEWDHVzZXIubXgy
+NC5ldTB2MBAGByqGSM49AgEGBSuBBAAiA2IABPlKs5fYTqVhIOMiR6U9U4TimxS3
+P5NBDVzeeIAgbw5KBC8UImScZVt9g4V1wQe5kPs7TxA2BfanAPZ+ekQiRRvMVQxD
+bSlRYupEWhq5BrJI6Lq/HDc7VJe9UUWffWKUoKNQME4wHQYDVR0OBBYEFBGJ0Yr+
+PZXnrk5RafQEALUpAU6ZMB8GA1UdIwQYMBaAFBGJ0Yr+PZXnrk5RafQEALUpAU6Z
+MAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwQDaAAwZQIxAPcovePHMCosrAQNzS5i
+VDUiyPNLOxHyRBm79yKXGl13LxysB6OK+2M7t8j8E/udBwIwXVVjxN6aSgXYTJ7d
+p+Hg/2CuBMwf41/ENRcYQA+oGS9bU6A+7U9KJ1xTWWoqsUEs
+-----END CERTIFICATE-----
diff --git a/installer/resources/checklist.txt b/installer/resources/checklist.txt
index 80f4c8336a217c5d6f3eb892f1eb0e3d44896d33..b12e50e97a24011fe2f0dfe7b1f3267782c58e9e 100644
--- a/installer/resources/checklist.txt
+++ b/installer/resources/checklist.txt
@@ -1,11 +1,36 @@
 Release checklist
 -----------------
 
+One week before:
+	Make announcement on Transifex with checkin deadline
+
+
+A day or two before:
+Write the release announcement and push to Transifex:
+	Checkout i2p.newsxml branch
+	See README for setup
+	./create_new_entry.sh
+	tx push -s
+	mtn ci
+	Make announcement on Transifex asking for news translation
+
+
 Ensure all translation updates are imported from Transifex
 Sync with mtn.i2p2.i2p
-Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p
-Copy over override.properties to set build.built-by
-Double-check trust list
+Start with a clean checkout mtn -d i2p.mtn co --branch=i2p.i2p /path/to/releasedir
+You may build with Java 7 or higher, but ensure you have the Java 6 JRE installed for the bootclasspath
+
+Create override.properties with (adjust as necessary):
+-----------
+release.privkey=/path/to/private-signing.key
+release.privkey.su3=/path/to/su3keystore.ks
+release.gpg.keyid=0xnnnnnnnn
+release.signer.su3=xxx@mail.i2p
+build.built-by=xxx
+javac.compilerargs=-bootclasspath /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/rt.jar:/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jce.jar
+-----------
+
+Copy latest trust list _MTN/monotonerc from website or some other workspace
 
 Change revision in:
 	history.txt
@@ -14,6 +39,8 @@ Change revision in:
 	router/java/src/net/i2p/router/RouterVersion.java
 		(change to BUILD = 0 and EXTRA = "")
 
+mtn ci
+
 Review the complete diff from the last release:
         mtn diff -r t:i2p-0.9.(xx-1) > out.diff
         vi out.diff
@@ -27,10 +54,6 @@ NOTE: These tasks are now automated by 'ant release'
 
 Build and tag:
 	ant pkg
-	mtn ci
-	mtn tag h: i2p-0.x.xx
-	mtn cert t:i2p-0.x.xx branch i2p.i2p.release
-	Sync with mtn.i2p2.i2p
 
 Create signed update files with:
 	export I2P=~/i2p
@@ -66,15 +89,30 @@ Generate PGP signatures:
 (end of tasks automated by 'ant release')
 =========================================
 
-Add magnet links to news.xml
+Now test.
+If all goes well:
+	mtn tag h: i2p-0.x.xx
+	mtn cert t:i2p-0.x.xx branch i2p.i2p.release
+	mtn sync (with e.g. mtn.killyourtv.i2p)
+
+Add magnet links, change release dates and release number in to old-format news.xml,
+and distribute to news hosts
+In the i2p.newsxml branch, edit magnet links, release dates and release number in data/releases.json, and check in
 
-Seed update torrents
+Add update torrents to tracker2.postman.i2p and start seeding (su2 and su3)
 
 Notify the following people:
 	All in-network update hosts
 	PPA maintainer
 	news.xml maintainer
 	backup news.xml maintainer
+	website files maintainer
+
+Update Trac:
+	Add milestone and version dates
+	Increment milestone and version defaults
+
+Wait for website files to be updated
 
 Website files to change:
 	Sync with mtn.i2p-projekt.i2p
@@ -85,14 +123,11 @@ Website files to change:
 	New release announcement - see i2p2www/blog/README for instructions
 	Sync with mtn.i2p-projekt.i2p
 
+Wait for a few update hosts to be ready
+Tell news hosts to flip the switch
+Wait for debian packages to be ready
+
 Announce on:
          #i2p, #i2p-dev (also on freenode side)
          forum.i2p
          twitter
-         freshmeat.net
-         launchpad.net
-         alt.privacy.anon-server
-
-Update Trac:
-	Add milestone and version dates
-	Increment milestone and version defaults
diff --git a/installer/resources/countries.txt b/installer/resources/countries.txt
index 5707af567a68631f603f26cef0d7a63b85cb91b4..9702197ef587bf5d6239c8b1a48c9ff8bbc570bc 100644
--- a/installer/resources/countries.txt
+++ b/installer/resources/countries.txt
@@ -16,6 +16,7 @@ AL,Albania
 AM,Armenia
 AN,Netherlands Antilles
 AO,Angola
+AP,Asia/Pacific Region
 AQ,Antarctica
 AR,Argentina
 AS,American Samoa
@@ -33,9 +34,11 @@ BG,Bulgaria
 BH,Bahrain
 BI,Burundi
 BJ,Benin
+BL,Saint Barthélemy
 BM,Bermuda
 BN,Brunei Darussalam
 BO,Bolivia
+BQ,Bonaire
 BR,Brazil
 BS,Bahamas
 BT,Bhutan
@@ -45,7 +48,7 @@ BY,Belarus
 BZ,Belize
 CA,Canada
 CC,Cocos (Keeling) Islands
-CD,The Democratic Republic of the Congo
+CD,Congo
 CF,Central African Republic
 CG,Congo
 CH,Switzerland
@@ -80,7 +83,7 @@ EU,European Union
 FI,Finland
 FJ,Fiji
 FK,Falkland Islands (Malvinas)
-FM,Federated States of Micronesia
+FM,Micronesia
 FO,Faroe Islands
 FR,France
 GA,Gabon
@@ -114,7 +117,7 @@ IM,Isle of Man
 IN,India
 IO,British Indian Ocean Territory
 IQ,Iraq
-IR,Islamic Republic of Iran
+IR,Iran
 IS,Iceland
 IT,Italy
 JE,Jersey
@@ -127,7 +130,7 @@ KH,Cambodia
 KI,Kiribati
 KM,Comoros
 KN,Saint Kitts and Nevis
-KP,The Democratic People's Republic of Korea
+KP,North Korea
 KR,Republic of Korea
 KW,Kuwait
 KY,Cayman Islands
@@ -142,19 +145,19 @@ LS,Lesotho
 LT,Lithuania
 LU,Luxembourg
 LV,Latvia
-LY,Libyan Arab Jamahiriya
+LY,Libya
 MA,Morocco
 MC,Monaco
-MD,Republic of Moldova
+MD,Moldova
 ME,Montenegro
 MF,Saint Martin
 MG,Madagascar
 MH,Marshall Islands
-MK,The Former Yugoslav Republic of Macedonia
+MK,Macedonia
 ML,Mali
 MM,Myanmar
 MN,Mongolia
-MO,Macao
+MO,Macau
 MP,Northern Mariana Islands
 MQ,Martinique
 MR,Mauritania
@@ -214,9 +217,11 @@ SM,San Marino
 SN,Senegal
 SO,Somalia
 SR,Suriname
+SS,South Sudan
 ST,Sao Tome and Principe
 SV,El Salvador
-SY,Syrian Arab Republic
+SX,Sint Maarten
+SY,Syria
 SZ,Swaziland
 TC,Turks and Caicos Islands
 TD,Chad
@@ -233,19 +238,19 @@ TR,Turkey
 TT,Trinidad and Tobago
 TV,Tuvalu
 TW,Taiwan
-TZ,United Republic of Tanzania
+TZ,Tanzania
 UA,Ukraine
 UG,Uganda
 UM,United States Minor Outlying Islands
 US,United States
 UY,Uruguay
 UZ,Uzbekistan
-VA,Holy See (Vatican City State)
+VA,Vatican
 VC,Saint Vincent and the Grenadines
 VE,Venezuela
 VG,Virgin Islands
 VI,Virgin Islands
-VN,Viet Nam
+VN,Vietnam
 VU,Vanuatu
 WF,Wallis and Futuna
 WS,Samoa
diff --git a/installer/resources/deletelist.txt b/installer/resources/deletelist.txt
index 7f22f354840432be11c10a384ea60b3ef0518b5d..43212a8e30ea22b5f070312032989cbfbc29ee62 100644
--- a/installer/resources/deletelist.txt
+++ b/installer/resources/deletelist.txt
@@ -95,3 +95,4 @@ certificates/ssl/i2p-netdb.innovatio.no.crt
 certificates/ssl/jp.reseed.i2p2.no.crt
 certificates/ssl/ieb9oopo.mooo.com2.crt
 certificates/ssl/netdb.i2p2.no2.crt
+certificates/ssl/i2p.mooo.com2.crt
diff --git a/installer/resources/eepsite/jetty-ssl.xml b/installer/resources/eepsite/jetty-ssl.xml
index 7562828cc29035685ab6a1cea769f82ef6af0790..b14ca0976e117b3f6086783e8f2c442879023d9f 100644
--- a/installer/resources/eepsite/jetty-ssl.xml
+++ b/installer/resources/eepsite/jetty-ssl.xml
@@ -248,6 +248,8 @@
             <Item>TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA</Item>
             <Item>TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA</Item>
             <Item>TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
+            <Item>TLS_DHE_DSS_WITH_AES_128_CBC_SHA</Item>
+            <!-- Please keep this list in sync with the one in I2PSSLSocketFactory -->
           </Array>
         </Set>
       </New>
diff --git a/installer/resources/geoip.txt b/installer/resources/geoip.txt
index e4b3efdf437e3146c8faeb5aadf906448a7b553c..e2d1037c6918cb5bb3b813a5739be1e97e63a27d 100644
--- a/installer/resources/geoip.txt
+++ b/installer/resources/geoip.txt
@@ -1,5 +1,5 @@
 # Last updated based on Maxmind GeoLite Country
-# dated 2015-05-06
+# dated 2015-09-02
 # Script borrowed from Tor
 #
 # wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
@@ -235,7 +235,8 @@
 84148224,84410367,DE
 84410368,84418559,RU
 84418560,84419583,BZ
-84419584,84421631,RU
+84419584,84420607,RU
+84420608,84421631,NL
 84421632,84421759,MX
 84421760,84421887,PA
 84421888,84422015,BR
@@ -251,7 +252,9 @@
 84457472,84459519,ES
 84459520,84471807,RU
 84471808,84473855,IQ
-84475904,84545535,DE
+84475904,84498681,DE
+84498682,84498682,NL
+84498683,84545535,DE
 84545536,84549631,GB
 84549632,84551679,GE
 84551680,84557823,DE
@@ -435,7 +438,8 @@
 86446680,86446683,ES
 86446684,86446719,FR
 86446720,86446727,NL
-86446728,86446931,FR
+86446728,86446731,DE
+86446732,86446931,FR
 86446932,86446935,CZ
 86446936,86446983,FR
 86446984,86446991,IT
@@ -482,7 +486,9 @@
 86453312,86453315,ES
 86453316,86453836,FR
 86453837,86453838,PT
-86453839,86454187,FR
+86453839,86453947,FR
+86453948,86453951,IE
+86453952,86454187,FR
 86454188,86454191,IT
 86454192,86454279,FR
 86454280,86454287,ES
@@ -505,7 +511,11 @@
 86456352,86456367,CH
 86456368,86456371,FR
 86456372,86456375,ES
-86456376,86457059,FR
+86456376,86456655,FR
+86456656,86456671,IE
+86456672,86456943,FR
+86456944,86456947,GR
+86456948,86457059,FR
 86457060,86457060,DE
 86457061,86457087,FR
 86457088,86457091,DE
@@ -519,7 +529,9 @@
 86457456,86457456,DE
 86457457,86457799,FR
 86457800,86457803,ES
-86457804,86466839,FR
+86457804,86458303,FR
+86458304,86458335,DE
+86458336,86466839,FR
 86466840,86466847,NL
 86466848,86466943,FR
 86466944,86466959,DE
@@ -529,7 +541,9 @@
 86468000,86468003,PL
 86468004,86468055,FR
 86468056,86468056,DE
-86468057,86468447,FR
+86468057,86468199,FR
+86468200,86468200,ES
+86468201,86468447,FR
 86468448,86468479,CZ
 86468480,86468587,FR
 86468588,86468591,ES
@@ -539,13 +553,25 @@
 86469692,86469695,DE
 86469696,86469779,FR
 86469780,86469783,IT
-86469784,86470007,FR
-86470008,86470008,ES
-86470009,86470731,FR
+86469784,86469974,FR
+86469975,86469982,ES
+86469983,86469983,FR
+86469984,86469986,ES
+86469987,86469988,FR
+86469989,86469991,ES
+86469992,86469993,FR
+86469994,86469995,ES
+86469996,86470002,FR
+86470003,86470008,ES
+86470009,86470015,FR
+86470016,86470047,ES
+86470048,86470731,FR
 86470732,86470735,BE
 86470736,86471083,FR
 86471084,86471087,DE
-86471088,86471179,FR
+86471088,86471123,FR
+86471124,86471127,GB
+86471128,86471179,FR
 86471180,86471180,DE
 86471181,86473087,FR
 86473088,86473151,PT
@@ -623,7 +649,9 @@
 86837248,86839295,ES
 86839296,86843391,GB
 86847488,86849535,GB
-86849536,86851583,CZ
+86849536,86850559,CZ
+86850560,86851327,NL
+86851328,86851583,CZ
 86851584,86855679,NL
 86855680,86859775,RU
 86859776,86863871,DE
@@ -795,7 +823,10 @@
 90499072,90501119,IT
 90503168,90505215,IL
 90505216,90529791,RU
-90529792,90533887,NL
+90529792,90533119,NL
+90533120,90533375,DE
+90533376,90533631,NL
+90533632,90533887,GB
 90533888,90537983,EE
 90537984,90540031,RU
 90540032,90544127,GB
@@ -1016,7 +1047,9 @@
 92739200,92739215,DE
 92739216,92740447,FR
 92740448,92740455,IT
-92740456,92741203,FR
+92740456,92740915,FR
+92740916,92740923,DE
+92740924,92741203,FR
 92741204,92741207,IT
 92741208,92741387,FR
 92741388,92741395,IT
@@ -1061,7 +1094,9 @@
 92746416,92746431,ES
 92746432,92747711,FR
 92747712,92747775,GB
-92747776,92748773,FR
+92747776,92748751,FR
+92748752,92748752,PT
+92748753,92748773,FR
 92748774,92748774,PT
 92748775,92749067,FR
 92749068,92749071,GB
@@ -1079,7 +1114,9 @@
 92757312,92757375,ES
 92757376,92760159,FR
 92760160,92760191,DE
-92760192,92761215,FR
+92760192,92760323,FR
+92760324,92760327,DE
+92760328,92761215,FR
 92761216,92761343,DE
 92761344,92762127,FR
 92762128,92762135,ES
@@ -1107,7 +1144,9 @@
 92786828,92786831,IT
 92786832,92789499,FR
 92789500,92789503,IT
-92789504,92790271,FR
+92789504,92789703,FR
+92789704,92789707,DE
+92789708,92790271,FR
 92790272,92790275,DE
 92790276,92790671,FR
 92790672,92790679,ES
@@ -1125,7 +1164,9 @@
 92796688,92796691,DE
 92796692,92797355,FR
 92797356,92797359,DE
-92797360,92798975,FR
+92797360,92798231,FR
+92798232,92798239,NL
+92798240,92798975,FR
 92798976,93323263,RU
 93323264,93335551,CH
 93335552,93339647,IL
@@ -1200,9 +1241,7 @@
 93893120,93893375,NL
 93893376,93893631,US
 93893632,93893887,AU
-93893888,93894399,US
-93894400,93894655,GB
-93894656,93896703,US
+93893888,93896703,US
 93896704,93904895,GB
 93904896,93906943,LV
 93906944,93908991,BA
@@ -1219,14 +1258,14 @@
 93976576,93978623,GB
 93978624,94011391,ES
 94011392,94019583,GB
-94019584,94027775,RO
+94019584,94021631,DE
+94021632,94027263,RO
+94027264,94027775,MD
 94027776,94035967,IT
 94035968,94044159,RO
 94044160,94109695,SY
 94109696,94175231,SA
-94175232,94178303,SE
-94178304,94178559,NO
-94178560,94179071,SE
+94175232,94179071,SE
 94179072,94179327,NL
 94179328,94179583,SE
 94179584,94179839,NL
@@ -1386,7 +1425,9 @@
 95410560,95410943,GB
 95410944,95411199,DE
 95411200,95411215,NL
-95411216,95420415,DE
+95411216,95420173,DE
+95420174,95420174,US
+95420175,95420415,DE
 95420416,95551487,TR
 95551488,95555583,AZ
 95555584,95557631,GB
@@ -1449,11 +1490,15 @@
 96337920,96403455,IR
 96403456,96468991,AZ
 96468992,96731135,AE
-96731136,96739479,FR
+96731136,96736399,FR
+96736400,96736400,ES
+96736401,96739479,FR
 96739480,96739483,DE
 96739484,96739583,FR
 96739584,96739587,PT
-96739588,96740111,FR
+96739588,96739887,FR
+96739888,96739903,IT
+96739904,96740111,FR
 96740112,96740127,IT
 96740128,96740223,FR
 96740224,96740351,IT
@@ -1488,17 +1533,24 @@
 96756744,96756751,NL
 96756752,96757639,FR
 96757640,96757643,CH
-96757644,96757883,FR
+96757644,96757647,SE
+96757648,96757663,FR
+96757664,96757667,SE
+96757668,96757883,FR
 96757884,96757887,ES
 96757888,96758247,FR
 96758248,96758251,DE
-96758252,96759767,FR
+96758252,96759735,FR
+96759736,96759739,ES
+96759740,96759767,FR
 96759768,96759775,IT
 96759776,96760403,FR
 96760404,96760407,IT
 96760408,96761855,FR
 96761856,96761871,BE
-96761872,96762863,FR
+96761872,96762799,FR
+96762800,96762815,BE
+96762816,96762863,FR
 96762864,96762879,NL
 96762880,96762943,FR
 96762944,96763007,ES
@@ -1537,7 +1589,9 @@
 96772944,96772959,DE
 96772960,96773119,FR
 96773120,96773375,ES
-96773376,96775599,FR
+96773376,96774719,FR
+96774720,96774751,ES
+96774752,96775599,FR
 96775600,96775615,DE
 96775616,96776319,FR
 96776320,96776323,ES
@@ -1545,15 +1599,24 @@
 96776512,96776543,ES
 96776544,96777023,FR
 96777024,96777087,ES
-96777088,96778171,FR
+96777088,96778015,FR
+96778016,96778031,ES
+96778032,96778167,FR
+96778168,96778171,LU
 96778172,96778175,PT
-96778176,96778247,FR
+96778176,96778239,FR
+96778240,96778243,NL
+96778244,96778247,FR
 96778248,96778255,IT
-96778256,96778867,FR
+96778256,96778259,NL
+96778260,96778859,FR
+96778860,96778863,NL
+96778864,96778867,CZ
 96778868,96778871,BE
 96778872,96778991,FR
 96778992,96779007,DE
-96779008,96779167,FR
+96779008,96779011,PT
+96779012,96779167,FR
 96779168,96779199,PT
 96779200,96779247,FR
 96779248,96779255,CZ
@@ -1561,7 +1624,11 @@
 96779520,96779523,NL
 96779524,96779839,FR
 96779840,96779903,NL
-96779904,96783299,FR
+96779904,96782199,FR
+96782200,96782207,CZ
+96782208,96782911,FR
+96782912,96782915,LT
+96782916,96783299,FR
 96783300,96783303,ES
 96783304,96783311,BE
 96783312,96783327,DE
@@ -1579,11 +1646,17 @@
 96785416,96785423,NL
 96785424,96786431,FR
 96786432,96786495,GB
-96786496,96792751,FR
+96786496,96788143,FR
+96788144,96788159,ES
+96788160,96792751,FR
 96792752,96792767,DE
 96792768,96793583,FR
 96793584,96793599,DE
-96793600,96794471,FR
+96793600,96793687,FR
+96793688,96793688,ES
+96793689,96793715,FR
+96793716,96793716,ES
+96793717,96794471,FR
 96794472,96794479,ES
 96794480,96794707,FR
 96794708,96794711,IT
@@ -1646,12 +1719,23 @@
 98746368,98762751,TR
 98762752,98893823,RU
 98893824,98959359,TR
-98959360,99024895,DE
+98959360,98959615,DE
+98959616,98959679,US
+98959680,98960639,DE
+98960640,98960799,US
+98960800,98992383,DE
+98992384,98992423,US
+98992424,98992431,DE
+98992432,98992639,US
+98992640,98993151,DE
+98993152,98993175,US
+98993176,98998527,DE
+98998528,98998783,GB
+98998784,99024895,DE
 99024896,99025167,GB
 99025168,99025279,DE
 99025280,99025407,US
-99025408,99025663,NL
-99025664,99025919,DE
+99025408,99025919,DE
 99025920,99025935,FI
 99025936,99026047,DE
 99026048,99026175,US
@@ -1722,7 +1806,9 @@
 100329472,100331519,RU
 100331520,100335615,TR
 100335616,100401151,KZ
-100532224,100559255,RO
+100532224,100548872,RO
+100548873,100548873,TR
+100548874,100559255,RO
 100559256,100559263,EG
 100559264,100559551,RO
 100559552,100559615,GB
@@ -1747,7 +1833,8 @@
 100579328,100581375,AT
 100581376,100589567,SE
 100589568,100597759,RU
-100597760,100614143,TR
+100597760,100598783,TR
+100598784,100614143,US
 100614144,100630527,NL
 100630528,100632575,BE
 100632576,100634623,GB
@@ -1757,7 +1844,17 @@
 100646912,100647679,RU
 100647680,100647711,TR
 100647712,100663295,RU
-100663296,134738943,US
+100663296,134221823,US
+134221824,134221824,DE
+134221825,134222335,US
+134222336,134222336,DE
+134222337,134223871,US
+134223872,134223872,GB
+134223873,134224383,US
+134224384,134224384,GB
+134224385,134247423,US
+134247424,134247424,DE
+134247425,134738943,US
 134738944,134739199,CA
 134739200,135192575,US
 135192576,135200767,MX
@@ -1793,9 +1890,7 @@
 136413184,136415665,CA
 136415666,136415666,FR
 136415667,136415743,CA
-136415744,136699903,US
-136699904,136701951,A1
-136701952,139954241,US
+136415744,139954241,US
 139954242,139954242,ES
 139954243,152305663,US
 152305664,152338431,GB
@@ -1832,9 +1927,7 @@
 212787200,212788223,PR
 212788224,212791831,US
 212791832,212791839,VI
-212791840,212794575,US
-212794576,212794583,VI
-212794584,213799167,US
+212791840,213799167,US
 213799168,213799423,CA
 213799424,214617343,US
 214617344,214617599,CA
@@ -1985,7 +2078,9 @@
 288197120,288197631,US
 288197632,288198143,CA
 288198144,288198655,CL
-288198656,288212991,US
+288198656,288199679,US
+288199680,288200703,CO
+288200704,288212991,US
 288212992,288215039,CA
 288215040,288223231,US
 288223232,288227327,CA
@@ -1996,17 +2091,23 @@
 289642752,289652735,US
 289652736,289653759,NL
 289653760,289654271,DE
-289654272,289656831,US
-289656832,289657855,GB
+289654272,289655807,US
+289655808,289656831,DE
+289656832,289657855,BE
 289657856,289658879,AE
 289658880,289659903,GB
 289659904,289660927,US
 289660928,289665023,ES
 289665024,289667071,US
-289667072,289668095,GB
-289668096,289948927,US
+289667072,289669119,GB
+289669120,289783807,US
+289783808,289783935,GB
+289783936,289796095,US
+289796096,289798143,TR
+289798144,289948927,US
 289948928,289949055,AT
-289949056,289949695,US
+289949056,289949183,US
+289949184,289949695,RU
 289949696,289950207,NL
 289950208,289950463,PL
 289950464,289950719,PT
@@ -2015,8 +2116,7 @@
 289951232,289951487,RU
 289951488,289951743,US
 289951744,289952255,DE
-289952256,289952767,US
-289952768,289953791,GB
+289952256,289953791,GB
 289953792,289954303,US
 289954304,289954559,ES
 289954560,289955839,US
@@ -2043,10 +2143,14 @@
 289960960,289961471,BE
 289961472,289963007,US
 289963008,289964031,FR
-289964032,290269183,US
+289964032,290265087,US
+290265088,290267135,RU
+290267136,290269183,US
 290269184,290270207,PL
 290270208,290271231,PT
-290271232,290295295,US
+290271232,290277375,US
+290277376,290279423,GB
+290279424,290295295,US
 290295296,290295807,IN
 290295808,290299903,US
 290299904,290300927,LU
@@ -2060,7 +2164,9 @@
 290310144,290312191,IN
 290312192,290357247,US
 290357248,290365439,IL
-290365440,290423807,US
+290365440,290377727,US
+290377728,290379775,GB
+290379776,290423807,US
 290423808,290424831,SE
 290424832,344260607,US
 344260608,344260863,GB
@@ -2089,7 +2195,9 @@
 344881152,344881407,IN
 344881408,344977407,US
 344977408,344977663,IN
-344977664,385884159,US
+344977664,372398271,US
+372398272,372398303,AU
+372398304,385884159,US
 385884160,385888255,NL
 385888256,385917183,US
 385917184,385917439,NL
@@ -2237,9 +2345,7 @@
 388198400,388202495,NL
 388202496,388222975,US
 388222976,388227071,NL
-388227072,388251647,US
-388251648,388255743,NL
-388255744,388272127,US
+388227072,388272127,US
 388272128,388284415,NL
 388284416,388288511,US
 388288512,388300799,NL
@@ -2257,9 +2363,7 @@
 388397056,388399103,NL
 388399104,388419583,US
 388419584,388423679,NL
-388423680,388440063,US
-388440064,388444159,NL
-388444160,388448255,US
+388423680,388448255,US
 388448256,388464639,NL
 388464640,388472831,US
 388472832,388476927,NL
@@ -2284,7 +2388,9 @@
 388681728,388698111,US
 388698112,388702207,NL
 388702208,388706303,US
-388706304,388730879,NL
+388706304,388714495,NL
+388714496,388726783,US
+388726784,388730879,NL
 388730880,388812799,US
 388812800,388816895,NL
 388816896,388842239,US
@@ -2307,8 +2413,8 @@
 388919296,388923391,NL
 388923392,389044223,US
 389044224,389045247,NL
-389045248,389066751,US
-389066752,389078015,NL
+389045248,389070847,US
+389070848,389078015,NL
 389078016,389079039,US
 389079040,389083135,NL
 389083136,389090303,US
@@ -2321,22 +2427,22 @@
 389185536,389201919,NL
 389201920,389206015,US
 389206016,389210111,NL
-389210112,389234687,US
-389234688,389238783,NL
-389238784,389242879,US
+389210112,389242879,US
 389242880,389251071,NL
 389251072,389259263,US
 389259264,389292031,NL
 389292032,389296127,US
 389296128,389300223,NL
 389300224,389328895,US
-389328896,389365759,NL
+389328896,389341183,NL
+389341184,389349375,US
+389349376,389365759,NL
 389365760,389390335,US
 389390336,389398527,NL
 389398528,389402623,US
-389402624,389427199,NL
-389427200,389431295,US
-389431296,389451775,NL
+389402624,389423103,NL
+389423104,389435391,US
+389435392,389451775,NL
 389451776,389480447,US
 389480448,389484543,NL
 389484544,389509119,US
@@ -2349,8 +2455,8 @@
 389599744,389600767,NL
 389600768,389602303,US
 389602304,389603327,NL
-389603328,389607423,US
-389607424,389615615,NL
+389603328,389611519,US
+389611520,389615615,NL
 389615616,389619711,US
 389619712,389628927,NL
 389628928,389631999,US
@@ -2538,8 +2644,8 @@
 398647296,398656511,NL
 398656512,398657535,US
 398657536,398658559,NL
-398658560,398659583,US
-398659584,398675967,NL
+398658560,398667775,US
+398667776,398675967,NL
 398675968,398684159,US
 398684160,398692351,NL
 398692352,398779903,US
@@ -2640,15 +2746,11 @@
 400201216,400202751,NL
 400202752,400203775,US
 400203776,400211967,NL
-400211968,400232447,US
-400232448,400250367,NL
-400250368,400252927,US
-400252928,400269311,NL
-400269312,400270847,US
+400211968,400240639,US
+400240640,400250367,NL
+400250368,400270847,US
 400270848,400271359,NL
-400271360,400273407,US
-400273408,400281599,NL
-400281600,400283647,US
+400271360,400283647,US
 400283648,400284671,NL
 400284672,400293887,US
 400293888,400302079,NL
@@ -2667,21 +2769,19 @@
 400809984,400884479,US
 400884480,400884735,TR
 400884736,400884991,GB
-400884992,400885095,US
-400885096,400885119,GB
-400885120,400887551,US
+400884992,400887551,US
 400887552,400887807,GB
 400887808,400888575,US
 400888576,400888831,GB
-400888832,400897535,US
-400897536,400897791,GB
-400897792,400911103,US
+400888832,400911103,US
 400911104,400911359,PA
 400911360,400911615,AU
 400911616,400911871,CR
 400911872,400912127,US
 400912128,400912383,SG
-400912384,401130495,US
+400912384,401129727,US
+401129728,401129983,FR
+401129984,401130495,US
 401130496,401130751,DE
 401130752,401137151,US
 401137152,401137663,GB
@@ -2735,8 +2835,8 @@
 402128896,402169855,CA
 402169856,402223103,US
 402223104,402227199,CA
-402227200,402231295,PR
-402231296,402239301,US
+402227200,402231295,US
+402235392,402239301,US
 402239302,402239302,CA
 402239303,402239473,US
 402239474,402239474,CA
@@ -2750,8 +2850,8 @@
 402399232,402403327,CA
 402403328,402415615,US
 402415616,402416639,CA
-402416640,402416895,US
-402416896,402417663,CA
+402416640,402417151,US
+402417152,402417663,CA
 402417664,402550015,US
 402550016,402550271,CA
 402550272,402550783,GB
@@ -2905,10 +3005,8 @@
 417808384,417816575,CA
 417820672,417857535,US
 417857536,417923071,AR
-417923072,418060543,US
-418060544,418061055,HK
-418061056,418061311,US
-418061312,418062335,HK
+417923072,418060287,US
+418060288,418062335,HK
 418062336,418070527,CA
 418070528,418078719,US
 418078720,418119679,CA
@@ -3127,7 +3225,6 @@
 461100032,461101055,MN
 461101056,461102079,IN
 461102080,461103103,ID
-461103104,461111295,PH
 461111296,461127679,IN
 461127680,461131775,PH
 461131776,461135871,ID
@@ -3229,7 +3326,7 @@
 520492032,520493055,GB
 520493056,520493311,BE
 520493312,520493567,GB
-520493568,520493823,IT
+520493568,520493823,AE
 520493824,520494079,FI
 520494080,520494335,IT
 520494336,520494591,CZ
@@ -3310,7 +3407,11 @@
 520953856,520962047,RU
 520962048,520963407,IE
 520963408,520963408,US
-520963409,520978431,IE
+520963409,520963583,IE
+520963584,520963839,US
+520963840,520965119,IE
+520965120,520965631,US
+520965632,520978431,IE
 520978432,520980479,RU
 520980480,520982527,IT
 520982528,520984575,RU
@@ -3325,12 +3426,16 @@
 521019392,521019647,NL
 521019648,521022463,RO
 521022464,521022719,NL
-521022720,521023487,RO
+521022720,521022975,RO
+521022976,521023487,DE
 521023488,521023743,NL
-521023744,521027839,RO
+521023744,521026559,RO
+521026560,521027583,ES
+521027584,521027839,RO
 521027840,521028607,GB
 521028608,521028863,RU
-521028864,521029375,RO
+521028864,521029119,RO
+521029120,521029375,ES
 521029376,521029631,US
 521029632,521031679,RO
 521031680,521035775,IR
@@ -3342,9 +3447,15 @@
 521048064,521052159,IR
 521052160,521056255,RO
 521056256,521057279,LT
-521057280,521058303,RO
+521057280,521058303,MD
 521058304,521060351,IT
-521060352,521076479,RO
+521060352,521074687,RO
+521074688,521074943,EG
+521074944,521075199,RO
+521075200,521075327,FR
+521075328,521075455,RO
+521075456,521075711,EG
+521075712,521076479,RO
 521076480,521076735,IN
 521076736,521078783,ES
 521078784,521080831,CZ
@@ -3413,8 +3524,7 @@
 521717760,521718783,IQ
 521718784,521719807,IR
 521719808,521721855,UA
-521721856,521723903,GB
-521723904,521725951,SA
+521721856,521725951,GB
 521725952,521727999,IR
 521728000,521732095,FR
 521732096,521736191,GB
@@ -3677,7 +3787,8 @@
 529799424,529799679,UA
 529799680,529800191,RU
 529800192,529800703,UA
-529800704,529801215,CZ
+529800704,529800959,CZ
+529800960,529801215,BY
 529801216,529817599,RU
 529817600,529818623,CZ
 529818624,529826303,RU
@@ -3686,10 +3797,7 @@
 529827840,529828863,CZ
 529828864,529829887,RU
 529829888,529830911,CZ
-529830912,529835007,RU
-529835008,529836031,KG
-529836032,529837055,CZ
-529837056,529839103,RU
+529830912,529839103,RU
 529839104,529840127,CZ
 529840128,529841151,RU
 529841152,529842175,UA
@@ -3790,7 +3898,9 @@
 531427504,531427511,IT
 531427512,531427559,GB
 531427560,531427567,IT
-531427568,531428191,GB
+531427568,531427703,GB
+531427704,531427711,IT
+531427712,531428191,GB
 531428192,531428199,IT
 531428200,531428207,GB
 531428208,531428215,IT
@@ -3798,23 +3908,25 @@
 531428352,531428359,IT
 531428360,531428495,GB
 531428496,531428503,IT
-531428504,531428847,GB
-531428848,531428855,IT
-531428856,531429135,GB
+531428504,531429135,GB
 531429136,531429143,IT
-531429144,531429207,GB
+531429144,531429167,GB
+531429168,531429175,IT
+531429176,531429207,GB
 531429208,531429215,IT
 531429216,531429239,GB
 531429240,531429247,IT
-531429248,531429391,GB
+531429248,531429319,GB
+531429320,531429327,IT
+531429328,531429391,GB
 531429392,531429399,IT
 531429400,531429407,GB
 531429408,531429415,IT
 531429416,531429599,GB
 531429600,531429607,IT
-531429608,531429967,GB
-531429968,531429975,IT
-531429976,531430319,GB
+531429608,531430191,GB
+531430192,531430199,IT
+531430200,531430319,GB
 531430320,531430327,IT
 531430328,531430407,GB
 531430408,531430415,IT
@@ -3860,7 +3972,7 @@
 532209664,532210687,DE
 532210688,532211711,RU
 532211712,532212223,LU
-532212224,532212479,KZ
+532212224,532212479,ME
 532212480,532212735,NL
 532212736,532213759,RU
 532213760,532214015,GB
@@ -3909,7 +4021,9 @@
 532366080,532366207,NL
 532366208,532366239,AR
 532366240,532366271,PA
-532366272,532367359,DE
+532366272,532366893,DE
+532366894,532366894,GB
+532366895,532367359,DE
 532367360,532368383,US
 532368384,532368639,NL
 532368640,532371455,DE
@@ -4027,7 +4141,9 @@
 533856256,533858303,FR
 533858304,533858751,TR
 533858752,533858815,AT
-533858816,533859647,TR
+533858816,533858895,TR
+533858896,533858903,AT
+533858904,533859647,TR
 533859648,533859663,AT
 533859664,533860351,TR
 533862400,533864447,GB
@@ -4116,14 +4232,9 @@
 534519552,534519807,NL
 534519808,534521855,US
 534521856,534522367,DE
-534522368,534522879,NL
-534522880,534523034,DE
-534523035,534523035,NL
-534523036,534523135,DE
-534523136,534523391,NL
+534522368,534523391,NL
 534523392,534523903,DE
-534523904,534527999,US
-534528000,534530047,DE
+534523904,534530047,US
 534530048,534538239,ES
 534538240,534538751,US
 534538752,534539007,GB
@@ -4166,7 +4277,9 @@
 539623424,539624577,NL
 539624578,539624578,EU
 539624579,539627519,NL
-539627520,539629975,GB
+539627520,539629455,GB
+539629456,539629463,BE
+539629464,539629975,GB
 539629976,539629983,DE
 539629984,539630975,GB
 539630976,539630983,PT
@@ -4200,8 +4313,8 @@
 540753920,540754175,US
 540754176,540803071,BZ
 540803072,540811263,US
-540811264,540814085,SG
-540814086,540814086,TH
+540811264,540814084,SG
+540814085,540814086,TH
 540814087,540814327,SG
 540814328,540814328,IN
 540814329,540814335,SG
@@ -4334,7 +4447,9 @@
 621391872,621392127,IT
 621392128,621392383,CY
 621392384,621392639,GE
-621392640,621393919,CY
+621392640,621392895,CY
+621392896,621393151,IT
+621393152,621393919,CY
 621393920,621395967,DE
 621395968,621398015,CZ
 621398016,621400063,TR
@@ -4430,7 +4545,9 @@
 622512128,622514175,DE
 622514176,622518271,NO
 622518272,622518527,GB
-622518528,622520319,NL
+622518528,622519281,NL
+622519282,622519282,GB
+622519283,622520319,NL
 622520320,622522367,RU
 622522368,622524415,FR
 622524416,622526463,ES
@@ -4521,9 +4638,7 @@
 623801088,623801855,US
 623801856,623802367,NL
 623802368,623802879,SE
-623802880,623804148,NL
-623804149,623804159,SE
-623804160,623804415,NL
+623802880,623804415,NL
 623804416,623806463,RU
 623806464,623808511,NL
 623810560,623812607,ES
@@ -4565,7 +4680,9 @@
 624574464,624590847,NL
 624590848,624625848,FR
 624625849,624625849,CA
-624625850,624640527,FR
+624625850,624640255,FR
+624640256,624640259,GB
+624640260,624640527,FR
 624640528,624640543,GB
 624640544,624640759,FR
 624640760,624640767,NL
@@ -4580,17 +4697,26 @@
 624643232,624643235,DE
 624643236,624643311,FR
 624643312,624643315,IT
-624643316,624645147,FR
+624643316,624644667,FR
+624644668,624644671,DK
+624644672,624645147,FR
 624645148,624645151,IT
-624645152,624646239,FR
+624645152,624645479,FR
+624645480,624645487,CZ
+624645488,624646235,FR
+624646236,624646239,IT
 624646240,624646255,DE
 624646256,624646343,FR
 624646344,624646347,NL
-624646348,624646583,FR
+624646348,624646399,FR
+624646400,624646431,BE
+624646432,624646583,FR
 624646584,624646591,NL
 624646592,624647171,FR
 624647172,624647183,ES
-624647184,624648139,FR
+624647184,624647459,FR
+624647460,624647463,GB
+624647464,624648139,FR
 624648140,624648143,ES
 624648144,624653311,FR
 624653312,624653823,GB
@@ -4638,7 +4764,11 @@
 624665804,624665807,NL
 624665808,624665951,FR
 624665952,624665955,NL
-624665956,624666219,FR
+624665956,624666167,FR
+624666168,624666168,GB
+624666169,624666172,FR
+624666173,624666173,GB
+624666174,624666219,FR
 624666220,624666223,DE
 624666224,624666695,FR
 624666696,624666703,DE
@@ -4789,7 +4919,7 @@
 624738304,624740351,NL
 624740352,624742399,DE
 624742400,624746495,RU
-624746496,624754687,BG
+624746496,624754687,US
 624754688,624787455,AZ
 624787456,624791551,DE
 624791552,624795647,ES
@@ -5097,7 +5227,8 @@
 630818560,630819327,RO
 630819328,630819839,SE
 630819840,630820095,GR
-630820096,630820607,RO
+630820096,630820351,RO
+630820352,630820607,ES
 630820608,630820863,US
 630820864,630828031,RO
 630828032,630828543,SE
@@ -5117,13 +5248,17 @@
 630990848,630992895,RO
 630992896,630996991,IR
 630996992,630997503,GB
-630997504,630998271,RO
+630997504,630997759,MD
+630997760,630998271,RO
 630998272,630998783,MD
-630998784,631001087,RO
+630998784,630999039,RO
+630999040,630999295,CN
+630999296,631001087,RO
 631001088,631005183,MD
 631005184,631006207,IT
 631006208,631007231,MD
-631007232,631009279,RO
+631007232,631007487,KR
+631007488,631009279,RO
 631009280,631017471,IR
 631017472,631018495,MD
 631018496,631019519,IT
@@ -5131,13 +5266,17 @@
 631023616,631024639,IT
 631024640,631024895,RO
 631024896,631025151,GB
-631025152,631029759,RO
+631025152,631027711,RO
+631027712,631027967,KR
+631027968,631029759,RO
 631029760,631033855,SE
 631033856,631034879,IT
-631034880,631039999,RO
+631034880,631035903,RO
+631035904,631036159,JP
+631036160,631039999,RO
 631040000,631043071,MD
-631043072,631044095,RO
-631044096,631045119,MD
+631043072,631043839,RO
+631043840,631045119,MD
 631045120,631046143,RO
 631046144,631048191,DK
 631048192,631050239,FR
@@ -5180,7 +5319,9 @@
 633066240,633066495,ES
 633066496,633066751,FR
 633066752,633067007,IT
-633067008,633077759,FR
+633067008,633074760,FR
+633074761,633074761,ES
+633074762,633077759,FR
 633077760,633094143,RU
 633094144,633098239,NL
 633098240,633100287,HU
@@ -5298,21 +5439,15 @@
 635200264,635200271,IT
 635200272,635200335,GB
 635200336,635200343,IT
-635200344,635200415,GB
-635200416,635200423,IT
-635200424,635200431,GB
+635200344,635200431,GB
 635200432,635200439,IT
 635200440,635200631,GB
 635200632,635200639,IT
 635200640,635200727,GB
 635200728,635200735,IT
-635200736,635200959,GB
-635200960,635200967,IT
-635200968,635200991,GB
+635200736,635200991,GB
 635200992,635200999,IT
-635201000,635201087,GB
-635201088,635201095,IT
-635201096,635201159,GB
+635201000,635201159,GB
 635201160,635201167,IT
 635201168,635201455,GB
 635201456,635201463,IT
@@ -5364,7 +5499,11 @@
 635856896,635858943,TR
 635858944,635860991,RU
 635860992,635863039,BE
-635863040,635895807,RU
+635863040,635893503,RU
+635893504,635893759,AZ
+635893760,635894527,RU
+635894528,635894783,KZ
+635894784,635895807,RU
 635895808,635961343,KW
 635961344,635994111,GE
 635994112,636026879,RU
@@ -5443,8 +5582,12 @@
 637319168,637321215,AT
 637321216,637323263,GB
 637323264,637325311,FR
-637325312,637325567,US
-637325568,637327359,NO
+637325312,637325823,US
+637325824,637326079,GB
+637326080,637326335,DE
+637326336,637326591,HK
+637326592,637326847,AU
+637326848,637327359,NO
 637329408,637329663,SI
 637329664,637330175,FR
 637330176,637330431,DE
@@ -5490,7 +5633,9 @@
 642093056,642093311,CA
 642093312,642093823,US
 642093824,642094591,CA
-642094592,642793471,US
+642094592,642113535,US
+642113536,642115583,AU
+642115584,642793471,US
 642793472,642793983,CA
 642793984,643219519,US
 643219520,643219523,CA
@@ -5559,8 +5704,8 @@
 644768768,644835071,US
 644835072,644835327,CA
 644835328,644838655,US
-644838656,644840447,CA
-644840448,644898815,US
+644838656,644839423,CA
+644839424,644898815,US
 644898816,644899071,CA
 644899072,644899839,US
 644899840,644900095,CA
@@ -5639,7 +5784,13 @@
 666894336,671088639,ID
 671088640,671113215,US
 671113216,671113471,EU
-671113472,687618147,US
+671113472,675807231,US
+675807232,675938303,SG
+675938304,679313407,US
+679313408,679346175,SG
+679346176,679362559,US
+679362560,679378943,SG
+679378944,687618147,US
 687618148,687618151,EU
 687618152,687865855,US
 687865856,689963007,ZA
@@ -5987,7 +6138,11 @@
 700284928,700301311,GH
 700301312,700309503,CD
 700309504,700313599,DJ
-700313600,700317695,US
+700313600,700315584,US
+700315585,700315585,DJ
+700315586,700317478,US
+700317479,700317479,DJ
+700317480,700317695,US
 700317696,700325887,NG
 700325888,700334079,ZW
 700334080,700335103,BJ
@@ -6049,7 +6204,9 @@
 700593152,700594175,NG
 700594176,700595199,A2
 700595200,700596223,CD
-700596224,700645375,A2
+700596224,700598783,A2
+700598784,700599039,CG
+700599040,700645375,A2
 700645376,700710911,ZA
 700710912,700776447,EG
 700776448,700841983,RW
@@ -6219,8 +6376,7 @@
 702342260,702342263,KE
 702342264,702344199,MU
 702344200,702344971,KE
-702344972,702345215,MU
-702345216,702349311,KE
+702344972,702349311,MU
 702349312,702353407,ZA
 702353408,702357503,DZ
 702357504,702365695,TZ
@@ -6409,7 +6565,9 @@
 711166592,711169311,JP
 711169312,711169327,IN
 711169328,711173119,JP
-711173120,711173375,SG
+711173120,711173210,SG
+711173211,711173211,ID
+711173212,711173375,SG
 711173376,711196671,JP
 711196672,711458815,CN
 711458816,711983103,IN
@@ -6520,7 +6678,6 @@
 736202752,736203775,AU
 736203776,736204799,BD
 736204800,736205823,SG
-736205824,736206847,JP
 736206848,736209919,IN
 736209920,736210943,CN
 736210944,736211967,AU
@@ -6591,11 +6748,16 @@
 736398336,736400383,IN
 736400384,736402431,CN
 736402432,736402559,NZ
-736402560,736403455,PK
+736402560,736402687,PK
+736402688,736402943,SG
+736402944,736403071,MY
+736403072,736403199,BN
+736403200,736403327,AU
+736403328,736403455,PK
 736403456,736404479,KR
 736405504,736408575,IN
 736408576,736409599,CN
-736409600,736410623,NZ
+736409600,736410623,US
 736410624,736411647,CN
 736411648,736412671,NP
 736412672,736413695,TH
@@ -6608,7 +6770,6 @@
 736421888,736422911,SG
 736422912,736423935,IN
 736423936,736424959,CN
-736424960,736425983,JP
 736425984,736428031,MY
 736428032,736429055,IN
 736429056,736430079,HK
@@ -6626,7 +6787,6 @@
 736441344,736442367,HK
 736442368,736443391,CN
 736443392,736445439,AU
-736445440,736446463,JP
 736446464,736447487,IN
 736447488,736448511,TH
 736448512,736449535,IN
@@ -6645,7 +6805,6 @@
 736466944,736467967,HK
 736467968,736468991,SG
 736468992,736470015,IN
-736470016,736471039,JP
 736471040,736479231,CN
 736479232,736480255,IN
 736480256,736481279,ID
@@ -6743,7 +6902,38 @@
 736621568,736622591,JP
 736622592,736624639,IN
 736624640,736886783,JP
-736886784,737149951,CN
+736886784,737096703,CN
+737096704,737099775,IN
+737099776,737100799,HK
+737100800,737101823,IN
+737101824,737102847,BD
+737102848,737104895,IN
+737104896,737106943,HK
+737106944,737108991,NZ
+737108992,737110015,SG
+737110016,737111039,JP
+737111040,737113087,IN
+737113088,737115135,CN
+737115136,737118207,IN
+737118208,737119231,AU
+737119232,737119999,NL
+737120000,737121279,IN
+737121280,737122303,VN
+737122304,737123327,IN
+737123328,737126399,HK
+737126400,737127423,IN
+737127424,737129471,CN
+737129472,737130495,NZ
+737130496,737132543,VN
+737132544,737139711,IN
+737139712,737141759,VN
+737141760,737142783,IN
+737142784,737143039,HK
+737143040,737143807,MY
+737143808,737146879,IN
+737146880,737147903,NZ
+737147904,737148927,MY
+737148928,737149951,CN
 737149952,737151999,IN
 737152000,737154047,HK
 737154048,737155071,MY
@@ -6822,7 +7012,7 @@
 737308672,737309695,KR
 737309696,737312767,IN
 737312768,737313791,HK
-737313792,737315839,JP
+737314816,737315839,JP
 737315840,737316863,HK
 737316864,737324031,CN
 737324032,737325055,HK
@@ -6947,7 +7137,31 @@
 737539072,737540095,BD
 737540096,737541119,ID
 737541120,737542143,SG
-737542144,737574911,CN
+737542144,737567743,CN
+737567744,737570815,IN
+737570816,737571839,SG
+737571840,737572863,HK
+737572864,737574911,IN
+737574912,737575935,JP
+737575936,737576959,HK
+737576960,737581055,IN
+737581056,737582079,KR
+737582080,737584127,IN
+737584128,737585151,MY
+737585152,737587199,HK
+737587200,737588223,MY
+737588224,737589247,KR
+737589248,737590271,TH
+737590272,737591295,TW
+737591296,737593343,JP
+737593344,737594367,BD
+737594368,737596415,HK
+737596416,737597439,CN
+737597440,737598463,TW
+737598464,737600511,PK
+737600512,737601535,CN
+737601536,737602559,AU
+737602560,737607679,IN
 737607680,737608703,HK
 737608704,737610751,CN
 737610752,737611775,ID
@@ -7017,7 +7231,8 @@
 737744896,737745919,CN
 737745920,737746943,HK
 737746944,737747967,TH
-737747968,737748991,SG
+737747968,737748479,HK
+737748480,737748991,SG
 737748992,737750015,AF
 737750016,737751039,JP
 737751040,737753087,IN
@@ -7134,11 +7349,9 @@
 737905664,737906687,HK
 737906688,737908735,IN
 737908736,737909759,AU
-737909760,737910271,HK
-737910272,737910783,MY
-737910784,737911807,HK
-737911808,737912063,SG
-737912064,737912831,AU
+737909760,737911807,HK
+737911808,737912703,SG
+737912704,737912831,MY
 737912832,737915903,IN
 737915904,737916927,TW
 737916928,737917951,JP
@@ -7264,7 +7477,10 @@
 738147328,738148095,CN
 738148096,738148351,AU
 738148352,738152447,CN
-738152448,738153471,HK
+738152448,738152703,JP
+738152704,738152959,AU
+738152960,738153215,JP
+738153216,738153471,AU
 738153472,738154495,CN
 738154496,738156543,TW
 738156544,738157567,CN
@@ -7302,7 +7518,15 @@
 738195456,738197503,KR
 738197504,747175935,US
 747175936,747241471,NL
-747241472,757186559,US
+747241472,757071871,US
+757071872,757088255,NL
+757088256,757090303,US
+757090304,757104639,NL
+757104640,757106687,US
+757106688,757133311,NL
+757133312,757135359,AU
+757135360,757137407,JP
+757137408,757186559,US
 757186560,757190655,CA
 757190656,757600255,US
 757600256,757604351,CA
@@ -7312,9 +7536,12 @@
 757645312,757645567,NZ
 757645568,757661695,US
 757661696,757661951,NZ
-757661952,757686271,US
+757661952,757662719,US
+757662720,757662975,IN
+757662976,757686271,US
 757686272,757694463,CA
-757694464,757696511,US
+757694464,757696255,US
+757696256,757696511,JP
 757696512,757697535,DE
 757697536,757711871,US
 757711872,757712127,AU
@@ -7322,7 +7549,9 @@
 757714176,757714431,JP
 757714432,757716735,US
 757716736,757716991,NZ
-757716992,757729279,US
+757716992,757721599,US
+757721600,757721855,PH
+757721856,757729279,US
 757729280,757731327,CA
 757731328,757733375,US
 757733376,757734399,CA
@@ -7336,33 +7565,45 @@
 757760256,757760511,ML
 757760512,757761535,US
 757761536,757761791,MW
-757761792,757762303,US
+757761792,757762047,US
+757762048,757762303,MV
 757762304,757762559,JP
-757762560,757762815,US
+757762560,757762815,PH
 757762816,757763071,CD
-757763072,757764095,US
+757763072,757763327,US
+757763328,757763583,PA
+757763584,757763839,MN
+757763840,757764095,US
 757764096,757764351,ZW
 757764352,757765375,US
 757765376,757765631,SD
-757765632,757766655,US
+757765632,757765887,US
+757765888,757766143,KP
+757766144,757766655,US
 757766656,757766911,BI
-757766912,757767935,US
+757766912,757767167,US
+757767168,757767423,CC
+757767424,757767935,US
 757767936,757768191,MU
 757768192,757769215,US
 757769216,757769471,SL
 757769472,757769727,US
 757769728,757769983,NZ
-757769984,757770495,US
+757769984,757770239,GU
+757770240,757770495,US
 757770496,757770751,TG
-757770752,757771775,US
+757770752,757771007,US
+757771008,757771263,FJ
+757771264,757771519,CW
+757771520,757771775,SB
 757771776,757772031,ER
-757772032,757773055,US
+757772032,757772287,US
+757772288,757772543,NR
+757772544,757773055,US
 757773056,757773311,MR
 757773312,757774335,US
 757774336,757774591,LR
-757774592,757775359,US
-757775360,757775487,SZ
-757775488,757776639,US
+757774592,757776639,US
 757776640,757776767,GQ
 757776768,757777919,US
 757777920,757778047,LS
@@ -7384,17 +7625,38 @@
 757788160,757788287,LK
 757788288,757789439,US
 757789440,757789567,NP
-757789568,757858303,US
+757789568,757790975,US
+757790976,757791231,WS
+757791232,757858303,US
 757858304,757956607,CA
-757956608,757956863,AU
-757956864,758683647,US
+757956608,757956863,HK
+757956864,757957631,US
+757957632,757957887,JP
+757957888,757958399,US
+757958400,757958655,DE
+757958656,757959679,US
+757959680,757959935,IT
+757959936,757961471,US
+757961472,757961727,HK
+757961728,757965311,US
+757965312,757965567,IN
+757965568,758682111,US
+758682112,758682367,PH
+758682368,758683647,US
 758683648,758683903,HK
 758683904,758684159,SG
-758684160,758685183,US
+758684160,758684671,US
+758684672,758684927,BR
+758684928,758685183,IN
 758685184,758685439,AU
-758685440,758779903,US
+758685440,758685695,JP
+758685696,758691839,US
+758691840,758693887,DE
+758693888,758779903,US
 758779904,758783999,CA
-758784000,758796287,US
+758784000,758785023,US
+758785024,758785535,CA
+758785536,758796287,US
 758796288,758804479,CA
 758804480,758824959,US
 758824960,758841343,CA
@@ -7402,39 +7664,50 @@
 758874368,758874623,AM
 758874624,758875391,US
 758875392,758875647,AO
-758875648,758875903,US
+758875648,758875903,BT
 758875904,758876159,AZ
 758876160,758876415,AU
 758876416,758876671,US
 758876672,758876927,SD
-758876928,758877439,US
+758876928,758877183,MH
+758877184,758877439,US
 758877440,758877695,KZ
-758877696,758878207,US
+758877696,758877951,IR
+758877952,758878207,PG
 758878208,758878463,ET
-758878464,758878975,US
+758878464,758878719,TO
+758878720,758878975,KH
 758878976,758879231,KG
-758879232,758879743,US
+758879232,758879487,US
+758879488,758879743,GG
 758879744,758879999,CD
-758880000,758880511,US
+758880000,758880255,SJ
+758880256,758880511,AS
 758880512,758880767,UZ
-758880768,758881535,US
+758880768,758881023,GN
+758881024,758881535,US
 758881536,758881791,PH
-758881792,758882047,US
+758881792,758882047,CG
 758882048,758882303,TM
-758882304,758882815,US
+758882304,758882559,US
+758882560,758882815,CV
 758882816,758883071,ZM
 758883072,758883583,US
 758883584,758883839,TJ
-758883840,758884351,US
+758883840,758884095,LI
+758884096,758884351,MQ
 758884352,758884607,MZ
-758884608,758885119,US
+758884608,758884863,GP
+758884864,758885119,RE
 758885120,758885375,CN
-758885376,758885887,US
+758885376,758885631,WF
+758885632,758885887,KM
 758885888,758886143,SN
-758886144,758886655,US
+758886144,758886399,TF
+758886400,758886655,PA
 758886656,758886911,DZ
 758886912,758887167,NE
-758887168,758887423,US
+758887168,758887423,GI
 758887424,758887679,TD
 758887680,758888191,US
 758888192,758888447,LY
@@ -7442,13 +7715,18 @@
 758888704,758888959,TZ
 758888960,758889215,US
 758889216,758889471,MG
-758889472,758889727,US
+758889472,758889727,LA
 758889728,758889983,TN
 758889984,758972415,US
 758972416,758976511,CA
 758976512,758984703,US
 758984704,758988799,CA
-758988800,759047423,US
+758988800,758994943,US
+758994944,758996991,IN
+758996992,758998015,DE
+758998016,759001087,US
+759001088,759005183,CN
+759005184,759047423,US
 759047424,759047679,IN
 759047680,759048191,US
 759048192,759048447,PK
@@ -7526,16 +7804,62 @@
 759234560,759235583,SG
 759235584,759236607,NZ
 759236608,759237631,IN
-759237632,759238655,AU
+759237632,759238655,NZ
 759693312,759726079,US
 759726080,759791615,CA
-759791616,759840767,US
+759791616,759824639,US
+759824640,759824895,SA
+759824896,759825151,CR
+759825152,759825407,NO
+759825408,759825663,BE
+759825664,759828735,US
+759828736,759828863,GT
+759828864,759828991,SV
+759828992,759829119,HN
+759829120,759829247,NI
+759829248,759829375,BO
+759829376,759829503,PY
+759829504,759829631,SR
+759829632,759829759,GY
+759829760,759829887,TT
+759829888,759830015,GD
+759830016,759830143,DM
+759830144,759830271,BB
+759830272,759830399,LC
+759830400,759830527,DO
+759830528,759830655,HT
+759830656,759830783,TC
+759830784,759830911,CV
+759830912,759831039,KY
+759831040,759831167,BM
+759831168,759831295,MS
+759831296,759831423,AG
+759831424,759831551,BY
+759831552,759831679,CM
+759831680,759831807,CF
+759831808,759831935,US
+759831936,759832063,ZW
+759832064,759832191,ZM
+759832192,759832319,GA
+759832320,759832447,RW
+759832448,759832575,BW
+759832576,759832703,MZ
+759832704,759832831,SZ
+759832832,759832959,MW
+759832960,759833087,BI
+759833088,759833215,ER
+759833216,759833343,LS
+759833344,759840767,US
 759840768,759844863,CA
 759844864,759848959,US
-759848960,759857151,CA
-759857152,759889919,US
+759848960,759885823,CA
+759885824,759889919,US
 759889920,759955455,CA
-759955456,760217599,US
+759955456,760111103,US
+760111104,760119295,CA
+760119296,760127487,US
+760127488,760152063,CA
+760152064,760217599,US
 761266176,761790463,EG
 762314752,762315775,IN
 762315776,762316799,JP
@@ -7641,10 +7965,12 @@
 762467328,762469375,BD
 762469376,762470399,HK
 762470400,762471423,CN
-762471424,762471679,MY
-762471680,762473471,CN
+762471424,762472447,MY
+762472448,762473471,CN
 762473472,762475519,JP
-762475520,762476543,ID
+762475520,762475775,AU
+762475776,762476031,HK
+762476032,762476543,ID
 762476544,762478591,PK
 762478592,762479615,KR
 762479616,762480639,PK
@@ -7672,7 +7998,11 @@
 762514432,762515455,BD
 762515456,762516479,IN
 762516480,762517503,AU
-762517504,762519551,HK
+762517504,762517759,US
+762517760,762518015,KR
+762518016,762518079,VN
+762518080,762518111,ID
+762518112,762519551,HK
 762519552,762520575,JP
 762520576,762522623,HK
 762522624,762523647,CN
@@ -7691,6 +8021,7 @@
 762540032,762541055,BD
 762541056,762541567,AU
 762541568,762541823,TH
+762541824,762542079,IN
 762542080,762543103,CN
 762543104,762544127,HK
 762544128,762545151,AU
@@ -7739,9 +8070,351 @@
 762603520,762604543,IN
 762604544,762605567,AU
 762605568,762609663,IN
+762609664,762610175,AF
+762610176,762610431,HK
+762610432,762610687,AU
+762610688,762611711,JP
+762611712,762612735,SG
+762612736,762613759,CN
+762613760,762614783,HK
+762614784,762615807,IN
+762615808,762616831,CN
+762616832,762617855,ID
+762617856,762619903,IN
+762619904,762620927,HK
+762620928,762622975,MY
+762622976,762630143,IN
+762630144,762631167,CN
+762631168,762632191,HK
+762632192,762633215,TH
+762633216,762634239,AU
+762634240,762635263,JP
+762635264,762636287,IN
+762636288,762637311,PK
+762637312,762640383,MY
+762640384,762641407,BD
+762641408,762644479,IN
+762644480,762645503,CN
+762645504,762646527,KR
+762646528,762647551,JP
+762647552,762648575,CN
+762648576,762649599,AU
+762649600,762650623,IN
+762650624,762651647,MN
+762651648,762652671,NZ
+762652672,762653695,CN
+762653696,762656767,IN
+762656768,762658815,BD
+762658816,762659839,IN
+762659840,762660863,CN
+762660864,762661887,IN
+762661888,762663935,VN
+762663936,762664959,AU
+762664960,762665983,PK
+762665984,762667007,IN
+762667008,762669055,HK
+762669056,762670079,PK
+762670080,762673151,IN
+762673152,762674175,MY
+762674176,762675199,CN
+762675200,762678271,IN
+762678272,762679295,JP
+762679296,762680319,HK
+762680320,762681343,IN
+762681344,762682367,NP
+762682368,762688511,VN
+762688512,762690559,IN
+762690560,762691583,SG
+762691584,762692607,HK
+762692608,762693631,MP
+762693632,762700799,IN
+762700800,762701823,MY
+762701824,762702847,IN
+762702848,762703871,MY
+762703872,762705919,FJ
+762705920,762706943,IN
+762706944,762707967,CN
+762707968,762717183,IN
+762717184,762718207,PH
+762718208,762719231,JP
+762719232,762723327,IN
+762723328,762724351,BD
+762724352,762725375,AU
+762725376,762726399,BD
+762726400,762736639,IN
+762736640,762737663,ID
+762737664,762739711,IN
+762739712,762740735,HK
+762740736,762741759,IN
+762741760,762742783,JP
+762742784,762746879,VN
+762746880,762754047,IN
+762754048,762755071,SG
+762755072,762756095,AU
+762756096,762757119,NZ
+762757120,762770431,IN
+762770432,762771455,BD
+762771456,762775551,HK
+762775552,762783743,IN
+762783744,762784767,KR
+762784768,762786815,IN
+762786816,762787839,CN
+762787840,762788863,IN
+762788864,762792959,CN
+762792960,762796031,VN
+762796032,762797055,IN
+762797056,762799103,HK
+762799104,762800127,NZ
+762800128,762801151,CN
+762801152,762802175,VN
+762802176,762803199,IN
+762803200,762804223,CN
+762804224,762805247,BD
+762805248,762806271,HK
+762806272,762810367,IN
+762810368,762811391,KR
+762811392,762812415,IN
+762812416,762814463,SG
+762814464,762815487,CN
+762815488,762816511,JP
+762816512,762824703,IN
+762824704,762825727,SG
+762825728,762827775,JP
+762827776,762829823,VN
+762829824,762830847,AU
+762830848,762832895,IN
+762832896,762833919,CN
+762833920,762834943,IN
+762834944,762835967,VN
+762835968,762838015,IN
+762838016,762841087,HK
+762841088,762846207,IN
+762846208,762847231,HK
+762847232,762848255,IN
+762848256,762848511,AU
+762848512,762848767,IN
+762848768,762849279,BD
+762849280,762850303,IN
+762850304,762851327,JP
+762851328,762852351,IN
+762852352,762853375,HK
+762853376,762855423,IN
+762855424,762857471,KR
+762857472,762858495,IN
+762858496,762860543,HK
+762860544,762861567,MM
+762861568,762863615,IN
+762863616,762864639,BD
+762864640,762865663,CN
+762865664,762866687,AU
+762866688,762867711,PH
+762867712,762868735,BD
+762868736,762869759,NZ
+762869760,762871807,IN
+762871808,762872831,MY
+762872832,762873855,JP
+762873856,762874879,NZ
+762874880,762875903,CN
+762875904,762876927,IN
+762876928,762877951,SG
+762877952,762879231,HK
+762879232,762879487,JP
+762879488,762879743,HK
+762879744,762879999,CN
+762880000,762881023,IN
+762881024,762882047,CN
+762882048,762883071,HK
+762883072,762884095,IN
+762884096,762885119,JP
+762885120,762887167,HK
+762887168,762888191,IN
+762888192,762890239,JP
+762890240,762891263,AU
+762891264,762893311,HK
+762893312,762894335,IN
+762894336,762895359,HK
+762895360,762896383,CN
+762896384,762898431,VN
+762898432,762900479,IN
+762900480,762901503,CN
+762901504,762902527,ID
+762902528,762909695,IN
+762909696,762910719,CN
+762910720,762911743,VN
+762911744,762912767,IN
+762912768,762913791,HK
+762913792,762914815,MY
+762914816,762915839,ID
+762915840,762916863,IN
+762916864,762917887,TW
+762917888,762918911,CN
+762918912,762919935,HK
+762919936,762920959,TH
+762920960,762924031,CN
+762924032,762925055,IN
+762925056,762927103,HK
+762927104,762928127,LK
+762928128,762930175,CN
+762930176,762931199,IN
+762931200,762932223,CN
+762932224,762938367,IN
+762938368,762939391,AU
+762939392,762941439,HK
+762941440,762942463,MY
+762942464,762943487,JP
+762943488,762944511,VN
+762944512,762945535,IN
+762945536,762946559,VN
+762946560,762947583,KR
+762947584,762948607,IN
+762948608,762950655,CN
+762950656,762951679,AU
+762951680,762952703,JP
+762952704,762953727,IN
+762953728,762957823,HK
+762957824,762958847,AU
+762958848,762959871,CN
+762959872,762960895,ID
+762960896,762964991,IN
+762964992,762966015,KH
+762966016,762981375,CN
+762981376,762982399,IN
+762982400,762983423,TH
+762983424,762984447,HK
+762984448,762985471,ID
+762985472,763000831,CN
+763000832,763003903,IN
+763003904,763005951,HK
+763005952,763010047,IN
+763010048,763011071,HK
+763011072,763026431,CN
+763026432,763027455,VN
+763027456,763028479,JP
+763028480,763029503,AU
+763029504,763035647,VN
+763035648,763040767,IN
+763040768,763041791,HK
+763041792,763042815,IN
+763042816,763045887,CN
+763045888,763046911,BD
+763046912,763059199,CN
+763059200,763060223,IN
+763060224,763061247,VN
+763061248,763062271,MY
+763062272,763063295,AU
+763063296,763064319,IN
+763064320,763066367,HK
+763066368,763067391,CN
+763067392,763068415,MY
+763068416,763071487,CN
+763071488,763073535,IN
+763073536,763076607,CN
+763076608,763077631,IN
+763077632,763083775,CN
+763083776,763086847,HK
+763086848,763087871,MO
+763087872,763088895,CN
+763088896,763089919,JP
+763089920,763090943,CN
+763090944,763091967,IN
+763091968,763092991,NP
+763092992,763102207,CN
+763102208,763103231,IN
+763103232,763104255,HK
+763104256,763105279,BD
+763105280,763106303,PH
+763106304,763107327,CN
+763107328,763108351,HK
+763108352,763111423,CN
+763111424,763112447,AU
+763112448,763113471,CN
+763113472,763114495,IN
+763114496,763115519,AU
+763115520,763116543,PH
+763116544,763117567,JP
+763117568,763118591,HK
+763118592,763119615,CN
+763119616,763120639,HK
+763120640,763122687,CN
+763122688,763125759,VN
+763125760,763126783,IN
+763126784,763127807,CN
+763127808,763129343,IN
+763129344,763129855,AU
+763129856,763130879,HK
+763130880,763132927,IN
+763132928,763133951,CN
+763133952,763134975,IN
+763134976,763135999,HK
+763136000,763137023,JP
+763137024,763142143,IN
+763142144,763143167,HK
+763143168,763144191,AU
+763144192,763145215,BD
+763145216,763147263,CN
+763147264,763152383,IN
+763152384,763153407,AU
+763153408,763154431,JP
+763154432,763155455,CN
+763155456,763156479,AU
+763156480,763158527,JP
+763158528,763164671,IN
+763164672,763166719,CN
+763166720,763169791,HK
+763169792,763171839,CN
+763171840,763172863,SG
+763172864,763175935,CN
+763175936,763177983,IN
+763177984,763179007,CN
+763179008,763180031,HK
+763180032,763182079,CN
+763182080,763183103,IN
+763183104,763184127,HK
+763184128,763185151,IN
+763185152,763186175,HK
+763186176,763194367,CN
+763194368,763196415,HK
+763196416,763197439,IN
+763197440,763199487,AU
+763199488,763201535,IN
+763201536,763202559,CN
+763202560,763207679,IN
+763207680,763209727,HK
+763209728,763210751,NZ
+763210752,763214847,IN
+763214848,763215871,JP
+763215872,763217919,SG
+763217920,763220991,VN
+763220992,763222015,IN
+763222016,763223039,HK
+763223040,763224063,BD
+763224064,763225087,AF
+763225088,763226111,TH
+763226112,763227135,KR
+763227136,763228159,VN
+763228160,763229183,JP
+763229184,763229439,NZ
+763229440,763230207,IN
+763230208,763231231,PH
+763231232,763232255,IN
+763232256,763234303,HK
+763234304,763235327,IN
+763235328,763236351,HK
+763236352,763238399,IN
+763238400,763239423,AU
+763239424,763243519,IN
+763243520,763244543,AU
+763244544,763246591,CN
+763246592,763247615,ID
+763247616,763248639,SG
+763248640,763250687,IN
+763250688,763251711,AU
+763251712,763252735,HK
 767557632,768606207,ZA
 768606208,768868351,GH
+768868352,769130495,ZM
 769130496,769392639,MA
+770703360,771227647,EG
 771751936,771817471,RU
 771817472,771948543,TR
 771948544,772014079,RU
@@ -8007,8 +8680,7 @@
 773646336,773648383,TR
 773648384,773650431,PL
 773650432,773652479,GB
-773652480,773652735,TR
-773652736,773653503,SK
+773652480,773653503,SK
 773653504,773654527,TR
 773654528,773656575,RU
 773656576,773658623,PL
@@ -8116,7 +8788,11 @@
 773931008,773934591,DE
 773934592,773935352,FR
 773935353,773935353,US
-773935354,773938231,FR
+773935354,773937663,FR
+773937664,773937664,DE
+773937665,773937673,FR
+773937674,773937674,IE
+773937675,773938231,FR
 773938232,773938239,GB
 773938240,773939199,FR
 773939200,773947391,CZ
@@ -8170,7 +8846,7 @@
 774160703,774160735,CH
 774160736,774160768,GR
 774160769,774160801,IL
-774160802,774160802,A1
+774160802,774160802,GB
 774160803,774160832,BG
 774160833,774160864,NO
 774160865,774160869,BR
@@ -8200,7 +8876,7 @@
 774161127,774161136,SC
 774161137,774161146,SG
 774161147,774161149,BY
-774161150,774161151,A1
+774161150,774161151,GB
 774161152,774161162,AQ
 774161163,774161172,KR
 774161173,774161182,TH
@@ -8216,7 +8892,7 @@
 774161273,774161282,MT
 774161283,774161292,SE
 774161293,774161302,HK
-774161303,774161312,A1
+774161303,774161312,GB
 774161313,774161322,IE
 774161323,774161332,PK
 774161333,774161337,KW
@@ -8232,9 +8908,9 @@
 774161383,774161387,EE
 774161388,774161392,LU
 774161393,774161397,SK
-774161398,774161402,A1
+774161398,774161402,GB
 774161403,774161405,LC
-774161406,774161408,A1
+774161406,774161408,GB
 774161409,774161418,US
 774161419,774161428,GL
 774161429,774161438,HU
@@ -8255,14 +8931,14 @@
 774161579,774161588,VE
 774161589,774161598,TC
 774161599,774161618,US
-774161619,774161628,A1
+774161619,774161628,GB
 774161629,774161638,PA
 774161639,774161648,RU
 774161649,774161658,HK
-774161659,774161664,A1
+774161659,774161664,GB
 774161665,774161674,US
 774161675,774161675,CL
-774161676,774161684,A1
+774161676,774161684,GB
 774161685,774161694,GR
 774161695,774161704,AG
 774161705,774161714,AM
@@ -8282,25 +8958,17 @@
 774161845,774161854,VU
 774161855,774161864,MX
 774161865,774161865,AR
-774161866,774161869,A1
+774161866,774161869,GB
 774161870,774161874,ES
-774161875,774161899,A1
+774161875,774161899,GB
 774161900,774161904,FR
-774161905,774162060,A1
+774161905,774162060,GB
 774162061,774162065,US
-774162066,774162105,A1
-774162106,774162110,GB
-774162111,774162125,A1
+774162066,774162125,GB
 774162126,774162130,MO
-774162131,774162170,A1
-774162171,774162173,GB
-774162174,774162225,A1
-774162226,774162236,GB
-774162237,774162246,A1
+774162131,774162246,GB
 774162247,774162256,US
-774162257,774162296,A1
-774162297,774162306,GB
-774162307,774162336,A1
+774162257,774162336,GB
 774162337,774162346,AZ
 774162347,774162366,US
 774162367,774162376,MX
@@ -8311,7 +8979,8 @@
 774162397,774162406,SZ
 774162407,774162416,SD
 774162417,774162426,BF
-774162427,774162432,A1
+774162427,774162431,GB
+774162432,774162432,A1
 774162433,774162442,GB
 774162443,774162452,BA
 774162453,774162462,BO
@@ -8538,16 +9207,23 @@
 778371072,778403839,GB
 778403840,778436607,DE
 778436608,778461183,RO
-778461184,778463231,EE
+778461184,778461439,TR
+778461440,778462207,EE
+778462208,778462463,TR
+778462464,778463231,EE
 778463232,778467327,RO
 778467328,778473471,IR
 778473472,778475519,RO
 778475520,778475775,CH
 778475776,778476031,RO
 778476032,778476287,MD
-778476288,778481919,RO
+778476288,778480639,RO
+778480640,778480895,MD
+778480896,778481663,RO
+778481664,778481919,MD
 778481920,778482943,GB
-778482944,778484735,RO
+778482944,778483199,MD
+778483200,778484735,RO
 778484736,778485247,IT
 778485248,778485759,RO
 778485760,778493951,GB
@@ -8593,11 +9269,17 @@
 778673208,778673211,ES
 778673212,778673383,FR
 778673384,778673387,IT
-778673388,778673751,FR
+778673388,778673631,FR
+778673632,778673647,DE
+778673648,778673751,FR
 778673752,778673759,DE
 778673760,778673883,FR
 778673884,778673887,ES
-778673888,778675795,FR
+778673888,778674767,FR
+778674768,778674783,BE
+778674784,778675695,FR
+778675696,778675711,BE
+778675712,778675795,FR
 778675796,778675799,ES
 778675800,778675891,FR
 778675892,778675895,ES
@@ -8624,13 +9306,19 @@
 778681504,778681507,DE
 778681508,778681519,FR
 778681520,778681523,ES
-778681524,778681823,FR
+778681524,778681535,FR
+778681536,778681543,NL
+778681544,778681823,FR
 778681824,778681827,IT
 778681828,778682103,FR
 778682104,778682111,DE
-778682112,778688627,FR
+778682112,778688447,FR
+778688448,778688451,CZ
+778688452,778688627,FR
 778688628,778688631,NL
-778688632,778691619,FR
+778688632,778689923,FR
+778689924,778689927,DE
+778689928,778691619,FR
 778691620,778691623,IT
 778691624,778691711,FR
 778691712,778691727,GB
@@ -8650,7 +9338,9 @@
 778693428,778693431,ES
 778693432,778693759,FR
 778693760,778693763,ES
-778693764,778695471,FR
+778693764,778695135,FR
+778695136,778695167,DE
+778695168,778695471,FR
 778695472,778695475,ES
 778695476,778695839,FR
 778695840,778695871,DE
@@ -8659,14 +9349,16 @@
 778696448,778696495,FR
 778696496,778696499,ES
 778696500,778696811,FR
-778696812,778696812,DE
-778696813,778696991,FR
+778696812,778696815,DE
+778696816,778696991,FR
 778696992,778696995,ES
 778696996,778697067,FR
 778697068,778697071,ES
 778697072,778697175,FR
 778697176,778697179,ES
-778697180,778697815,FR
+778697180,778697471,FR
+778697472,778697479,CZ
+778697480,778697815,FR
 778697816,778697819,ES
 778697820,778697955,FR
 778697956,778697959,ES
@@ -8715,7 +9407,7 @@
 781189120,781320191,NL
 781320192,781451263,RU
 781451264,781455359,PL
-781455360,781459455,LT
+781455360,781459455,UA
 781459456,781463551,IR
 781463552,781467647,RU
 781467648,781475839,PL
@@ -8723,7 +9415,8 @@
 781479936,781484031,UA
 781484032,781488127,RU
 781488128,781496319,PL
-781496320,781516799,RU
+781496320,781500415,UA
+781500416,781516799,RU
 781516800,781520895,SA
 781520896,781524991,IS
 781524992,781529087,RU
@@ -8910,7 +9603,9 @@
 783681536,783683583,IE
 783683584,783685631,DE
 783685632,783687679,RU
-783687680,783689727,PT
+783687680,783688447,PT
+783688448,783688703,ES
+783688704,783689727,PT
 783689728,783691775,FR
 783691776,783693823,BY
 783693824,783694367,GB
@@ -9479,8 +10174,8 @@
 793247744,793313279,NZ
 793313280,793378815,DE
 793378816,794558463,CA
-794558464,795934719,CN
-795934720,797873663,CA
+794558464,796917759,CN
+796917760,797873663,CA
 797873664,797873919,US
 797873920,805306367,CA
 805306368,822083583,US
@@ -9604,39 +10299,28 @@
 838467584,838729727,JP
 838729728,838795263,KR
 838795264,838860799,AU
-838860800,838995711,US
-838995712,838995967,CA
-838995968,838996991,US
+838860800,838996991,US
 838996992,838997247,CA
 838997248,839016191,US
 839016192,839016447,CA
-839016448,839027967,US
-839027968,839030015,IN
-839030016,839056447,US
+839016448,839056447,US
 839056448,839056455,CN
-839056456,839061503,US
-839061504,839061759,CA
-839061760,839062271,US
-839062272,839064063,CA
-839064064,839069183,US
-839069184,839071231,CA
-839071232,839095807,US
-839095808,839096063,CA
-839096064,839104255,US
-839104256,839104511,CA
-839104512,839112191,US
-839112192,839112703,CA
-839112704,839339607,US
+839056456,839112191,US
+839112192,839112447,CA
+839112448,839339607,US
 839339608,839339609,A1
-839339610,839348223,US
+839339610,839340031,US
+839340032,839341055,ES
+839341056,839342079,US
+839342080,839343103,DE
+839343104,839348223,US
 839348224,839348479,DE
 839348480,839348735,AT
 839348736,839348991,GB
 839348992,839349247,AT
 839349248,839350271,DE
 839350272,839351295,NL
-839351296,839351807,US
-839351808,839352063,DE
+839351296,839352063,DE
 839352064,839352319,US
 839352320,839357439,NL
 839357440,839358463,FR
@@ -9667,11 +10351,7 @@
 840838511,840838512,UA
 840838513,840865791,US
 840865792,840866047,CA
-840866048,840898047,US
-840898048,840898559,CA
-840898560,840909055,US
-840909056,840909311,CA
-840909312,840953855,US
+840866048,840953855,US
 840953856,840954367,JP
 840954368,840956927,US
 840956928,840957951,JP
@@ -9687,9 +10367,7 @@
 846442496,846446591,CA
 846446592,846537727,US
 846537728,846537983,A1
-846537984,846540031,US
-846540032,846540287,A1
-846540288,846544127,US
+846537984,846544127,US
 846544128,846544383,A1
 846544384,846546943,US
 846546944,846547199,A1
@@ -9700,20 +10378,62 @@
 846627072,855638015,US
 855638016,860905167,GB
 860905168,860905171,FR
-860905172,872415231,GB
+860905172,867041279,GB
+867041280,867172351,NO
+867172352,867368959,GB
+867368960,867401727,IT
+867401728,869466111,GB
+869466112,869531647,SA
+869531648,869924863,GB
+869924864,869990399,SA
+869990400,870252543,GB
+870252544,870318079,SA
+870318080,871038975,GB
+871038976,871104511,SA
+871104512,872153087,GB
+872153088,872284159,SA
+872284160,872288871,FR
+872288872,872288875,DE
+872288876,872290111,FR
+872290112,872290143,ES
+872290144,872415231,FR
 872415232,873463807,US
-873463808,873594879,IE
-873594880,874250239,US
-874250240,874315775,DE
-874315776,876609535,US
-876609536,876642303,AU
-876642304,876871679,US
+873463808,873725951,IE
+873725952,874250239,US
+874250240,874381311,DE
+874381312,876609535,US
+876609536,876675071,AU
+876675072,876871679,US
 876871680,877002751,JP
 877002752,877264895,US
 877264896,877330431,SG
-877330432,878510079,US
-878510080,878518271,DE
-878518272,880877567,US
+877330432,877395967,US
+877395968,877428735,SG
+877428736,878649855,US
+878649856,878650111,JP
+878650112,878650367,SG
+878650368,878651391,AU
+878651392,878655487,US
+878655488,878656511,JP
+878656512,878702591,US
+878702592,878702847,BR
+878702848,878703103,AU
+878703104,878703359,SG
+878703360,878703615,JP
+878703616,878703871,IE
+878703872,878704639,US
+878704640,878704895,DE
+878704896,878705151,CN
+878705152,878706431,US
+878706432,878706447,BR
+878706448,878706463,AU
+878706464,878706479,SG
+878706480,878706495,JP
+878706496,878706511,IE
+878706512,878706559,US
+878706560,878706575,DE
+878706576,878706591,CN
+878706592,880877567,US
 880877568,880878079,EU
 880878080,882843337,US
 882843338,882843339,EU
@@ -9824,13 +10544,7 @@
 922189568,922205775,IE
 922205776,922205776,DE
 922205777,922222591,IE
-922222592,922289836,JP
-922289837,922289837,DE
-922289838,922289844,JP
-922289845,922289845,DE
-922289846,922289852,JP
-922289853,922289853,DE
-922289854,922419199,JP
+922222592,922419199,JP
 922419200,922427633,SG
 922427634,922427634,US
 922427635,922427703,SG
@@ -10252,7 +10966,9 @@
 1023238144,1023246335,ID
 1023246336,1023279103,CN
 1023279104,1023311871,IN
-1023311872,1023328255,US
+1023311872,1023317503,US
+1023317504,1023317759,IN
+1023317760,1023328255,US
 1023328256,1023344639,JP
 1023344640,1023410175,CN
 1023410176,1023672319,IN
@@ -10297,26 +11013,24 @@
 1024196608,1024229375,IN
 1024229376,1024262143,JP
 1024262144,1024327679,SG
-1024327680,1024344063,US
+1024327680,1024327935,US
+1024327936,1024327943,AU
+1024327944,1024344063,US
 1024344064,1024352255,SG
 1024352256,1024360447,AU
 1024360448,1024361167,JP
 1024361168,1024361183,HK
-1024361184,1024362911,JP
-1024362912,1024362943,SG
-1024362944,1024364063,JP
+1024361184,1024364063,JP
 1024364064,1024364079,AU
 1024364080,1024365055,JP
 1024365056,1024365311,AP
 1024365312,1024365567,JP
 1024365568,1024365823,SG
-1024365824,1024368639,JP
-1024368640,1024369407,MY
-1024369408,1024371199,JP
+1024365824,1024371199,JP
 1024371200,1024371455,PH
 1024371456,1024372543,JP
-1024372544,1024372607,HK
-1024372608,1024373263,JP
+1024372544,1024372639,HK
+1024372640,1024373263,JP
 1024373264,1024373279,HK
 1024373280,1024376831,JP
 1024376832,1024378879,PH
@@ -10330,10 +11044,10 @@
 1025245184,1025277951,CN
 1025277952,1025294335,PH
 1025294336,1025294591,JP
-1025294592,1025294847,HK
+1025294592,1025294847,SG
 1025294848,1025295103,TH
 1025295104,1025295615,CN
-1025295616,1025295871,MY
+1025295616,1025295871,PH
 1025295872,1025296127,GB
 1025296128,1025296639,FR
 1025296640,1025296895,MY
@@ -10480,7 +11194,11 @@
 1041784832,1041793023,KE
 1041793024,1041825791,GB
 1041825792,1041842175,NL
-1041842176,1041891327,GB
+1041842176,1041858559,GB
+1041858560,1041862655,HK
+1041862656,1041866751,SG
+1041866752,1041870847,JP
+1041870848,1041891327,GB
 1041891328,1042022399,DE
 1042022400,1042087935,PT
 1042087936,1042120703,TR
@@ -10864,7 +11582,9 @@
 1046531840,1046532095,DE
 1046532096,1046533375,GB
 1046533376,1046533383,DE
-1046533384,1046535295,GB
+1046533384,1046533537,GB
+1046533538,1046533538,DE
+1046533539,1046535295,GB
 1046535296,1046535311,DE
 1046535312,1046535439,GB
 1046535440,1046535447,DE
@@ -10977,7 +11697,8 @@
 1048051712,1048117247,SA
 1048117248,1048125439,GB
 1048125440,1048133631,FI
-1048133632,1048158207,PL
+1048133632,1048150015,RO
+1048150016,1048158207,PL
 1048158208,1048166399,DK
 1048166400,1048182783,CH
 1048182784,1048184831,UA
@@ -11052,7 +11773,9 @@
 1049030656,1049031679,DE
 1049031680,1049031743,EU
 1049031744,1049031871,DE
-1049031872,1049034751,EU
+1049031872,1049032093,EU
+1049032094,1049032094,DE
+1049032095,1049034751,EU
 1049034752,1049067519,EG
 1049067520,1049100287,DK
 1049100288,1049231359,GB
@@ -11060,7 +11783,9 @@
 1049296896,1049362431,EG
 1049362432,1049366527,GB
 1049366528,1049368575,DE
-1049368576,1049369983,GB
+1049368576,1049368656,GB
+1049368657,1049368657,DE
+1049368658,1049369983,GB
 1049369984,1049370047,DE
 1049370048,1049370623,GB
 1049370624,1049378815,AT
@@ -11841,9 +12566,7 @@
 1065906176,1065908223,KY
 1065908224,1066254975,US
 1066254976,1066255103,GB
-1066255104,1066255871,US
-1066255872,1066256383,A1
-1066256384,1066311679,US
+1066255104,1066311679,US
 1066311680,1066315775,CA
 1066315776,1066352639,US
 1066352640,1066355711,JM
@@ -11951,7 +12674,9 @@
 1071477248,1071480831,CA
 1071480832,1071522817,US
 1071522818,1071522818,MW
-1071522819,1071727023,US
+1071522819,1071726951,US
+1071726952,1071726955,IE
+1071726956,1071727023,US
 1071727024,1071727027,GB
 1071727028,1071954223,US
 1071954224,1071954231,GB
@@ -11987,9 +12712,7 @@
 1072926208,1072926719,US
 1072926720,1072926975,PH
 1072926976,1072927487,CA
-1072927488,1072927743,US
-1072927744,1072927999,CA
-1072928000,1072928511,US
+1072927488,1072928511,US
 1072928512,1072928767,CA
 1072928768,1072929023,US
 1072929024,1072929535,CA
@@ -11998,7 +12721,9 @@
 1072931072,1072931327,US
 1072931328,1072931583,CA
 1072931584,1072931839,SY
-1072931840,1072932607,CA
+1072931840,1072932095,CA
+1072932096,1072932351,US
+1072932352,1072932607,CA
 1072932608,1072932863,NG
 1072932864,1072933887,US
 1072933888,1072934399,CA
@@ -12190,9 +12915,9 @@
 1075421184,1075429375,CA
 1075429376,1075478527,US
 1075478528,1075494911,CA
-1075494912,1075558143,US
-1075558144,1075558911,VI
-1075558912,1075576831,US
+1075494912,1075558399,US
+1075558400,1075558655,VI
+1075558656,1075576831,US
 1075576832,1075576895,GB
 1075576896,1075576896,SE
 1075576897,1075577087,GB
@@ -12307,9 +13032,7 @@
 1076174848,1076178943,BM
 1076178944,1076183807,US
 1076183808,1076184063,CA
-1076184064,1076193279,US
-1076193280,1076193535,PK
-1076193536,1076194559,US
+1076184064,1076194559,US
 1076194560,1076194815,CA
 1076194816,1076195071,US
 1076195072,1076195327,IN
@@ -12343,11 +13066,7 @@
 1076424704,1076428799,CA
 1076428800,1076543487,US
 1076543488,1076559871,CA
-1076559872,1076628991,US
-1076628992,1076629247,VI
-1076629248,1076635647,US
-1076647680,1076647935,US
-1076660224,1076660735,US
+1076559872,1076625407,US
 1076690944,1076756479,US
 1076756480,1076772863,CA
 1076772864,1076850687,US
@@ -12578,7 +13297,9 @@
 1080024320,1080024575,CA
 1080024576,1080033279,US
 1080033280,1080164351,KY
-1080164352,1080295423,CA
+1080164352,1080225791,CA
+1080225792,1080229887,US
+1080229888,1080295423,CA
 1080295424,1080498664,US
 1080498665,1080498665,EU
 1080498666,1080501503,US
@@ -12617,9 +13338,7 @@
 1081037312,1081037567,CA
 1081037568,1081038335,US
 1081038336,1081040895,CA
-1081040896,1081081855,US
-1081122560,1081122815,VI
-1081126912,1081212927,US
+1081040896,1081212927,US
 1081212928,1081278463,CA
 1081278464,1081369599,US
 1081369600,1081370111,CO
@@ -12696,7 +13415,9 @@
 1082945536,1082949631,CA
 1082949632,1082982399,US
 1082982400,1083015167,CA
-1083015168,1083396095,US
+1083015168,1083267583,US
+1083267584,1083268095,JP
+1083268096,1083396095,US
 1083396096,1083400191,BM
 1083400192,1083437055,US
 1083437056,1083441151,CA
@@ -12728,11 +13449,9 @@
 1085997056,1086013439,CA
 1086013440,1086042111,US
 1086042112,1086046207,CA
-1086046208,1086309887,US
-1086309888,1086310143,AU
-1086310144,1086317823,US
-1086317824,1086318079,CA
-1086318080,1086421503,US
+1086046208,1086050815,US
+1086050816,1086051327,CA
+1086051328,1086421503,US
 1086421504,1086422015,MP
 1086422016,1086922751,US
 1086922752,1086930943,CA
@@ -12758,7 +13477,9 @@
 1087444224,1087444479,GB
 1087444480,1087465727,US
 1087465728,1087465983,AU
-1087465984,1087496703,US
+1087465984,1087466883,US
+1087466884,1087466887,GB
+1087466888,1087496703,US
 1087496704,1087496959,CA
 1087496960,1087501567,US
 1087501568,1087501695,HK
@@ -12804,9 +13525,13 @@
 1088012768,1088012775,PR
 1088012776,1088684031,US
 1088684032,1088946175,CA
-1088946176,1089057279,US
+1088946176,1089055999,US
+1089056000,1089056255,AP
+1089056256,1089057279,US
 1089057280,1089057535,EU
-1089057536,1089167359,US
+1089057536,1089151231,US
+1089151232,1089151487,NL
+1089151488,1089167359,US
 1089167360,1089171455,CA
 1089171456,1089171967,A2
 1089171968,1089172735,US
@@ -12875,9 +13600,7 @@
 1090427392,1090427647,CA
 1090427648,1090445311,US
 1090445312,1090453503,CA
-1090453504,1091798783,US
-1091798784,1091799039,CN
-1091799040,1091803135,US
+1090453504,1091803135,US
 1091803136,1091803391,CN
 1091803392,1091807231,US
 1091807232,1091807487,CA
@@ -12896,9 +13619,7 @@
 1093033984,1093055487,US
 1093055488,1093055743,AR
 1093055744,1093058559,US
-1093058560,1093063167,PR
-1093063168,1093063679,DO
-1093063680,1093066751,PR
+1093058560,1093066751,PR
 1093066752,1093074943,US
 1093074944,1093091327,CA
 1093091328,1093107967,US
@@ -12992,15 +13713,17 @@
 1093723648,1093724415,BB
 1093724416,1093725183,VC
 1093725184,1093730303,BB
-1093730304,1093733887,US
-1093733888,1093734143,A1
-1093734144,1093965960,US
+1093730304,1093734053,US
+1093734054,1093734054,PH
+1093734055,1093965960,US
 1093965961,1093965961,NL
 1093965962,1093966163,US
 1093966164,1093966164,NL
 1093966165,1093966216,US
 1093966217,1093966217,NL
-1093966218,1094074879,US
+1093966218,1093984294,US
+1093984295,1093984295,IE
+1093984296,1094074879,US
 1094074880,1094075167,BR
 1094075168,1094088959,US
 1094088960,1094089023,PR
@@ -13054,7 +13777,9 @@
 1098070272,1098070279,GR
 1098070280,1098070295,US
 1098070296,1098070303,BE
-1098070304,1101121535,US
+1098070304,1098891623,US
+1098891624,1098891631,AU
+1098891632,1101121535,US
 1101121536,1101121791,EC
 1101121792,1101182975,US
 1101182976,1101183487,YE
@@ -13234,7 +13959,9 @@
 1108525056,1108541439,CA
 1108541440,1109688319,US
 1109688320,1109696511,CA
-1109696512,1109707007,US
+1109696512,1109705727,US
+1109705728,1109705983,CG
+1109705984,1109707007,US
 1109707008,1109707263,JM
 1109707264,1109707519,US
 1109707520,1109707775,MW
@@ -13329,9 +14056,7 @@
 1110887424,1110887679,IE
 1110887680,1110929407,US
 1110929408,1110933503,BM
-1110933504,1110937599,US
-1110937600,1110937855,A1
-1110937856,1111195647,US
+1110933504,1111195647,US
 1111195648,1111212031,CA
 1111212032,1111228415,US
 1111228416,1111244799,AR
@@ -13339,13 +14064,19 @@
 1112432640,1112440831,CA
 1112440832,1112530943,US
 1112530944,1112539135,CA
-1112539136,1112867071,US
-1112871936,1112872191,US
-1112872960,1112873215,US
+1112539136,1112870911,US
+1112871936,1112873983,US
 1112873984,1112875007,CA
-1112875008,1112907775,US
+1112875008,1112875519,US
+1112875520,1112875775,CA
+1112875776,1112889855,US
+1112890112,1112890367,CA
+1112890368,1112907775,US
 1112907776,1112907783,CA
-1112907784,1113591807,US
+1112907784,1112931327,US
+1112931328,1112931839,CA
+1112931840,1112932095,US
+1112932352,1113591807,US
 1113591808,1113595903,CA
 1113595904,1113596415,CL
 1113596416,1113596927,GT
@@ -13361,9 +14092,10 @@
 1113603328,1113603583,GT
 1113603584,1113603839,US
 1113603840,1113604095,CA
-1113604096,1113643202,US
-1113643203,1113643237,CH
-1113643238,1113657343,US
+1113604096,1113636863,US
+1113636864,1113645055,SG
+1113645056,1113653247,ID
+1113653248,1113657343,US
 1113657344,1113661439,CA
 1113661440,1113669631,US
 1113669632,1113677823,CA
@@ -13467,16 +14199,16 @@
 1117415424,1117416191,CW
 1117416192,1117416447,CA
 1117416448,1117416703,US
-1117416704,1117419775,CA
-1117419776,1117420031,US
-1117420032,1117420415,CA
+1117416704,1117420415,CA
 1117420416,1117420447,US
 1117420448,1117421567,CA
 1117421568,1117458911,US
 1117458912,1117458943,GB
 1117458944,1117460223,US
 1117460224,1117460287,GB
-1117460288,1117470719,US
+1117460288,1117460991,US
+1117460992,1117461247,GB
+1117461248,1117470719,US
 1117470720,1117471231,CA
 1117471232,1117480191,US
 1117480192,1117480255,CA
@@ -13504,10 +14236,8 @@
 1118031872,1118126335,US
 1118126336,1118126591,CA
 1118126592,1118130687,US
-1118130688,1118131353,CA
-1118131354,1118131354,US
-1118131355,1118131455,CA
-1118131456,1118131967,US
+1118130688,1118131199,CA
+1118131200,1118131967,US
 1118131968,1118132479,CA
 1118132480,1118132991,US
 1118132992,1118133247,CA
@@ -13627,9 +14357,7 @@
 1119558144,1119558655,PR
 1119558656,1119568383,US
 1119568384,1119568639,GB
-1119568640,1119570559,US
-1119570560,1119570687,GB
-1119570688,1119571967,US
+1119568640,1119571967,US
 1119571968,1119576063,CA
 1119576064,1119580159,US
 1119580160,1119584255,CA
@@ -13683,9 +14411,7 @@
 1120376480,1120376494,CA
 1120376495,1120376559,US
 1120376560,1120376575,CA
-1120376576,1120376695,US
-1120376696,1120376703,CA
-1120376704,1120376831,US
+1120376576,1120376831,US
 1120376832,1120377087,CA
 1120377088,1120377343,US
 1120377344,1120377599,CA
@@ -13925,9 +14651,7 @@
 1125550336,1125552127,CA
 1125552128,1125572607,US
 1125572608,1125576703,CA
-1125576704,1125593371,US
-1125593372,1125593375,GB
-1125593376,1125613567,US
+1125576704,1125613567,US
 1125613568,1125617663,CA
 1125617664,1126924287,US
 1126924288,1126928383,CA
@@ -13953,7 +14677,9 @@
 1133785352,1133785359,IE
 1133785360,1133785439,US
 1133785440,1133785471,GB
-1133785472,1133789695,US
+1133785472,1133785487,US
+1133785488,1133785495,IE
+1133785496,1133789695,US
 1133789696,1133789823,GB
 1133789824,1133789887,US
 1133789888,1133789895,NL
@@ -14072,9 +14798,7 @@
 1138544896,1138545151,GB
 1138545152,1138593791,US
 1138593792,1138597887,CA
-1138597888,1138600447,US
-1138600448,1138600703,BE
-1138600704,1138704383,US
+1138597888,1138704383,US
 1138704384,1138716671,CA
 1138716672,1138720767,US
 1138720768,1138728959,CA
@@ -14171,9 +14895,7 @@
 1157753088,1157753343,GB
 1157753344,1157758207,US
 1157758208,1157758463,RU
-1157758464,1157912703,US
-1157912704,1157912831,CA
-1157912832,1157913215,US
+1157758464,1157913215,US
 1157913216,1157913279,CA
 1157913280,1157914194,US
 1157914195,1157914202,IN
@@ -14209,8 +14931,13 @@
 1158348800,1158381567,CA
 1158381568,1158422527,US
 1158422528,1158423551,CA
-1158423552,1158440959,US
+1158423552,1158427647,US
+1158427648,1158428159,CA
+1158428160,1158428415,US
+1158428672,1158440959,US
+1158440960,1158441215,CA
 1158441216,1158441471,US
+1158441472,1158441983,CA
 1158441984,1158443007,DM
 1158443008,1158774783,US
 1158774784,1158784703,CA
@@ -14226,13 +14953,7 @@
 1159102720,1159102975,A1
 1159102976,1159112703,US
 1159112704,1159112959,A1
-1159112960,1159113215,US
-1159113216,1159113471,A1
-1159113472,1159113727,US
-1159113728,1159113983,A1
-1159113984,1159115519,US
-1159115520,1159115775,A1
-1159115776,1159117055,US
+1159112960,1159117055,US
 1159117056,1159117311,A1
 1159117312,1159117567,US
 1159117568,1159117823,A1
@@ -14390,11 +15111,17 @@
 1161427456,1161428223,AG
 1161428224,1161428991,KN
 1161428992,1161429247,US
-1161429248,1161429503,CA
+1161429248,1161429375,CA
+1161429376,1161429407,US
+1161429408,1161429503,CA
 1161429504,1161429951,US
 1161429952,1161430015,CA
 1161430016,1161430783,US
-1161430784,1161431039,CA
+1161430784,1161430879,CA
+1161430880,1161430911,US
+1161430912,1161430943,CA
+1161430944,1161430975,US
+1161430976,1161431039,CA
 1161431040,1161433087,A2
 1161433088,1161437183,CA
 1161437184,1161453567,US
@@ -14495,9 +15222,7 @@
 1162840064,1162853375,US
 1162853376,1162854399,PR
 1162854400,1162858495,JM
-1162858496,1162862591,US
-1162862592,1162866687,PR
-1162866688,1162870783,US
+1162858496,1162870783,US
 1162870784,1162871295,BB
 1162871296,1162879999,LC
 1162880000,1162882559,DM
@@ -14548,7 +15273,13 @@
 1163536128,1163536383,CA
 1163536384,1163537663,US
 1163537664,1163538431,CA
-1163538432,1163540351,US
+1163538432,1163538463,US
+1163538464,1163538479,CA
+1163538480,1163538575,US
+1163538576,1163538591,CA
+1163538592,1163539199,US
+1163539200,1163539455,CA
+1163539456,1163540351,US
 1163540352,1163540479,CA
 1163540480,1163540735,US
 1163540736,1163541503,CA
@@ -14709,8 +15440,8 @@
 1168958528,1168958559,IN
 1168958560,1168960671,US
 1168960672,1168960703,CA
-1168960704,1168961023,US
-1168961024,1168961791,CA
+1168960704,1168961535,US
+1168961536,1168961791,CA
 1168961792,1168961807,US
 1168961808,1168961815,CA
 1168961816,1168961887,US
@@ -14748,8 +15479,7 @@
 1170467840,1170468351,DO
 1170468352,1170470911,US
 1170470912,1170471167,ES
-1170471168,1170472703,US
-1170472704,1170472959,VG
+1170471168,1170472959,US
 1170472960,1170481151,CA
 1170481152,1170489343,US
 1170489344,1170497535,CA
@@ -14777,8 +15507,7 @@
 1176626112,1176626127,CA
 1176626128,1176630271,US
 1176630272,1176631295,CA
-1176631296,1176631551,NL
-1176631552,1176702975,US
+1176631296,1176702975,US
 1176702976,1176707071,CA
 1176707072,1176731647,US
 1176731648,1176735743,PR
@@ -14832,12 +15561,12 @@
 1177059328,1177061375,CA
 1177061376,1177062143,US
 1177062144,1177075455,CA
-1177075456,1177164863,US
+1177075456,1177164415,US
+1177164416,1177164543,CA
+1177164544,1177164863,US
 1177164864,1177164895,CA
 1177164896,1177165055,US
-1177165056,1177165061,CA
-1177165062,1177165062,US
-1177165063,1177165311,CA
+1177165056,1177165311,CA
 1177165312,1177354239,US
 1177354240,1177403391,PR
 1177403392,1177403647,US
@@ -14881,9 +15610,7 @@
 1208338176,1208590335,US
 1208590336,1208598527,CA
 1208598528,1208647679,US
-1208647680,1208656575,CA
-1208656576,1208656583,DO
-1208656584,1208657775,CA
+1208647680,1208657775,CA
 1208657776,1208657783,TR
 1208657784,1208659967,CA
 1208659968,1208721407,US
@@ -15027,7 +15754,13 @@
 1211334656,1211367935,US
 1211367936,1211368191,CA
 1211368192,1211368447,EE
-1211368448,1211432959,US
+1211368448,1211390981,US
+1211390982,1211390982,DE
+1211390983,1211390989,US
+1211390990,1211390990,DE
+1211390991,1211391216,US
+1211391217,1211391217,IT
+1211391218,1211432959,US
 1211432960,1211473919,CA
 1211473920,1211596799,US
 1211596800,1211605999,CA
@@ -15158,7 +15891,7 @@
 1248915456,1248919551,US
 1248919552,1248920575,CA
 1248920576,1248921599,US
-1248921600,1248923647,CA
+1248922624,1248923647,CA
 1248923648,1248936959,US
 1248936960,1248939007,CA
 1248939008,1248946175,US
@@ -15246,7 +15979,7 @@
 1249359872,1249361919,CA
 1249361920,1249379327,US
 1249379328,1249380351,CA
-1249380352,1249384447,US
+1249380352,1249383423,US
 1249384448,1249386495,PR
 1249386496,1249391615,US
 1249391616,1249392639,CA
@@ -15309,7 +16042,9 @@
 1249720600,1249720607,IT
 1249720608,1249720663,GB
 1249720664,1249720671,SE
-1249720672,1249720831,GB
+1249720672,1249720711,GB
+1249720712,1249720719,NL
+1249720720,1249720831,GB
 1249720832,1249721343,US
 1249721344,1249721351,AT
 1249721352,1249721359,BE
@@ -15391,9 +16126,7 @@
 1254490112,1254555647,CA
 1254555648,1254621183,US
 1254621184,1254629375,CA
-1254629376,1254704383,US
-1254704384,1254704639,PH
-1254704640,1254978751,US
+1254629376,1254978751,US
 1254978752,1254978767,LB
 1254978768,1254989823,US
 1254989824,1254998015,CA
@@ -15443,7 +16176,9 @@
 1264718720,1264718847,CA
 1264718848,1264719103,US
 1264719104,1264719871,CA
-1264719872,1264762879,US
+1264719872,1264746527,US
+1264746528,1264746543,CA
+1264746544,1264762879,US
 1264762880,1264763391,CA
 1264763392,1264763647,IE
 1264763648,1264766975,CA
@@ -15607,7 +16342,9 @@
 1296237824,1296237824,GB
 1296237825,1296237825,FR
 1296237826,1296237826,GB
-1296237827,1296238591,FR
+1296237827,1296237878,FR
+1296237879,1296237879,GB
+1296237880,1296238591,FR
 1296238592,1296239103,NL
 1296239104,1296239231,FR
 1296239232,1296239359,NL
@@ -15840,7 +16577,11 @@
 1297072128,1297088511,PL
 1297088512,1297121279,AT
 1297121280,1297154047,SE
-1297154048,1297168383,RO
+1297154048,1297154815,RO
+1297154816,1297155071,MD
+1297155072,1297162239,RO
+1297162240,1297166335,IR
+1297166336,1297168383,RO
 1297168384,1297170431,AZ
 1297170432,1297170943,RO
 1297170944,1297171455,GB
@@ -15852,9 +16593,13 @@
 1297176320,1297176831,RO
 1297176832,1297177599,GB
 1297177600,1297177855,QA
-1297177856,1297178623,RO
+1297177856,1297178111,US
+1297178112,1297178367,QA
+1297178368,1297178623,RO
 1297178624,1297178879,NL
-1297178880,1297182719,RO
+1297178880,1297181951,RO
+1297181952,1297182463,DE
+1297182464,1297182719,RO
 1297182720,1297184767,ES
 1297184768,1297185279,BZ
 1297185280,1297190143,RO
@@ -16385,7 +17130,12 @@
 1310707968,1310708223,PL
 1310708224,1310708479,RU
 1310708480,1310708735,GB
-1310708736,1310709247,IE
+1310708736,1310708927,IE
+1310708928,1310708943,GB
+1310708944,1310709199,IE
+1310709200,1310709215,DE
+1310709216,1310709231,NL
+1310709232,1310709247,IE
 1310709248,1310709759,PL
 1310709760,1310711807,RU
 1310711808,1310713855,LT
@@ -16418,7 +17168,10 @@
 1311264768,1311266815,RU
 1311266816,1311268863,FR
 1311268864,1311270911,BE
-1311270912,1311272959,RU
+1311270912,1311271935,RU
+1311271936,1311272447,KZ
+1311272448,1311272703,RU
+1311272704,1311272959,IE
 1311272960,1311275007,GB
 1311275008,1311277055,FR
 1311277056,1311279103,IT
@@ -16569,17 +17322,7 @@
 1317011456,1317044223,BG
 1317044224,1317076991,CZ
 1317076992,1317109759,BE
-1317109760,1317111935,GB
-1317111936,1317111999,A1
-1317112000,1317115391,GB
-1317115392,1317115647,A1
-1317115648,1317117951,GB
-1317117952,1317118207,A1
-1317118208,1317119999,GB
-1317120000,1317120255,A1
-1317120256,1317120767,GB
-1317120768,1317120895,A1
-1317120896,1317126399,GB
+1317109760,1317126399,GB
 1317126400,1317126655,US
 1317126656,1317142527,GB
 1317142528,1317175295,PT
@@ -16645,9 +17388,13 @@
 1318593984,1318593991,GB
 1318593992,1318594007,NL
 1318594008,1318594015,GB
-1318594016,1318597343,NL
+1318594016,1318596543,NL
+1318596544,1318596559,SE
+1318596560,1318597343,NL
 1318597344,1318597359,US
-1318597360,1318600703,NL
+1318597360,1318599679,NL
+1318599680,1318599687,IE
+1318599688,1318600703,NL
 1318600704,1318608895,AT
 1318608896,1318617087,IT
 1318617088,1318625279,FR
@@ -16687,10 +17434,9 @@
 1318903808,1318911999,RU
 1318912000,1318920191,MK
 1318920192,1318928383,IR
-1318928384,1318936319,LT
-1318936320,1318936383,US
+1318928384,1318936383,LT
 1318936384,1318936447,BR
-1318936448,1318936575,US
+1318936448,1318936575,LT
 1318936576,1318944767,DK
 1318944768,1318958079,CZ
 1318958080,1318960127,PL
@@ -16843,7 +17589,9 @@
 1334116352,1334124543,AX
 1334124544,1334125567,DE
 1334125568,1334126591,ES
-1334126592,1334130687,DE
+1334126592,1334127359,DE
+1334127360,1334127615,AT
+1334127616,1334130687,DE
 1334130688,1334131711,NL
 1334131712,1334132735,DE
 1334132736,1334165503,RU
@@ -16942,13 +17690,12 @@
 1334724352,1334724607,SE
 1334724608,1334724863,US
 1334724864,1334725631,NL
-1334725632,1334725887,SE
-1334725888,1334725900,NL
-1334725901,1334725901,SE
-1334725902,1334726143,NL
+1334725632,1334726143,SE
 1334726144,1334726399,LU
 1334726400,1334726655,SE
-1334726656,1334734847,RU
+1334726656,1334730239,RU
+1334730240,1334730495,KZ
+1334730496,1334734847,RU
 1334734848,1334738943,LT
 1334738944,1334743039,CH
 1334743040,1334747135,CZ
@@ -16961,7 +17708,9 @@
 1334779904,1334783999,UA
 1334784000,1334788095,AT
 1334788096,1334792191,RU
-1334792192,1334794239,GB
+1334792192,1334793320,GB
+1334793321,1334793321,IR
+1334793322,1334794239,GB
 1334794240,1334796287,ES
 1334796288,1334800383,ME
 1334800384,1334804479,IT
@@ -17280,8 +18029,8 @@
 1347010560,1347014655,RU
 1347014656,1347018751,GG
 1347018752,1347022847,IT
-1347022848,1347026943,AT
-1347026944,1347035135,GB
+1347022848,1347024895,AT
+1347024896,1347035135,GB
 1347035136,1347039231,CZ
 1347039232,1347043327,RO
 1347043328,1347047423,FR
@@ -17669,7 +18418,9 @@
 1347694592,1347706879,GB
 1347706880,1347710975,IT
 1347710976,1347715071,RU
-1347715072,1347718143,ES
+1347715072,1347717375,ES
+1347717376,1347717631,BG
+1347717632,1347718143,ES
 1347718144,1347718399,US
 1347718400,1347723263,ES
 1347723264,1347727359,GB
@@ -17768,7 +18519,11 @@
 1348063232,1348067327,CH
 1348067328,1348071423,NL
 1348071424,1348075519,DE
-1348075520,1348083711,LV
+1348075520,1348076287,LV
+1348076288,1348076543,RU
+1348076544,1348082687,LV
+1348082688,1348082943,RU
+1348082944,1348083711,LV
 1348083712,1348091903,LU
 1348091904,1348095999,RU
 1348096000,1348100095,AL
@@ -17897,7 +18652,9 @@
 1353262296,1353262303,US
 1353262304,1353271567,GB
 1353271568,1353271575,AT
-1353271576,1353271727,GB
+1353271576,1353271711,GB
+1353271712,1353271719,AT
+1353271720,1353271727,GB
 1353271728,1353271743,AT
 1353271744,1353271775,GB
 1353271776,1353271807,AT
@@ -17988,9 +18745,13 @@
 1357316096,1357317119,EU
 1357317120,1357317375,GB
 1357317376,1357317631,A2
-1357317632,1357318399,EU
+1357317632,1357318159,EU
+1357318160,1357318191,GB
+1357318192,1357318399,EU
 1357318400,1357318655,FR
-1357318656,1357321023,EU
+1357318656,1357318911,EU
+1357318912,1357319167,DE
+1357319168,1357321023,EU
 1357321024,1357321087,KE
 1357321088,1357321983,EU
 1357321984,1357322239,GB
@@ -18000,8 +18761,8 @@
 1357323008,1357323015,CG
 1357323016,1357323519,EU
 1357323520,1357323775,GB
-1357323776,1357323779,FI
-1357323780,1357324287,EU
+1357323776,1357323791,FI
+1357323792,1357324287,EU
 1357324288,1357325311,GB
 1357325312,1357326335,EU
 1357326336,1357326337,ES
@@ -18046,8 +18807,10 @@
 1357348416,1357348479,EU
 1357348480,1357348607,ES
 1357348608,1357350399,EU
-1357350400,1357350527,GB
-1357350528,1357351167,EU
+1357350400,1357350607,GB
+1357350608,1357350655,EU
+1357350656,1357350783,GB
+1357350784,1357351167,EU
 1357351168,1357351423,PL
 1357351424,1357360063,EU
 1357360064,1357360127,GB
@@ -18078,11 +18841,11 @@
 1357373556,1357373567,EU
 1357373568,1357373695,GB
 1357373696,1357373951,EU
-1357373952,1357374975,GB
-1357374976,1357377535,EU
+1357373952,1357375135,GB
+1357375136,1357377535,EU
 1357377536,1357377671,FR
-1357377672,1357377791,EU
-1357377792,1357378559,FR
+1357377672,1357377695,EU
+1357377696,1357378559,FR
 1357378560,1357381631,EU
 1357381632,1357414399,NO
 1357414400,1357447167,LV
@@ -18205,7 +18968,9 @@
 1357984120,1357984367,GB
 1357984368,1357984375,IT
 1357984376,1357984527,GB
-1357984528,1357984551,IT
+1357984528,1357984535,IT
+1357984536,1357984543,GB
+1357984544,1357984551,IT
 1357984552,1357984591,GB
 1357984592,1357984599,IT
 1357984600,1357984831,GB
@@ -18436,8 +19201,10 @@
 1358861568,1358861823,DE
 1358861824,1358862335,FR
 1358862336,1358862847,US
-1358862848,1358863103,DK
-1358863104,1358863359,EU
+1358862848,1358862911,DK
+1358862912,1358862914,EU
+1358862915,1358862915,DK
+1358862916,1358863359,EU
 1358863360,1358863615,US
 1358863616,1358864383,GB
 1358864384,1358872575,CH
@@ -18472,7 +19239,9 @@
 1359036416,1359052799,GB
 1359052800,1359101951,RU
 1359101952,1359118335,GB
-1359118336,1359119199,DE
+1359118336,1359118655,DE
+1359118656,1359118719,GR
+1359118720,1359119199,DE
 1359119200,1359119231,NL
 1359119232,1359119359,DE
 1359119360,1359120383,NL
@@ -18612,7 +19381,9 @@
 1360359424,1360363519,AT
 1360363520,1360365567,IT
 1360365568,1360367615,NL
-1360367616,1360371711,IE
+1360367616,1360367771,IE
+1360367772,1360367772,DE
+1360367773,1360371711,IE
 1360371712,1360375807,TR
 1360375808,1360379903,NL
 1360379904,1360383999,PL
@@ -18681,7 +19452,8 @@
 1360654336,1360658431,EE
 1360658432,1360666623,PL
 1360666624,1360674815,NO
-1360674816,1360678911,DZ
+1360674816,1360676863,DZ
+1360676864,1360678911,ZA
 1360678912,1360683007,RU
 1360683008,1360691199,GB
 1360691200,1360698879,RU
@@ -18740,7 +19512,17 @@
 1360961536,1360965631,UA
 1360965632,1360977919,RU
 1360977920,1360986111,CZ
-1360986112,1360992255,GB
+1360986112,1360986269,GB
+1360986270,1360986270,US
+1360986271,1360986299,GB
+1360986300,1360986300,US
+1360986301,1360986356,GB
+1360986357,1360986358,US
+1360986359,1360986367,GB
+1360986368,1360986399,US
+1360986400,1360986631,GB
+1360986632,1360986635,US
+1360986636,1360992255,GB
 1360992256,1360992511,DE
 1360992512,1360994303,GB
 1360994304,1360998399,CZ
@@ -19026,7 +19808,9 @@
 1370619904,1370750975,GB
 1370750976,1370767359,RO
 1370767360,1370771455,MD
-1370771456,1370882047,RO
+1370771456,1370772479,RO
+1370772480,1370772991,MD
+1370772992,1370882047,RO
 1370882048,1371013119,HU
 1371013120,1371078655,ES
 1371078656,1371144191,FR
@@ -19052,7 +19836,9 @@
 1372004352,1372012543,A2
 1372012544,1372013567,ZM
 1372013568,1372020735,A2
-1372020736,1372022783,ZM
+1372020736,1372020991,ZM
+1372020992,1372021247,CD
+1372021248,1372022783,ZM
 1372022784,1372026623,A2
 1372026624,1372026879,KE
 1372026880,1372027903,IL
@@ -19260,7 +20046,9 @@
 1382367232,1382383615,BG
 1382383616,1382399999,DZ
 1382400000,1382416383,NL
-1382416384,1382432767,PT
+1382416384,1382417663,PT
+1382417664,1382418175,SE
+1382418176,1382432767,PT
 1382432768,1382449151,CY
 1382449152,1382465535,IL
 1382465536,1382481919,PS
@@ -19276,7 +20064,9 @@
 1383088128,1383096319,IS
 1383096320,1383098879,GB
 1383098880,1383099135,DE
-1383099136,1383104511,GB
+1383099136,1383099163,GB
+1383099164,1383099164,NL
+1383099165,1383104511,GB
 1383104512,1383112703,JE
 1383112704,1383114751,LB
 1383114752,1383116799,GB
@@ -19349,7 +20139,9 @@
 1383497728,1383505919,RU
 1383505920,1383514111,SA
 1383514112,1383522303,FI
-1383522304,1383530495,BG
+1383522304,1383523839,BG
+1383523840,1383524095,GB
+1383524096,1383530495,BG
 1383530496,1383538687,DE
 1383538688,1383546879,IT
 1383546880,1383555071,BG
@@ -19422,16 +20214,18 @@
 1385218048,1385226239,UA
 1385226240,1385234431,GB
 1385234432,1385242623,DE
-1385242624,1385250431,GB
-1385250432,1385250559,A1
-1385250560,1385250815,GB
+1385242624,1385250815,GB
 1385250816,1385259007,PL
 1385259008,1385267199,IT
 1385267200,1385275391,SE
 1385275392,1385283583,IT
 1385283584,1385286143,DE
 1385286144,1385287679,GB
-1385287680,1385291775,EU
+1385287680,1385290631,EU
+1385290632,1385290632,IS
+1385290633,1385291343,EU
+1385291344,1385291344,IS
+1385291345,1385291775,EU
 1385291776,1385299967,TR
 1385299968,1385308159,BG
 1385308160,1385312255,RU
@@ -19489,11 +20283,15 @@
 1386217472,1386283007,PL
 1386283008,1386348543,NL
 1386348544,1386414079,RU
-1386414080,1386448895,GB
+1386414080,1386438399,GB
+1386438400,1386438655,FR
+1386438656,1386448895,GB
 1386448896,1386450943,IL
 1386450944,1386479615,GB
 1386479616,1386545151,NO
-1386545152,1386610687,DE
+1386545152,1386552319,DE
+1386552320,1386553087,GB
+1386553088,1386610687,DE
 1386610688,1386676223,IL
 1386676224,1386741759,SA
 1386741760,1387249663,NL
@@ -19539,7 +20337,9 @@
 1388568576,1388576767,CH
 1388576768,1388580863,NL
 1388580864,1388581119,GB
-1388581120,1388584959,FR
+1388581120,1388583167,FR
+1388583168,1388583423,DZ
+1388583424,1388584959,FR
 1388584960,1388587455,EU
 1388587456,1388587471,GB
 1388587472,1388589055,EU
@@ -19584,9 +20384,15 @@
 1388688160,1388691455,CH
 1388691456,1388699647,NL
 1388699648,1388707839,SE
-1388707840,1388709375,RU
+1388707840,1388708727,RU
+1388708728,1388708743,US
+1388708744,1388708859,RU
+1388708860,1388708863,US
+1388708864,1388709375,RU
 1388709376,1388709887,LT
-1388709888,1388714239,RU
+1388709888,1388712063,RU
+1388712064,1388712191,LT
+1388712192,1388714239,RU
 1388714240,1388714495,LB
 1388714496,1388714751,RU
 1388714752,1388715007,LT
@@ -19675,7 +20481,9 @@
 1389290496,1389297663,A2
 1389297664,1389330431,UA
 1389330432,1389363199,DE
-1389363200,1389379583,CZ
+1389363200,1389373498,CZ
+1389373499,1389373499,ES
+1389373500,1389379583,CZ
 1389379584,1389395967,RU
 1389395968,1389412351,RO
 1389412352,1389428735,RS
@@ -19804,28 +20612,8 @@
 1399717888,1399848959,AE
 1399848960,1400111103,FR
 1400111104,1400373247,NL
-1400373248,1400702463,DE
-1400702464,1400702975,EU
-1400702976,1400705023,DE
-1400705024,1400706047,EU
-1400706048,1400707071,DE
-1400707072,1400709119,EU
-1400709120,1400710143,DE
-1400710144,1400711167,EU
-1400711168,1400712191,DE
-1400712192,1400713215,EU
-1400713216,1400718335,DE
-1400718336,1400719359,EU
-1400719360,1400721919,DE
-1400721920,1400722687,EU
-1400722688,1400727551,DE
-1400727552,1400727807,EU
-1400727808,1400727935,DE
-1400727936,1400729599,EU
-1400729600,1400730623,DE
-1400730624,1400731647,EU
-1400731648,1400733695,DE
-1400733696,1400897535,EU
+1400373248,1400766463,DE
+1400766464,1400897535,EU
 1400897536,1400963071,NL
 1400963072,1401028607,DE
 1401028608,1401094143,IL
@@ -19919,7 +20707,13 @@
 1401708288,1401708543,DE
 1401708544,1401712895,SE
 1401712896,1401713151,DE
-1401713152,1401749503,SE
+1401713152,1401727743,SE
+1401727744,1401727999,GB
+1401728000,1401740543,SE
+1401740544,1401740799,DE
+1401740800,1401747711,SE
+1401747712,1401747967,FR
+1401747968,1401749503,SE
 1401749504,1401765887,DE
 1401765888,1401782271,IE
 1401782272,1401815039,FR
@@ -19999,9 +20793,7 @@
 1402142720,1402159103,ES
 1402159104,1402175487,IT
 1402175488,1402191871,IE
-1402191872,1402194943,IR
-1402194944,1402195967,PT
-1402195968,1402208255,IR
+1402191872,1402208255,IR
 1402208256,1402224639,CZ
 1402224640,1402241023,BG
 1402241024,1402257407,GB
@@ -20039,9 +20831,9 @@
 1403420672,1403428863,NL
 1403428864,1403437055,GB
 1403437056,1403445247,RO
-1403445248,1403447811,RU
-1403447812,1403447812,MD
-1403447813,1403461631,RU
+1403445248,1403447295,RU
+1403447296,1403448575,MD
+1403448576,1403461631,RU
 1403461632,1403469823,FR
 1403469824,1403486207,RU
 1403486208,1403494399,FR
@@ -20422,7 +21214,9 @@
 1408761856,1409286143,SE
 1409286144,1409362431,HU
 1409362432,1409363967,BG
-1409363968,1409378679,HU
+1409363968,1409377791,HU
+1409377792,1409378047,RO
+1409378048,1409378679,HU
 1409378680,1409378687,RO
 1409378688,1409413119,HU
 1409413120,1409415167,BG
@@ -20637,10 +21431,8 @@
 1412805632,1412806143,EU
 1412806144,1412808703,US
 1412808704,1412825087,RU
-1412825088,1412830463,IQ
-1412830464,1412832767,LB
+1412825088,1412831231,IQ
 1412832768,1412833023,SL
-1412833024,1412841471,LB
 1412841472,1412857855,UZ
 1412857856,1412874239,BG
 1412874240,1412890623,RU
@@ -20698,15 +21490,11 @@
 1422786560,1422852095,HU
 1422852096,1422857087,EU
 1422857088,1422857151,FR
-1422857152,1422907391,EU
-1422907392,1422909439,NL
-1422909440,1422910207,EU
-1422910208,1422910463,NL
-1422910464,1422910975,EU
-1422910976,1422911231,NL
-1422911232,1422911487,EU
-1422911488,1422913535,GB
-1422913536,1422916607,EU
+1422857152,1422905343,EU
+1422905344,1422907391,IE
+1422907392,1422911487,NL
+1422911488,1422915583,GB
+1422915584,1422916607,EU
 1422916608,1422916863,GB
 1422916864,1422917343,EU
 1422917344,1422917375,NL
@@ -20716,11 +21504,7 @@
 1423704064,1423966207,IT
 1423966208,1424097279,HU
 1424097280,1424228351,CH
-1424228352,1424286719,IL
-1424286720,1424286938,BG
-1424286939,1424286939,IL
-1424286940,1424287743,BG
-1424287744,1424359423,IL
+1424228352,1424359423,IL
 1424359424,1424490495,FI
 1424490496,1424503711,ES
 1424503712,1424503715,PT
@@ -20845,11 +21629,11 @@
 1425467392,1425469439,CH
 1425469440,1425471487,DK
 1425471488,1425473535,DE
-1425473536,1425479679,RO
-1425479680,1425480703,MD
-1425480704,1425484799,RO
+1425473536,1425484799,RO
 1425484800,1425485311,MD
-1425485312,1425489407,RO
+1425485312,1425486847,RO
+1425486848,1425487359,MD
+1425487360,1425489407,RO
 1425489408,1425489663,NL
 1425489664,1425506303,RO
 1425506304,1425522687,NO
@@ -20888,7 +21672,9 @@
 1426660659,1426669567,RO
 1426669568,1426685951,IR
 1426685952,1426702335,TJ
-1426702336,1426718719,LV
+1426702336,1426716159,LV
+1426716160,1426716415,RU
+1426716416,1426718719,LV
 1426718720,1426731007,SI
 1426731008,1426735103,HR
 1426735104,1426743295,BE
@@ -21030,7 +21816,9 @@
 1431994368,1432002559,AT
 1432002560,1432010751,HU
 1432010752,1432018943,UA
-1432018944,1432027135,GB
+1432018944,1432024063,GB
+1432024064,1432025087,DE
+1432025088,1432027135,GB
 1432027136,1432035327,IE
 1432035328,1432043519,GB
 1432043520,1432051711,ES
@@ -21038,8 +21826,7 @@
 1432054016,1432054271,RO
 1432054272,1432056831,RU
 1432056832,1432057343,RO
-1432057344,1432058623,RU
-1432058624,1432059903,RO
+1432057344,1432059903,RU
 1432059904,1432068095,BG
 1432068096,1432076287,BE
 1432076288,1432084479,RU
@@ -21126,7 +21913,7 @@
 1433731072,1433739263,PL
 1433739264,1433747455,GE
 1433747456,1433755647,RU
-1433755648,1433763839,EE
+1433755648,1433763839,KZ
 1433763840,1433772031,FR
 1433772032,1433788415,SE
 1433796608,1433804799,GB
@@ -21294,7 +22081,8 @@
 1438515200,1438560255,DE
 1438560256,1438562303,US
 1438562304,1438580735,DE
-1438580736,1438646271,NL
+1438580736,1438613503,NL
+1438613504,1438646271,DK
 1438646272,1438662655,RU
 1438662656,1438679039,ES
 1438679040,1438695423,RU
@@ -21308,9 +22096,12 @@
 1438777344,1438793727,SE
 1438793728,1438810111,SA
 1438810112,1438826495,SE
-1438826496,1438838783,FI
+1438826496,1438827519,FI
+1438827520,1438828543,IQ
+1438828544,1438829567,EE
+1438829568,1438838783,FI
 1438838784,1438840831,PL
-1438840832,1438841855,FI
+1438840832,1438841855,IQ
 1438841856,1438842367,DE
 1438842368,1438842879,DK
 1438842880,1438859263,SE
@@ -21322,14 +22113,10 @@
 1438878208,1438885887,RU
 1438885888,1438889983,LT
 1438889984,1438892031,RU
-1438892032,1438893823,IS
-1438893824,1438894079,CH
-1438894080,1438896127,IS
+1438892032,1438896127,CH
 1438896128,1438900223,AQ
 1438900224,1438908415,CH
-1438908416,1438914815,BG
-1438914816,1438917887,GR
-1438917888,1438924799,BG
+1438908416,1438924799,GR
 1438924800,1438941183,NO
 1438941184,1438957567,BG
 1438957568,1438973951,EE
@@ -21364,7 +22151,9 @@
 1439371520,1439371775,FR
 1439371776,1439372031,SE
 1439372032,1439372287,TR
-1439372288,1439373311,NL
+1439372288,1439372543,IT
+1439372544,1439372799,JP
+1439372800,1439373311,NL
 1439373312,1439373567,SE
 1439373568,1439383551,NL
 1439383552,1439399935,FR
@@ -21390,17 +22179,24 @@
 1439459328,1439459839,IR
 1439459840,1439460607,RO
 1439460608,1439460863,MD
-1439460864,1439463423,RO
+1439460864,1439462655,RO
+1439462656,1439462911,MD
+1439462912,1439463423,RO
 1439463424,1439463935,DK
 1439463936,1439466495,RO
 1439466496,1439467007,DK
 1439467008,1439467519,RO
 1439467520,1439468031,DK
-1439468032,1439477759,RO
+1439468032,1439468543,RO
+1439468544,1439469567,ES
+1439469568,1439475711,RO
+1439475712,1439475967,IN
+1439475968,1439477759,RO
 1439477760,1439479807,MD
 1439479808,1439482367,RO
 1439482368,1439482879,DK
-1439482880,1439485951,RO
+1439482880,1439483903,RO
+1439483904,1439485951,ES
 1439485952,1439490047,IR
 1439490048,1439498239,RO
 1439498240,1439513599,DE
@@ -21440,9 +22236,7 @@
 1439629312,1439694847,CZ
 1439694848,1439825919,SA
 1439825920,1439956991,GB
-1439956992,1440204799,DE
-1440204800,1440215039,EU
-1440215040,1440251903,DE
+1439956992,1440251903,DE
 1440251904,1440284671,SK
 1440284672,1440317439,FI
 1440317440,1440350207,BG
@@ -21483,7 +22277,9 @@
 1441439744,1441447935,LV
 1441447936,1441456127,BE
 1441456128,1441464319,NL
-1441464320,1441472511,SE
+1441464320,1441469439,SE
+1441469440,1441469695,DK
+1441469696,1441472511,SE
 1441472512,1441480703,RU
 1441480704,1441488895,TR
 1441488896,1441497087,GB
@@ -21632,12 +22428,16 @@
 1449714176,1449715711,RO
 1449715712,1449719807,IR
 1449719808,1449722111,RO
-1449722112,1449722367,NL
+1449722112,1449722367,IT
 1449722368,1449723135,RO
-1449723136,1449723391,NL
+1449723136,1449723391,DE
 1449723392,1449724927,RO
 1449724928,1449725183,GB
-1449725184,1449734143,RO
+1449725184,1449726463,RO
+1449726464,1449726719,NL
+1449726720,1449727999,RO
+1449728000,1449728255,MD
+1449728256,1449734143,RO
 1449734144,1449736191,IT
 1449736192,1449742335,RO
 1449742336,1449744383,MD
@@ -21645,15 +22445,29 @@
 1449750528,1449752575,SE
 1449752576,1449754623,RO
 1449754624,1449758719,IR
-1449758720,1449765887,RO
+1449758720,1449759743,RO
+1449759744,1449760511,MD
+1449760512,1449764863,RO
+1449764864,1449765119,MD
+1449765120,1449765887,RO
 1449765888,1449766911,MD
 1449766912,1449768959,RO
 1449768960,1449769471,GB
-1449769472,1449776127,RO
+1449769472,1449772031,RO
+1449772032,1449772287,GB
+1449772288,1449776127,RO
 1449776128,1449776639,FR
-1449776640,1449780479,RO
+1449776640,1449778431,RO
+1449778432,1449778687,MD
+1449778688,1449779455,RO
+1449779456,1449779711,GB
+1449779712,1449779967,RO
+1449779968,1449780223,RU
+1449780224,1449780479,RO
 1449780480,1449780991,GB
-1449780992,1449782015,RO
+1449780992,1449781247,RO
+1449781248,1449781503,MD
+1449781504,1449782015,RO
 1449782016,1449782271,GB
 1449782272,1449783295,RO
 1449783296,1449783551,DE
@@ -21666,12 +22480,16 @@
 1449791488,1449793279,RO
 1449793280,1449793535,NL
 1449793536,1449794047,IR
-1449794048,1449811199,RO
+1449794048,1449794303,PH
+1449794304,1449810943,RO
+1449810944,1449811199,MD
 1449811200,1449811455,BG
 1449811456,1449811967,GB
-1449811968,1449812991,RO
+1449811968,1449812223,DK
+1449812224,1449812991,RO
 1449812992,1449813503,GB
-1449813504,1449814271,RO
+1449813504,1449813759,RU
+1449813760,1449814271,RO
 1449814272,1449815039,GB
 1449815040,1449815295,RO
 1449815296,1449816063,GB
@@ -21694,7 +22512,9 @@
 1449859584,1449860607,GB
 1449860608,1449863679,RO
 1449863680,1449863935,GB
-1449863936,1449870847,RO
+1449863936,1449869311,RO
+1449869312,1449870335,MD
+1449870336,1449870847,RO
 1449870848,1449871615,GB
 1449871616,1449871871,RO
 1449871872,1449872383,GB
@@ -21704,16 +22524,21 @@
 1449878528,1449879039,RO
 1449879040,1449879167,PH
 1449879168,1449879295,TH
-1449879296,1449883647,RO
+1449879296,1449880319,RO
+1449880320,1449880575,MD
+1449880576,1449883647,RO
 1449883648,1449885695,BE
 1449885696,1449889791,GB
 1449889792,1449893887,IR
 1449893888,1449895935,MD
-1449895936,1449901823,RO
+1449895936,1449900543,RO
+1449900544,1449901055,MD
+1449901056,1449901823,RO
 1449901824,1449902079,DE
 1449902080,1449902335,RO
 1449902336,1449903103,GB
-1449903104,1449906175,RO
+1449903104,1449903359,MD
+1449903360,1449906175,RO
 1449906176,1449910271,IR
 1449910272,1449918463,RO
 1449918464,1449951231,JO
@@ -21829,9 +22654,7 @@
 1467285504,1467301887,RU
 1467301888,1467318271,GB
 1467318272,1467334655,RU
-1467334656,1467345023,GB
-1467345024,1467345151,A1
-1467345152,1467346495,GB
+1467334656,1467346495,GB
 1467346496,1467346559,A1
 1467346560,1467351039,GB
 1467351040,1467367423,NO
@@ -22259,9 +23082,7 @@
 1485242368,1485246463,RU
 1485246464,1485250559,UA
 1485250560,1485254655,IR
-1485254656,1485259007,RU
-1485259008,1485262847,UA
-1485262848,1485266943,RU
+1485254656,1485266943,RU
 1485266944,1485271039,RO
 1485271040,1485275135,UA
 1485275136,1485283327,LV
@@ -22270,7 +23091,15 @@
 1485307904,1485832191,FR
 1485832192,1485963263,GB
 1485963264,1486028799,CZ
-1486028800,1486061567,BE
+1486028800,1486031615,IT
+1486031616,1486031871,BE
+1486031872,1486032383,IT
+1486032384,1486032639,BE
+1486032640,1486038271,IT
+1486038272,1486038527,BE
+1486038528,1486040319,IT
+1486040320,1486040575,BE
+1486040576,1486061567,IT
 1486061568,1486094335,RU
 1486094336,1486127103,ES
 1486127104,1486159871,FI
@@ -22369,7 +23198,11 @@
 1489665024,1489666047,EU
 1489666048,1489674239,GB
 1489674240,1489676287,NL
-1489676288,1489698815,GB
+1489676288,1489692415,GB
+1489692416,1489692431,AU
+1489692432,1489692447,GB
+1489692448,1489692463,AU
+1489692464,1489698815,GB
 1489698816,1489731583,MT
 1489731584,1489764351,BG
 1489764352,1489797119,RU
@@ -22399,7 +23232,9 @@
 1490173952,1490190335,PT
 1490190336,1490193616,GB
 1490193617,1490193617,DE
-1490193618,1490206719,GB
+1490193618,1490196991,GB
+1490196992,1490197247,IE
+1490197248,1490206719,GB
 1490206720,1490223103,GE
 1490223104,1490255871,GB
 1490255872,1490272255,NL
@@ -22610,7 +23445,9 @@
 1495293952,1495298047,IR
 1495298048,1495300095,RO
 1495300096,1495300351,SE
-1495300352,1495304191,RO
+1495300352,1495300607,US
+1495300608,1495300863,SE
+1495300864,1495304191,RO
 1495304192,1495306239,MD
 1495306240,1495306573,GB
 1495306574,1495306574,RO
@@ -22618,29 +23455,42 @@
 1495308288,1495312383,RO
 1495312384,1495312895,IT
 1495312896,1495313151,GB
-1495313152,1495316991,RO
+1495313152,1495313407,MD
+1495313408,1495316991,RO
 1495316992,1495317503,IT
-1495317504,1495319551,RO
+1495317504,1495319039,RO
+1495319040,1495319167,FR
+1495319168,1495319295,RO
+1495319296,1495319551,SE
 1495319552,1495320063,IR
-1495320064,1495330815,RO
-1495330816,1495332863,MD
-1495332864,1495334911,RO
+1495320064,1495326719,RO
+1495326720,1495332863,MD
+1495332864,1495333375,RO
+1495333376,1495333631,CH
+1495333632,1495334911,RO
 1495334912,1495335167,MD
 1495335168,1495336447,RO
 1495336448,1495336959,NL
 1495336960,1495339007,RO
 1495339008,1495339263,DE
-1495339264,1495339519,RO
+1495339264,1495339519,MD
 1495339520,1495340031,IR
-1495340032,1495345151,RO
+1495340032,1495342591,RO
+1495342592,1495342847,MD
+1495342848,1495345151,RO
 1495345152,1495345407,FI
-1495345408,1495346687,RO
+1495345408,1495345663,US
+1495345664,1495345919,FI
+1495345920,1495346687,RO
 1495346688,1495347199,GB
 1495347200,1495351295,RO
 1495351296,1495351551,GB
-1495351552,1495351807,RO
+1495351552,1495351807,MD
 1495351808,1495352319,IQ
-1495352320,1495362559,RO
+1495352320,1495352447,FR
+1495352448,1495352831,RO
+1495352832,1495353087,FI
+1495353088,1495362559,RO
 1495362560,1495363583,ES
 1495363584,1495364607,RO
 1495364608,1495364863,GB
@@ -22674,9 +23524,7 @@
 1495406080,1495408639,RO
 1495408640,1495416831,IR
 1495416832,1495418879,MD
-1495418880,1495419391,RO
-1495419392,1495419903,EU
-1495419904,1495422975,RO
+1495418880,1495422975,RO
 1495422976,1495423487,IR
 1495423488,1495424511,RO
 1495424512,1495425023,IR
@@ -22690,58 +23538,95 @@
 1495428864,1495429119,DE
 1495429120,1495433215,RO
 1495433216,1495441407,IR
-1495441408,1495443455,RO
+1495441408,1495442431,RO
+1495442432,1495442559,FR
+1495442560,1495442943,RO
+1495442944,1495443199,AE
+1495443200,1495443455,RO
 1495443456,1495443967,IR
 1495443968,1495444479,RO
 1495444480,1495444607,KR
 1495444608,1495444735,IN
 1495444736,1495445503,RO
 1495445504,1495446015,IR
-1495446016,1495447551,RO
+1495446016,1495446271,RO
+1495446272,1495446527,MD
+1495446528,1495447551,RO
 1495447552,1495449599,SE
 1495449600,1495451647,MD
 1495451648,1495452159,IR
-1495452160,1495461887,RO
+1495452160,1495455743,RO
+1495455744,1495456255,MD
+1495456256,1495459839,RO
+1495459840,1495460863,MD
+1495460864,1495461887,RO
 1495461888,1495463935,SE
-1495463936,1495480831,RO
+1495463936,1495466495,RO
+1495466496,1495467007,DE
+1495467008,1495474687,RO
+1495474688,1495474943,MD
+1495474944,1495480831,RO
 1495480832,1495481343,IR
-1495481344,1495487487,RO
-1495487488,1495488511,MD
-1495488512,1495488767,RO
+1495481344,1495485439,RO
+1495485440,1495485695,MD
+1495485696,1495487487,RO
+1495487488,1495488767,MD
 1495488768,1495489279,GB
 1495489280,1495489535,MD
 1495489536,1495493119,RO
 1495493120,1495493375,US
 1495493376,1495493631,RO
 1495493632,1495494655,AE
-1495494656,1495498239,RO
+1495494656,1495495167,RO
+1495495168,1495495423,MD
+1495495424,1495498239,RO
 1495498240,1495498367,IN
 1495498368,1495498495,BD
 1495498496,1495499775,RO
 1495499776,1495500287,IR
-1495500288,1495505151,RO
+1495500288,1495502847,RO
+1495502848,1495503871,PL
+1495503872,1495505151,RO
 1495505152,1495505407,GB
 1495505408,1495505919,RO
 1495505920,1495506431,IR
-1495506432,1495508991,RO
+1495506432,1495507711,RO
+1495507712,1495507967,MD
+1495507968,1495508991,RO
 1495508992,1495510015,IT
-1495510016,1495511039,RO
+1495510016,1495510527,RO
+1495510528,1495511039,DE
 1495511040,1495511551,IR
 1495511552,1495511807,LT
 1495511808,1495515647,RO
 1495515648,1495516159,IR
-1495516160,1495517183,RO
+1495516160,1495516287,FR
+1495516288,1495516671,RO
+1495516672,1495516927,GR
+1495516928,1495517183,RO
 1495517184,1495518207,MD
-1495518208,1495535615,RO
+1495518208,1495529471,RO
+1495529472,1495529727,MD
+1495529728,1495535615,RO
 1495535616,1495536127,IR
 1495536128,1495541247,RO
 1495541248,1495541759,GB
 1495541760,1495543807,RO
 1495543808,1495547903,IR
 1495547904,1495548159,US
-1495548160,1495556095,RO
+1495548160,1495548671,RO
+1495548672,1495548927,RU
+1495548928,1495549695,RO
+1495549696,1495549951,RU
+1495549952,1495551999,RO
+1495552000,1495554047,ES
+1495554048,1495554559,RO
+1495554560,1495555071,SE
+1495555072,1495556095,RO
 1495556096,1495560191,IR
-1495560192,1495566847,RO
+1495560192,1495566335,RO
+1495566336,1495566591,GB
+1495566592,1495566847,RO
 1495566848,1495567359,GB
 1495567360,1495571455,RO
 1495571456,1495572479,MD
@@ -22753,13 +23638,15 @@
 1495589376,1495589887,IR
 1495589888,1495596031,RO
 1495596032,1495596543,IR
-1495596544,1495597055,RO
+1495596544,1495596799,RO
+1495596800,1495597055,MD
 1495597056,1495601151,IR
 1495601152,1495603199,AZ
 1495603200,1495604735,RO
 1495604736,1495605247,IR
 1495605248,1495607295,AZ
-1495607296,1495607807,RO
+1495607296,1495607551,MD
+1495607552,1495607807,RO
 1495607808,1495608319,IR
 1495608320,1495617535,RO
 1495617536,1495618559,ES
@@ -22767,10 +23654,10 @@
 1495620608,1495621375,GB
 1495621376,1495623167,RO
 1495623168,1495623679,IR
-1495623680,1495623935,MD
-1495623936,1495630079,RO
-1495630080,1495631359,GB
-1495631360,1495632127,RO
+1495623680,1495624191,MD
+1495624192,1495630079,RO
+1495630080,1495631615,GB
+1495631616,1495632127,RO
 1495632128,1495632639,MD
 1495632640,1495642111,RO
 1495642112,1495644159,SE
@@ -22785,7 +23672,8 @@
 1495669248,1495669503,GB
 1495669504,1495670783,RO
 1495670784,1495671807,MD
-1495671808,1495672831,RO
+1495671808,1495672575,RO
+1495672576,1495672831,MD
 1495672832,1495674879,ES
 1495674880,1495682047,RO
 1495682048,1495683071,MD
@@ -22794,7 +23682,11 @@
 1495688704,1495689215,IR
 1495689216,1495724543,RO
 1495724544,1495725055,IR
-1495725056,1495745791,RO
+1495725056,1495732223,RO
+1495732224,1495732991,ES
+1495732992,1495733247,RO
+1495733248,1495734271,ES
+1495734272,1495745791,RO
 1495745792,1495746047,GB
 1495746048,1495747583,RO
 1495747584,1495748607,MD
@@ -22810,10 +23702,14 @@
 1495760128,1495760895,RO
 1495760896,1495762943,DE
 1495762944,1495763967,GB
-1495763968,1495765503,RO
+1495763968,1495764735,RO
+1495764736,1495764991,AU
+1495764992,1495765503,RO
 1495765504,1495765759,GB
 1495765760,1495766015,NL
-1495766016,1495771135,RO
+1495766016,1495767039,RO
+1495767040,1495769087,ES
+1495769088,1495771135,RO
 1495771136,1495772159,PL
 1495772160,1495775743,RO
 1495775744,1495776255,IR
@@ -22829,9 +23725,15 @@
 1495791360,1495791615,GB
 1495791616,1495793663,RO
 1495793664,1495794687,DE
-1495794688,1495803391,RO
+1495794688,1495795199,RO
+1495795200,1495795327,FR
+1495795328,1495795455,RO
+1495795456,1495795711,RU
+1495795712,1495803391,RO
 1495803392,1495803903,IR
-1495803904,1495805951,RO
+1495803904,1495804927,RO
+1495804928,1495805439,GB
+1495805440,1495805951,RO
 1495805952,1495810047,KZ
 1495810048,1495813631,RO
 1495813632,1495814143,IR
@@ -22845,7 +23747,9 @@
 1495821824,1495822335,IR
 1495822336,1495826431,RO
 1495826432,1495826943,IR
-1495826944,1495829503,RO
+1495826944,1495827967,RO
+1495827968,1495828479,DE
+1495828480,1495829503,RO
 1495829504,1495830015,GB
 1495830016,1495837695,RO
 1495837696,1495838719,IT
@@ -22853,7 +23757,9 @@
 1495845632,1495845887,GB
 1495845888,1495846911,RO
 1495846912,1495847423,GB
-1495847424,1495855103,RO
+1495847424,1495848959,RO
+1495848960,1495849471,SE
+1495849472,1495855103,RO
 1495855104,1495859199,IR
 1495859200,1495860223,ES
 1495860224,1495861247,AZ
@@ -22890,7 +23796,9 @@
 1495951360,1495952383,MD
 1495952384,1495953919,RO
 1495953920,1495954175,GB
-1495954176,1495963135,RO
+1495954176,1495960575,RO
+1495960576,1495961087,SE
+1495961088,1495963135,RO
 1495963136,1495963647,IR
 1495963648,1495964415,GB
 1495964416,1495967743,RO
@@ -22899,7 +23807,11 @@
 1495970816,1495971839,MD
 1495971840,1495983103,RO
 1495983104,1495983615,IR
-1495983616,1495990271,RO
+1495983616,1495985663,RO
+1495985664,1495985791,FR
+1495985792,1495985919,RO
+1495985920,1495986175,JP
+1495986176,1495990271,RO
 1495990272,1495994367,IR
 1495994368,1495998463,RO
 1495998464,1495998719,SG
@@ -22913,7 +23825,9 @@
 1496012800,1496016895,IR
 1496016896,1496018943,RO
 1496018944,1496019967,FR
-1496019968,1496036863,RO
+1496019968,1496020735,RO
+1496020736,1496020991,AU
+1496020992,1496036863,RO
 1496036864,1496037375,IR
 1496037376,1496038399,RO
 1496038400,1496038911,IR
@@ -22927,14 +23841,22 @@
 1496051712,1496055807,RO
 1496055808,1496057855,SE
 1496057856,1496058111,DE
-1496058112,1496084479,RO
+1496058112,1496066815,RO
+1496066816,1496067071,QA
+1496067072,1496073983,RO
+1496073984,1496074239,ES
+1496074240,1496084479,RO
 1496084480,1496084991,IR
 1496084992,1496085247,MD
 1496085248,1496086015,RO
 1496086016,1496086527,IR
-1496086528,1496093183,RO
+1496086528,1496088063,RO
+1496088064,1496088575,MD
+1496088576,1496093183,RO
 1496093184,1496093695,IR
-1496093696,1496104447,RO
+1496093696,1496094719,RO
+1496094720,1496095743,MD
+1496095744,1496104447,RO
 1496104448,1496104959,IR
 1496104960,1496107519,RO
 1496107520,1496108031,IR
@@ -22955,10 +23877,13 @@
 1496150016,1496152063,IR
 1496152064,1496153599,RO
 1496153600,1496154111,IR
-1496154112,1496180223,RO
+1496154112,1496179199,RO
+1496179200,1496179711,SE
+1496179712,1496180223,RO
 1496180224,1496180735,IR
 1496180736,1496182783,SE
-1496182784,1496188927,RO
+1496182784,1496183039,ES
+1496183040,1496188927,RO
 1496188928,1496189951,ES
 1496189952,1496190975,RO
 1496190976,1496193023,SE
@@ -22966,7 +23891,9 @@
 1496197120,1496197631,MD
 1496197632,1496198143,RO
 1496198144,1496198655,IR
-1496198656,1496202239,RO
+1496198656,1496198911,RO
+1496198912,1496199167,GB
+1496199168,1496202239,RO
 1496202240,1496202751,IR
 1496202752,1496203263,RO
 1496203264,1496205311,IT
@@ -22974,16 +23901,24 @@
 1496210944,1496211455,IR
 1496211456,1496213503,RO
 1496213504,1496215551,IT
-1496215552,1496228863,RO
+1496215552,1496216319,RO
+1496216320,1496216575,MD
+1496216576,1496221695,RO
+1496221696,1496223743,ES
+1496223744,1496228863,RO
 1496228864,1496229887,MD
 1496229888,1496231935,RO
 1496231936,1496233983,PS
 1496233984,1496236031,RO
 1496236032,1496238079,IT
 1496238080,1496240127,IQ
-1496240128,1496268799,RO
+1496240128,1496253439,RO
+1496253440,1496254463,ES
+1496254464,1496268799,RO
 1496268800,1496272895,IR
-1496272896,1496276735,RO
+1496272896,1496275455,RO
+1496275456,1496275711,MD
+1496275712,1496276735,RO
 1496276736,1496276991,MD
 1496276992,1496285183,RO
 1496285184,1496293375,IR
@@ -23001,9 +23936,7 @@
 1499856896,1499987967,CZ
 1499987968,1499996159,AT
 1499996160,1500004351,GB
-1500004352,1500008447,RU
-1500008448,1500012543,IR
-1500012544,1500020735,RU
+1500004352,1500020735,RU
 1500020736,1500028927,IS
 1500028928,1500037119,NL
 1500037120,1500045311,DK
@@ -23465,7 +24398,9 @@
 1506410496,1506422063,DE
 1506422064,1506422079,GB
 1506422080,1506443263,DE
-1506443264,1506444757,GB
+1506443264,1506444397,GB
+1506444398,1506444398,DE
+1506444399,1506444757,GB
 1506444758,1506444758,DE
 1506444759,1506445103,GB
 1506445104,1506445119,DE
@@ -23515,7 +24450,9 @@
 1506463680,1506463695,DE
 1506463696,1506464895,GB
 1506464896,1506464911,NL
-1506464912,1506465023,GB
+1506464912,1506464999,GB
+1506465000,1506465007,NL
+1506465008,1506465023,GB
 1506465024,1506465187,EU
 1506465188,1506465188,NL
 1506465189,1506465279,EU
@@ -23527,11 +24464,15 @@
 1506469664,1506469695,IT
 1506469696,1506469759,GB
 1506469760,1506469775,IT
-1506469776,1506471983,GB
+1506469776,1506471871,GB
+1506471872,1506471903,IT
+1506471904,1506471983,GB
 1506471984,1506471999,NL
 1506472000,1506472031,GB
 1506472032,1506472047,NL
-1506472048,1506476031,GB
+1506472048,1506475873,GB
+1506475874,1506475874,DE
+1506475875,1506476031,GB
 1506476032,1506508799,KW
 1506508800,1506541567,CZ
 1506541568,1506574335,RU
@@ -23585,10 +24526,17 @@
 1507393536,1507459071,CH
 1507459072,1507524607,KZ
 1507524608,1507525631,EE
-1507525632,1507531775,KZ
-1507531776,1507540991,EE
+1507525632,1507533823,KZ
+1507533824,1507540991,AZ
 1507540992,1507557375,IR
-1507557376,1507573759,EE
+1507557376,1507558399,EE
+1507558400,1507558911,AZ
+1507558912,1507564287,EE
+1507564288,1507565823,AZ
+1507565824,1507566335,EE
+1507566336,1507567615,AZ
+1507567616,1507567871,EE
+1507567872,1507573759,AZ
 1507573760,1507590143,IR
 1507590144,1507655679,NL
 1507655680,1507659775,DE
@@ -23726,7 +24674,8 @@
 1509883904,1509900287,NL
 1509900288,1509916671,RU
 1509916672,1509933055,GB
-1509933056,1509941247,NL
+1509933056,1509935103,CH
+1509935104,1509941247,NL
 1509941248,1509947391,SE
 1509947392,1509949439,NL
 1509949440,1510608639,FR
@@ -24130,7 +25079,11 @@
 1533730816,1533732863,NL
 1533732864,1533734911,RU
 1533734912,1533739007,CZ
-1533739008,1533820927,RU
+1533739008,1533805567,RU
+1533805568,1533806591,NL
+1533806592,1533818879,RU
+1533818880,1533819903,NL
+1533819904,1533820927,RU
 1533820928,1533837311,DE
 1533837312,1533845503,IR
 1533845504,1533847551,GB
@@ -24164,7 +25117,9 @@
 1534590976,1534656511,HU
 1534656512,1534711807,FR
 1534711808,1534712831,BE
-1534712832,1534714415,FR
+1534712832,1534714207,FR
+1534714208,1534714223,NL
+1534714224,1534714415,FR
 1534714416,1534714431,ES
 1534714432,1534714639,FR
 1534714640,1534714655,IE
@@ -24380,7 +25335,7 @@
 1538850816,1538859007,KZ
 1538859008,1538875391,RU
 1538875392,1538883583,RS
-1538883584,1538891775,BE
+1538883584,1538891775,IR
 1538891776,1538897919,GB
 1538897920,1538899967,PL
 1538899968,1538908159,SI
@@ -24641,7 +25596,8 @@
 1539482624,1539483135,RU
 1539483648,1539484159,UA
 1539484672,1539485695,RU
-1539485696,1539486207,RO
+1539485696,1539485951,LV
+1539485952,1539486207,RO
 1539486208,1539486719,FR
 1539486720,1539487231,DE
 1539487744,1539488255,RU
@@ -24751,7 +25707,6 @@
 1539549184,1539549695,GB
 1539549696,1539550207,RU
 1539550208,1539550719,UA
-1539550720,1539551231,ES
 1539551232,1539551743,RS
 1539551744,1539552255,RU
 1539552256,1539552767,RO
@@ -24771,7 +25726,6 @@
 1539560960,1539561471,UA
 1539561472,1539561983,RO
 1539561984,1539563007,DE
-1539563008,1539563519,RU
 1539563520,1539564031,SE
 1539564032,1539564543,KZ
 1539564544,1539565055,GB
@@ -25092,7 +26046,7 @@
 1539763968,1539764223,PT
 1539764224,1539764479,AT
 1539764480,1539764735,GB
-1539764736,1539764991,RO
+1539764736,1539764991,DE
 1539764992,1539765247,BE
 1539765248,1539765503,GB
 1539765504,1539766015,PL
@@ -25121,7 +26075,6 @@
 1539772160,1539772415,BE
 1539772416,1539772671,RU
 1539772672,1539772927,RS
-1539772928,1539773183,RU
 1539773184,1539773439,GB
 1539773440,1539773695,KZ
 1539773696,1539773951,DE
@@ -25338,7 +26291,9 @@
 1539851264,1539852287,PL
 1539852288,1539853311,UA
 1539853312,1539854335,PL
-1539854336,1539855359,UA
+1539854336,1539855103,UA
+1539855104,1539855231,US
+1539855232,1539855359,UA
 1539855360,1539856383,RU
 1539857408,1539858431,PL
 1539858432,1539859455,RO
@@ -25421,8 +26376,8 @@
 1539956736,1539957759,UA
 1539957760,1539958783,RU
 1539958784,1539960063,UA
-1539960064,1539960575,RU
-1539960576,1539962879,UA
+1539960064,1539960831,RU
+1539960832,1539962879,UA
 1539962880,1539964927,RU
 1539964928,1539965951,UA
 1539965952,1539966975,RU
@@ -26472,12 +27427,10 @@
 1540654080,1540654335,EU
 1540654336,1540654591,RU
 1540654592,1540654847,SI
-1540654848,1540655103,RU
 1540655104,1540655359,AT
 1540655360,1540655615,RU
 1540655616,1540655871,GB
 1540655872,1540656383,NL
-1540656640,1540656895,RU
 1540656896,1540657151,RO
 1540657152,1540657407,DE
 1540657408,1540657663,CY
@@ -26486,7 +27439,7 @@
 1540658176,1540658431,RO
 1540658432,1540659199,RU
 1540659200,1540659455,FR
-1540659456,1540659967,UA
+1540659712,1540659967,UA
 1540659968,1540660223,PL
 1540660224,1540660479,RU
 1540660480,1540660735,FR
@@ -26567,7 +27520,7 @@
 1540682496,1540682751,DE
 1540682752,1540683007,EE
 1540683008,1540683263,DE
-1540683264,1540683775,HR
+1540683520,1540683775,HR
 1540683776,1540684031,UA
 1540684032,1540684287,IT
 1540684288,1540684543,HU
@@ -26674,7 +27627,6 @@
 1540713216,1540713727,PL
 1540713728,1540713983,RU
 1540713984,1540714239,GB
-1540714240,1540714495,RO
 1540714496,1540714751,NL
 1540714752,1540715263,RU
 1540715264,1540715519,NL
@@ -26725,7 +27677,6 @@
 1540729600,1540729855,CH
 1540729856,1540730111,RU
 1540730112,1540730367,GB
-1540730368,1540730623,RU
 1540730624,1540730879,UA
 1540730880,1540731135,IL
 1540731136,1540731391,DE
@@ -26765,7 +27716,6 @@
 1540740608,1540740863,NL
 1540740864,1540741119,RO
 1540741120,1540741375,GB
-1540741376,1540741631,EU
 1540741632,1540742143,NL
 1540742144,1540742399,RU
 1540742400,1540742655,DE
@@ -26877,7 +27827,7 @@
 1540851712,1540853759,RU
 1540853760,1540854783,UA
 1540854784,1540855807,NL
-1540855808,1540856831,UA
+1540855808,1540856831,BG
 1540856832,1540857855,NL
 1540857856,1540858879,DK
 1540858880,1540859903,GB
@@ -27288,10 +28238,9 @@
 1541010944,1541011199,CY
 1541011200,1541011455,CH
 1541011456,1541011711,FI
-1541011712,1541011967,RU
 1541012224,1541012479,DE
 1541012480,1541012735,FI
-1541012736,1541013247,UA
+1541012992,1541013247,UA
 1541013248,1541013503,SI
 1541013504,1541014527,RO
 1541014528,1541015551,AM
@@ -27350,7 +28299,8 @@
 1541082112,1541083135,RU
 1541083136,1541084159,RO
 1541084160,1541086207,RU
-1541086208,1541088255,UA
+1541086208,1541086463,NL
+1541086464,1541088255,UA
 1541088256,1541089279,RU
 1541089280,1541090303,GB
 1541090304,1541091327,CZ
@@ -27669,7 +28619,6 @@
 1541232128,1541232639,RU
 1541232640,1541233151,PL
 1541233152,1541233663,RU
-1541233664,1541234175,SK
 1541234176,1541234687,RO
 1541234688,1541235199,NL
 1541235200,1541235455,RU
@@ -27822,11 +28771,10 @@
 1541347584,1541347839,RU
 1541347840,1541348095,SI
 1541348096,1541348351,UA
-1541348352,1541348607,RU
 1541348608,1541348863,HR
 1541348864,1541349119,UA
 1541349120,1541349375,PL
-1541349376,1541349631,ES
+1541349376,1541349631,RU
 1541349632,1541349887,PL
 1541349888,1541350143,RU
 1541350144,1541350399,FR
@@ -28257,7 +29205,6 @@
 1541583872,1541584127,SE
 1541584128,1541584383,GB
 1541584384,1541584895,NL
-1541584896,1541585151,DE
 1541585152,1541585663,RU
 1541585664,1541585919,UA
 1541585920,1541586431,RU
@@ -28347,10 +29294,8 @@
 1541635072,1541636095,GB
 1541636096,1541636863,AT
 1541636864,1541637119,RO
-1541637120,1541637631,PL
 1541637632,1541638143,CZ
 1541638144,1541638399,RU
-1541638400,1541638655,FR
 1541638656,1541639167,HU
 1541639168,1541640191,RU
 1541640192,1541641215,KZ
@@ -28389,7 +29334,7 @@
 1541660672,1541661695,SK
 1541661696,1541661951,RU
 1541661952,1541662207,NL
-1541662208,1541662719,RO
+1541662208,1541662719,AT
 1541662720,1541663743,CZ
 1541663744,1541664767,RO
 1541664768,1541666047,RU
@@ -28511,7 +29456,6 @@
 1541734912,1541735167,RU
 1541735168,1541735423,DE
 1541735424,1541735679,GB
-1541735680,1541735935,RU
 1541735936,1541736447,RO
 1541736448,1541737471,RU
 1541737472,1541739519,RO
@@ -28816,7 +29760,6 @@
 1541904384,1541904639,PL
 1541904640,1541904895,SE
 1541904896,1541905407,GB
-1541905408,1541905663,RU
 1541905664,1541905919,PL
 1541905920,1541906431,RS
 1541906432,1541906687,UA
@@ -29006,7 +29949,7 @@
 1542017792,1542018047,GB
 1542018048,1542019071,DE
 1542019072,1542019327,RU
-1542019328,1542020095,UA
+1542019584,1542020095,UA
 1542020096,1542021119,RU
 1542021120,1542023167,UA
 1542023168,1542023423,PL
@@ -29134,7 +30077,7 @@
 1542106112,1542107135,RU
 1542107136,1542107391,PL
 1542107392,1542107903,RU
-1542107904,1542108159,SK
+1542107904,1542108159,AT
 1542108160,1542109183,RU
 1542109184,1542109695,GB
 1542109696,1542110207,PL
@@ -29173,7 +30116,6 @@
 1542124800,1542125567,PL
 1542125568,1542126591,CZ
 1542126592,1542127103,PL
-1542127360,1542127615,RU
 1542127616,1542128127,PL
 1542128128,1542128383,RU
 1542128384,1542129151,RO
@@ -29360,7 +30302,8 @@
 1542237184,1542238207,PL
 1542238208,1542239743,RU
 1542239744,1542239999,HU
-1542240000,1542240767,RU
+1542240000,1542240255,RU
+1542240256,1542240767,UA
 1542240768,1542241023,DK
 1542241024,1542241279,GB
 1542241280,1542241535,LV
@@ -29421,7 +30364,7 @@
 1542273024,1542274047,BG
 1542274048,1542275071,PL
 1542275072,1542275327,UA
-1542275328,1542275583,DE
+1542275328,1542275583,AT
 1542275584,1542276095,SE
 1542276096,1542277631,PL
 1542277632,1542278143,GB
@@ -29535,7 +30478,7 @@
 1542343680,1542344447,PL
 1542344448,1542345727,RU
 1542345984,1542346239,PL
-1542346240,1542348287,RU
+1542346240,1542347775,RU
 1542348288,1542348799,MD
 1542348800,1542349823,RU
 1542349824,1542350847,UA
@@ -29781,8 +30724,7 @@
 1542475776,1542476799,LB
 1542476800,1542477823,RU
 1542477824,1542478079,DK
-1542478336,1542478847,UA
-1542478848,1542479103,RU
+1542478336,1542479103,RU
 1542479104,1542479359,PL
 1542479360,1542479615,RO
 1542479616,1542479871,RU
@@ -30092,8 +31034,8 @@
 1545895936,1545928703,BA
 1545928704,1545961471,SI
 1545961472,1545994751,RU
-1545994752,1545995263,CZ
-1545995264,1545995519,RU
+1545994752,1545995007,CZ
+1545995008,1545995519,RU
 1545995520,1545996287,CZ
 1545996288,1545998335,RU
 1545998336,1546000383,CZ
@@ -30103,12 +31045,15 @@
 1546003200,1546003967,RU
 1546003968,1546004479,CZ
 1546004480,1546004735,UA
-1546004736,1546005247,CZ
+1546004736,1546004795,CZ
+1546004796,1546004796,UA
+1546004797,1546005247,CZ
 1546005248,1546006527,RU
 1546006528,1546008575,UA
 1546008576,1546014719,BY
 1546014720,1546015743,RU
-1546015744,1546027007,CZ
+1546015744,1546018815,CZ
+1546018816,1546027007,UA
 1546027008,1546059775,RU
 1546059776,1546063871,SE
 1546063872,1546067967,DE
@@ -30136,7 +31081,9 @@
 1546122650,1546122650,PT
 1546122651,1546122696,FR
 1546122697,1546122704,ES
-1546122705,1546125311,FR
+1546122705,1546124191,FR
+1546124192,1546124223,DZ
+1546124224,1546125311,FR
 1546125312,1546256383,GB
 1546256384,1546264575,RU
 1546264576,1546266623,TR
@@ -30179,7 +31126,9 @@
 1546342400,1546344447,TR
 1546344448,1546346495,DK
 1546346496,1546348543,AT
-1546348544,1546350591,DE
+1546348544,1546348607,DE
+1546348608,1546348623,CH
+1546348624,1546350591,DE
 1546350592,1546352639,PL
 1546352640,1546354687,DK
 1546354688,1546356735,FR
@@ -30381,21 +31330,20 @@
 1550843904,1550974975,UA
 1550974976,1550975999,RO
 1550976000,1550976255,EG
-1550976256,1550979071,RO
+1550976256,1550976767,RO
+1550976768,1550977023,US
+1550977024,1550979071,RO
 1550979072,1550983167,IR
 1550983168,1550984191,RO
-1550984192,1550984319,KR
-1550984320,1550984447,VG
+1550984192,1550984447,KR
 1550984448,1550985215,RO
 1550985216,1550987263,PS
 1550987264,1550988543,RO
-1550988544,1550988671,VG
-1550988672,1550988799,JP
+1550988544,1550988799,JP
 1550988800,1550996223,RO
-1550996224,1550996351,VG
-1550996352,1550996479,AU
+1550996224,1550996479,AU
 1550996480,1550998527,RO
-1550998528,1550998783,NL
+1550998528,1550998783,IT
 1550998784,1551014143,RO
 1551014144,1551014399,MD
 1551014400,1551015167,RO
@@ -30464,7 +31412,9 @@
 1558056104,1558079407,FR
 1558079408,1558079415,PL
 1558079416,1558079423,GB
-1558079424,1558081175,FR
+1558079424,1558079871,FR
+1558079872,1558079887,GB
+1558079888,1558081175,FR
 1558081176,1558081183,BE
 1558081184,1558083775,FR
 1558083776,1558083791,DE
@@ -30476,17 +31426,29 @@
 1558091352,1558091352,ES
 1558091353,1558093531,FR
 1558093532,1558093532,HR
-1558093533,1558097919,FR
+1558093533,1558093609,FR
+1558093610,1558093610,ES
+1558093611,1558097919,FR
 1558097920,1558098175,GB
 1558098176,1558103159,FR
 1558103160,1558103167,GB
-1558103168,1558118399,FR
+1558103168,1558112095,FR
+1558112096,1558112127,ES
+1558112128,1558112191,FR
+1558112192,1558112192,ES
+1558112193,1558112207,FR
+1558112208,1558112208,ES
+1558112209,1558112209,FR
+1558112210,1558112211,ES
+1558112212,1558118399,FR
 1558118400,1558119423,DE
 1558119424,1558122495,RU
 1558122496,1558123007,SG
 1558123008,1558123519,RU
 1558123520,1558125567,LU
-1558125568,1558147071,AT
+1558125568,1558141439,AT
+1558141440,1558141695,CY
+1558141696,1558147071,AT
 1558147072,1558147327,LU
 1558147328,1558147583,AT
 1558147584,1558147839,RU
@@ -30500,7 +31462,9 @@
 1558151168,1558172927,IT
 1558172928,1558173183,US
 1558173184,1558179839,IT
-1558179840,1558180023,NL
+1558179840,1558179955,NL
+1558179956,1558179959,IT
+1558179960,1558180023,NL
 1558180024,1558180039,IT
 1558180040,1558180863,NL
 1558180864,1558183935,IT
@@ -30585,7 +31549,8 @@
 1560135680,1560135807,UA
 1560135808,1560135935,CZ
 1560135936,1560137727,RU
-1560137728,1560150015,CZ
+1560137728,1560137983,DE
+1560137984,1560150015,CZ
 1560150016,1560182783,NL
 1560182784,1560215551,SE
 1560215552,1560281087,RU
@@ -30699,12 +31664,33 @@
 1566394533,1566394533,NL
 1566394534,1566394534,SE
 1566394535,1566394535,PT
-1566394536,1566394538,NO
+1566394536,1566394536,GB
+1566394537,1566394538,NO
 1566394539,1566394539,RU
 1566394540,1566396415,NO
 1566396416,1566398463,GB
 1566398464,1566400511,RU
-1566400512,1566402559,NO
+1566400512,1566400607,NO
+1566400608,1566400639,GB
+1566400640,1566400671,NO
+1566400672,1566400703,DE
+1566400704,1566400735,NL
+1566400736,1566401023,NO
+1566401024,1566401087,US
+1566401088,1566401151,NO
+1566401152,1566401279,US
+1566401280,1566401599,NO
+1566401600,1566401631,HK
+1566401632,1566401663,NO
+1566401664,1566401695,SG
+1566401696,1566401727,NO
+1566401728,1566401759,AU
+1566401760,1566401887,NO
+1566401888,1566401919,A2
+1566401920,1566402143,NO
+1566402144,1566402175,A2
+1566402176,1566402303,NO
+1566402304,1566402559,SG
 1566404608,1566406655,ES
 1566406656,1566408703,NL
 1566408704,1566410751,GB
@@ -30825,20 +31811,34 @@
 1567766272,1567767039,RO
 1567767040,1567767551,GB
 1567767552,1567768575,ES
-1567768576,1567826175,RO
+1567768576,1567769343,RO
+1567769344,1567769599,MD
+1567769600,1567773951,RO
+1567773952,1567774207,MD
+1567774208,1567785983,RO
+1567785984,1567786239,MD
+1567786240,1567789055,RO
+1567789056,1567793151,ES
+1567793152,1567826175,RO
 1567826176,1567826431,DE
 1567826432,1567827455,RO
 1567827456,1567827711,BG
-1567827712,1567833087,RO
+1567827712,1567832831,RO
+1567832832,1567833087,GB
 1567833088,1567833599,NL
 1567833600,1567834111,IT
 1567834112,1567838207,RO
 1567838208,1567842303,A1
-1567842304,1567852543,RO
+1567842304,1567842815,FR
+1567842816,1567852543,RO
 1567852544,1567856639,MD
 1567856640,1567858687,RO
 1567858688,1567860735,SE
-1567860736,1567871999,RO
+1567860736,1567866879,RO
+1567866880,1567867135,IN
+1567867136,1567869183,RO
+1567869184,1567869439,NL
+1567869440,1567871999,RO
 1567872000,1567873023,ES
 1567873024,1567879167,MD
 1567879168,1567883263,RO
@@ -30859,16 +31859,20 @@
 1567993856,1567997951,IR
 1567997952,1568014335,NL
 1568014336,1568022527,DE
-1568022528,1568024063,RO
+1568022528,1568023551,FR
+1568023552,1568024063,RO
 1568024064,1568024319,SG
 1568024320,1568038911,RO
 1568038912,1568059391,IR
 1568059392,1568060415,RO
-1568060416,1568062463,MD
-1568062464,1568088063,RO
+1568060416,1568063487,MD
+1568063488,1568083967,RO
+1568083968,1568084223,CN
+1568084224,1568088063,RO
 1568088064,1568104447,IR
 1568104448,1568106495,MD
-1568106496,1568108543,RO
+1568106496,1568107519,RO
+1568107520,1568108543,MD
 1568108544,1568109055,GB
 1568109056,1568110079,RO
 1568110080,1568111103,GB
@@ -30942,7 +31946,9 @@
 1570645248,1570652159,FR
 1570652160,1570660863,SE
 1570660864,1570661375,NO
-1570661376,1570668543,SE
+1570661376,1570662143,SE
+1570662144,1570662399,DE
+1570662400,1570668543,SE
 1570668544,1570686975,RU
 1570686976,1570693119,NL
 1570693120,1570695167,RU
@@ -30963,7 +31969,7 @@
 1571422208,1571422463,CZ
 1571422464,1571422719,UA
 1571422720,1571423231,RU
-1571423232,1571423487,CZ
+1571423232,1571423487,UA
 1571423488,1571423999,RU
 1571424000,1571424255,KZ
 1571424256,1571424511,KG
@@ -30977,11 +31983,16 @@
 1571425233,1571425279,CZ
 1571425280,1571425535,RU
 1571425536,1571425791,NL
-1571425792,1571426047,CZ
+1571425792,1571425871,CZ
+1571425872,1571425872,RU
+1571425873,1571426047,CZ
 1571426048,1571426303,UA
 1571426304,1571428607,CZ
 1571428608,1571428863,UA
-1571428864,1571432447,CZ
+1571428864,1571430399,CZ
+1571430400,1571430911,UA
+1571430912,1571431423,CZ
+1571431424,1571432447,KZ
 1571432448,1571434495,RU
 1571434496,1571435519,UA
 1571435520,1571436031,RU
@@ -31005,7 +32016,8 @@
 1571447296,1571447807,RU
 1571447808,1571448063,CZ
 1571448064,1571448319,RU
-1571448320,1571448831,CZ
+1571448320,1571448575,CZ
+1571448576,1571448831,RU
 1571448832,1571449343,NL
 1571449344,1571449855,CZ
 1571449856,1571451391,RU
@@ -31031,16 +32043,19 @@
 1571469312,1571469823,BY
 1571469824,1571470335,CZ
 1571470336,1571470847,UA
-1571470848,1571471103,RU
-1571471104,1571471359,CZ
-1571471360,1571475455,RU
+1571470848,1571475455,RU
 1571475456,1571476479,CZ
 1571476480,1571479551,RU
 1571479552,1571483647,CZ
 1571483648,1571484159,RU
 1571484160,1571487743,CZ
-1571487744,1571489791,SK
-1571489792,1571491327,CZ
+1571487744,1571489023,SK
+1571489024,1571489279,UA
+1571489280,1571489535,BY
+1571489536,1571490047,RU
+1571490048,1571490303,CZ
+1571490304,1571491071,RU
+1571491072,1571491327,CZ
 1571491328,1571495935,UA
 1571495936,1571496447,RU
 1571496448,1571497983,BY
@@ -31051,9 +32066,12 @@
 1571514368,1571520511,BY
 1571520512,1571522047,UA
 1571522048,1571522815,RU
-1571522816,1571524607,CZ
+1571522816,1571524095,CZ
+1571524096,1571524351,RU
+1571524352,1571524607,CZ
 1571524608,1571526655,RU
-1571526656,1571528703,CZ
+1571526656,1571528191,CZ
+1571528192,1571528703,UA
 1571528704,1571529215,BY
 1571529216,1571529471,CZ
 1571529472,1571529727,UA
@@ -31073,7 +32091,11 @@
 1571535872,1571538943,RU
 1571538944,1571539967,CZ
 1571539968,1571540223,UA
-1571540224,1571540991,CZ
+1571540224,1571540693,CZ
+1571540694,1571540695,RU
+1571540696,1571540696,CZ
+1571540697,1571540697,RU
+1571540698,1571540991,CZ
 1571540992,1571541247,RU
 1571541248,1571541503,UA
 1571541504,1571542015,CZ
@@ -31158,7 +32180,7 @@
 1572030464,1572034815,RU
 1572034816,1572034943,BY
 1572034944,1572035071,US
-1572035072,1572035199,RU
+1572035072,1572035199,CZ
 1572035200,1572035327,NG
 1572035328,1572035455,US
 1572035456,1572035583,RU
@@ -31377,8 +32399,8 @@
 1572794368,1572796415,RU
 1572796416,1572798463,DE
 1572798464,1572800511,NL
-1572800512,1572800739,RU
-1572800740,1572800740,UA
+1572800512,1572800738,RU
+1572800739,1572800740,UA
 1572800741,1572804607,RU
 1572804608,1572808703,GB
 1572808704,1572810751,FR
@@ -31453,7 +32475,9 @@
 1578592200,1578592207,CH
 1578592208,1578592295,FR
 1578592296,1578592303,NL
-1578592304,1578593023,FR
+1578592304,1578592783,FR
+1578592784,1578592799,BE
+1578592800,1578593023,FR
 1578593024,1578593279,DE
 1578593280,1578593415,FR
 1578593416,1578593423,IT
@@ -31496,7 +32520,20 @@
 1578613736,1578613739,ES
 1578613740,1578613931,FR
 1578613932,1578613935,NL
-1578613936,1578614495,FR
+1578613936,1578614319,FR
+1578614320,1578614323,RU
+1578614324,1578614327,HU
+1578614328,1578614399,FR
+1578614400,1578614403,EE
+1578614404,1578614423,FR
+1578614424,1578614427,IS
+1578614428,1578614431,LV
+1578614432,1578614459,FR
+1578614460,1578614463,NO
+1578614464,1578614471,FR
+1578614472,1578614475,SI
+1578614476,1578614479,UA
+1578614480,1578614495,FR
 1578614496,1578614511,DE
 1578614512,1578631167,FR
 1578631168,1578659839,RO
@@ -31524,10 +32561,12 @@
 1580048384,1580064767,RU
 1580064768,1580072959,GB
 1580072960,1580083199,PT
-1580083200,1580089343,DE
-1580089344,1580101631,PT
-1580101632,1580105727,GB
-1580105728,1580109823,PT
+1580083200,1580085247,DE
+1580085248,1580089343,US
+1580089344,1580097535,PT
+1580097536,1580105727,GB
+1580105728,1580109567,PT
+1580109568,1580109823,SE
 1580109824,1580113919,US
 1580113920,1580138495,PT
 1580138496,1580204031,IT
@@ -31633,7 +32672,9 @@
 1583782704,1583782711,IT
 1583782712,1583782975,GB
 1583782976,1583782983,IT
-1583782984,1583783495,GB
+1583782984,1583783095,GB
+1583783096,1583783103,IT
+1583783104,1583783495,GB
 1583783496,1583783503,IT
 1583783504,1583783935,GB
 1583783936,1583788031,EU
@@ -31910,7 +32951,10 @@
 1587478528,1587511295,RU
 1587511296,1587544063,IL
 1587544064,1588068351,IT
-1588068352,1588592639,GB
+1588068352,1588092159,NL
+1588092160,1588092415,GB
+1588092416,1588133887,NL
+1588133888,1588592639,GB
 1588592640,1588593663,RO
 1588593664,1588593919,MD
 1588593920,1588594687,RO
@@ -31920,24 +32964,30 @@
 1588609024,1588613119,MD
 1588613120,1588617215,IR
 1588617216,1588619775,RO
-1588619776,1588620159,SG
-1588620160,1588620287,VG
-1588620288,1588641535,RO
+1588619776,1588620287,SG
+1588620288,1588637695,RO
+1588637696,1588638719,ES
+1588638720,1588641535,RO
 1588641536,1588641791,GB
 1588641792,1588643839,ES
 1588643840,1588649983,RO
 1588649984,1588652031,SE
-1588652032,1588659199,RO
+1588652032,1588654079,RO
+1588654080,1588658175,DE
+1588658176,1588659199,RO
 1588659200,1588659711,NL
 1588659712,1588664319,RO
-1588664320,1588664831,VG
+1588664320,1588664575,TH
+1588664576,1588664831,VG
 1588664832,1588673535,RO
 1588673536,1588674559,MD
 1588674560,1588676607,RO
 1588676608,1588678655,IR
 1588678656,1588684799,RO
-1588684800,1588685311,VG
-1588685312,1588689919,RO
+1588684800,1588685055,TH
+1588685056,1588685311,VG
+1588685312,1588689663,RO
+1588689664,1588689919,RU
 1588689920,1588690687,GB
 1588690688,1588723711,RO
 1588723712,1588854783,UA
@@ -32090,7 +33140,7 @@
 1592221696,1592225791,DK
 1592225792,1592242175,RU
 1592242176,1592246271,UA
-1592246272,1592254463,RU
+1592246272,1592250367,RU
 1592254464,1592258559,PL
 1592258560,1592262655,NL
 1592262656,1592270847,RU
@@ -32120,7 +33170,9 @@
 1592459264,1592524799,TR
 1592524800,1592557567,GB
 1592557568,1592590335,BG
-1592590336,1592623103,FI
+1592590336,1592594431,FI
+1592594432,1592598527,DE
+1592598528,1592623103,FI
 1592623104,1592655871,RU
 1592655872,1592786943,FR
 1592786944,1592803327,PL
@@ -32141,9 +33193,7 @@
 1593065472,1593081855,LT
 1593081856,1593098239,UA
 1593098240,1593114623,CH
-1593114624,1593118719,SE
-1593118720,1593122815,DK
-1593122816,1593131007,SE
+1593114624,1593131007,SE
 1593131008,1593131023,CH
 1593131024,1593131519,GB
 1593131520,1593131775,CH
@@ -32166,7 +33216,9 @@
 1593180160,1593196543,NO
 1593196544,1593203103,SE
 1593203104,1593203135,FI
-1593203136,1593212927,SE
+1593203136,1593206783,SE
+1593206784,1593207039,FI
+1593207040,1593212927,SE
 1593212928,1593229311,PL
 1593229312,1593245695,EE
 1593245696,1593247743,NL
@@ -32248,9 +33300,13 @@
 1596456960,1596588031,PL
 1596588032,1596719103,BG
 1596719104,1596850175,IE
-1596850176,1596866559,CZ
-1596866560,1596876799,RU
-1596876800,1596881919,CZ
+1596850176,1596858879,CZ
+1596858880,1596859391,RU
+1596859392,1596862463,CZ
+1596862464,1596876799,RU
+1596876800,1596878079,CZ
+1596878080,1596878335,RU
+1596878336,1596881919,CZ
 1596881920,1596887295,RU
 1596887296,1596887551,KZ
 1596887552,1596888063,UA
@@ -32261,12 +33317,14 @@
 1596890112,1596890623,RU
 1596890624,1596890879,CZ
 1596890880,1596900351,RU
-1596900352,1596900863,CZ
+1596900352,1596900607,CZ
+1596900608,1596900863,RU
 1596900864,1596901375,NL
 1596901376,1596907519,BY
 1596907520,1596909567,RU
 1596909568,1596911615,KZ
-1596911616,1596915711,RU
+1596911616,1596911871,BY
+1596911872,1596915711,RU
 1596915712,1596923903,UA
 1596923904,1596925951,CZ
 1596925952,1596932095,RU
@@ -32401,7 +33459,9 @@
 1600978944,1601011711,SE
 1601011712,1601044479,UA
 1601044480,1601077247,RU
-1601077248,1601110015,IT
+1601077248,1601109567,IT
+1601109568,1601109631,FR
+1601109632,1601110015,IT
 1601110016,1601142783,BG
 1601142784,1601175551,UA
 1601175552,1601699839,DE
@@ -32626,7 +33686,10 @@
 1603215360,1603219455,DE
 1603219456,1603223551,CH
 1603223552,1603223807,FR
-1603223808,1603227647,GB
+1603223808,1603226255,GB
+1603226256,1603226263,DE
+1603226264,1603226271,NL
+1603226272,1603227647,GB
 1603227648,1603231743,AT
 1603231744,1603235839,IT
 1603235840,1603239935,RU
@@ -32648,9 +33711,7 @@
 1603895296,1603928063,RU
 1603928064,1603944447,DK
 1603944448,1603977215,RU
-1603977216,1603990847,GB
-1603990848,1603990911,A1
-1603990912,1603993599,GB
+1603977216,1603993599,GB
 1603993600,1604009983,ME
 1604009984,1604026367,PL
 1604026368,1604042751,NL
@@ -32658,7 +33719,9 @@
 1604059136,1604075519,MK
 1604075520,1604091903,RU
 1604091904,1604108287,BA
-1604108288,1604141055,DE
+1604108288,1604120575,DE
+1604120576,1604122623,PL
+1604122624,1604141055,DE
 1604141056,1604157439,IT
 1604157440,1604190207,FR
 1604190208,1604206591,UA
@@ -32716,7 +33779,9 @@
 1605108408,1605108415,IT
 1605108416,1605108567,GB
 1605108568,1605108575,IT
-1605108576,1605109223,GB
+1605108576,1605108903,GB
+1605108904,1605108911,IT
+1605108912,1605109223,GB
 1605109224,1605109231,IT
 1605109232,1605109495,GB
 1605109496,1605109503,IT
@@ -32730,13 +33795,9 @@
 1605110264,1605110271,IT
 1605110272,1605111023,GB
 1605111024,1605111031,IT
-1605111032,1605111087,GB
-1605111088,1605111095,IT
-1605111096,1605111199,GB
+1605111032,1605111199,GB
 1605111200,1605111207,IT
-1605111208,1605111375,GB
-1605111376,1605111383,IT
-1605111384,1605111799,GB
+1605111208,1605111799,GB
 1605111800,1605111807,IT
 1605111808,1605111879,GB
 1605111880,1605111887,IT
@@ -32744,7 +33805,9 @@
 1605111920,1605111927,IT
 1605111928,1605111935,GB
 1605111936,1605111943,IT
-1605111944,1605112847,GB
+1605111944,1605112423,GB
+1605112424,1605112431,IT
+1605112432,1605112847,GB
 1605112848,1605112855,IT
 1605112856,1605113087,GB
 1605113088,1605113095,IT
@@ -32752,7 +33815,9 @@
 1605113384,1605113391,IT
 1605113392,1605113407,GB
 1605113408,1605113415,IT
-1605113416,1605113815,GB
+1605113416,1605113567,GB
+1605113568,1605113583,IT
+1605113584,1605113815,GB
 1605113816,1605113823,IT
 1605113824,1605114199,GB
 1605114200,1605114207,IT
@@ -32778,9 +33843,13 @@
 1605125277,1605125375,DE
 1605125376,1605125903,GB
 1605125904,1605125919,DE
-1605125920,1605130239,GB
+1605125920,1605126701,GB
+1605126702,1605126702,US
+1605126703,1605130239,GB
 1605130240,1605130271,NL
-1605130272,1605132287,GB
+1605130272,1605131263,GB
+1605131264,1605131519,DE
+1605131520,1605132287,GB
 1605132288,1605148671,RU
 1605148672,1605156863,PT
 1605156864,1605165055,JO
@@ -32820,7 +33889,9 @@
 1605599232,1605631999,GR
 1605632000,1605664767,RS
 1605664768,1605697535,MK
-1605697536,1605753855,RU
+1605697536,1605753343,RU
+1605753344,1605753471,US
+1605753472,1605753855,RU
 1605753856,1605754879,FR
 1605754880,1605763071,RU
 1605763072,1605769215,KZ
@@ -32828,8 +33899,10 @@
 1605771264,1605795839,RU
 1605795840,1605828607,BE
 1605828608,1605828863,GB
-1605828864,1605829375,US
-1605829376,1605830399,IL
+1605828864,1605829631,US
+1605829632,1605829887,GB
+1605829888,1605830143,US
+1605830144,1605830399,IL
 1605830400,1605830655,US
 1605830656,1605840895,RU
 1605840896,1605844991,CH
@@ -32845,9 +33918,10 @@
 1607575552,1607577599,GB
 1607577600,1607581695,SE
 1607581696,1607598079,DK
-1607598080,1607598335,IT
+1607598080,1607598335,GB
 1607598336,1607598591,EU
-1607598592,1607600383,IT
+1607598592,1607599103,GB
+1607599104,1607600383,IT
 1607600384,1607600639,DE
 1607600640,1607600895,AT
 1607600896,1607601151,CH
@@ -32855,7 +33929,9 @@
 1607601920,1607602175,GB
 1607602176,1607606015,IT
 1607606016,1607606271,FR
-1607606272,1607608319,IT
+1607606272,1607606783,DE
+1607606784,1607607039,GB
+1607607040,1607608319,IT
 1607608320,1607608575,HU
 1607608576,1607608831,SK
 1607608832,1607610367,EU
@@ -32873,8 +33949,9 @@
 1607625216,1607625471,EU
 1607625472,1607625727,IT
 1607625728,1607626751,ES
-1607626752,1607627519,EU
-1607627520,1607628543,IT
+1607626752,1607627519,FR
+1607627520,1607627775,FI
+1607627776,1607628543,IT
 1607628544,1607628799,EU
 1607628800,1607629567,IT
 1607629568,1607634431,EU
@@ -32882,7 +33959,9 @@
 1607636480,1607639039,EU
 1607639040,1607640805,IT
 1607640806,1607640806,CH
-1607640807,1607647231,IT
+1607640807,1607642388,IT
+1607642389,1607642389,NL
+1607642390,1607647231,IT
 1607647232,1607651327,DE
 1607651328,1607655423,FR
 1607655424,1607663615,IT
@@ -32979,9 +34058,11 @@
 1611116544,1611117567,NL
 1611117568,1611128831,US
 1611128832,1611130879,NL
-1611130880,1611227135,US
+1611130880,1611218943,US
+1611218944,1611227135,KH
 1611227136,1611235327,CA
-1611235328,1611662335,US
+1611235328,1611251711,SG
+1611251712,1611662335,US
 1611662336,1611662847,NL
 1611662848,1611692543,US
 1611692544,1611693567,NL
@@ -33066,7 +34147,8 @@
 1653555200,1653567487,CA
 1653567488,1653571583,US
 1653571584,1653575679,CA
-1653575680,1653592063,US
+1653575680,1653579775,US
+1653583872,1653592063,US
 1653592064,1653596159,CA
 1653596160,1653600255,US
 1653600256,1653604351,CA
@@ -33399,7 +34481,9 @@
 1728346624,1728347135,AU
 1728347136,1728347147,SG
 1728347148,1728347148,AP
-1728347149,1728347421,SG
+1728347149,1728347416,SG
+1728347417,1728347417,AP
+1728347418,1728347421,SG
 1728347422,1728347422,AP
 1728347423,1728348159,SG
 1728348160,1728349183,VN
@@ -33434,7 +34518,8 @@
 1728375040,1728375295,IN
 1728375296,1728376831,AU
 1728376832,1728377855,ID
-1728377856,1728378879,HK
+1728377856,1728378623,HK
+1728378624,1728378879,US
 1728378880,1728380927,IN
 1728380928,1728382975,PH
 1728382976,1728383999,SG
@@ -33603,7 +34688,7 @@
 1728538624,1728539647,AF
 1728539648,1728540671,IN
 1728540672,1728541695,BD
-1728541696,1728543743,JP
+1728541696,1728542719,JP
 1728543744,1728544767,SG
 1728544768,1728545791,IN
 1728545792,1728546815,JP
@@ -33643,7 +34728,6 @@
 1728574464,1728575487,KR
 1728575488,1728576511,BD
 1728576512,1728577535,BT
-1728577536,1728578559,LA
 1728578560,1728580607,CN
 1728580608,1728580863,ID
 1728580864,1728581119,VN
@@ -33744,7 +34828,8 @@
 1728684032,1728685055,AU
 1728685056,1728686079,JP
 1728686080,1728687103,AU
-1728687104,1728689407,JP
+1728687104,1728688127,JP
+1728689152,1728689407,JP
 1728689408,1728689663,BD
 1728689664,1728689919,PK
 1728690176,1728691199,BD
@@ -33839,7 +34924,6 @@
 1728775168,1728776191,JP
 1728776192,1728777215,AU
 1728777216,1728778239,TH
-1728778240,1728779263,JP
 1728779264,1728779519,IN
 1728779776,1728780287,ID
 1728780288,1728781311,KR
@@ -33849,7 +34933,8 @@
 1728784384,1728785407,PH
 1728785408,1728786431,KR
 1728786432,1728787455,SG
-1728787456,1728788479,AU
+1728787456,1728787711,AU
+1728787712,1728788479,NZ
 1728788480,1728789503,KR
 1728789504,1728790527,PK
 1728790528,1728791551,PH
@@ -33906,7 +34991,11 @@
 1728838656,1728839679,ID
 1728839936,1728840191,IN
 1728840192,1728840447,SG
-1728840448,1728842751,AU
+1728840448,1728841727,AU
+1728841728,1728841983,NZ
+1728841984,1728842239,AU
+1728842240,1728842495,NZ
+1728842496,1728842751,AU
 1728842752,1728843775,ID
 1728843776,1728844799,JP
 1728844800,1728845311,ID
@@ -33918,7 +35007,7 @@
 1728848896,1728849919,AU
 1728849920,1728850943,PK
 1728850944,1728851967,BD
-1728851968,1728854015,JP
+1728852992,1728854015,JP
 1728854016,1728854527,AU
 1728854528,1728854783,PK
 1728854784,1728855039,AU
@@ -33979,12 +35068,10 @@
 1728902400,1728902655,IN
 1728902912,1728903167,BD
 1728903168,1728905215,KR
-1728905472,1728905727,PK
 1728905728,1728906239,IN
 1728907264,1728908287,NZ
 1728909312,1728912383,JP
 1728912384,1728913407,TH
-1728913408,1728914431,PH
 1728914432,1728915199,ID
 1728915200,1728915455,NZ
 1728915456,1728917503,JP
@@ -34022,9 +35109,8 @@
 1728951552,1728951807,ID
 1728951808,1728952063,SG
 1728952064,1728952319,IN
-1728952832,1728953343,AU
-1728953344,1728954112,GB
-1728954113,1728954367,HK
+1728952832,1728953343,NZ
+1728953344,1728954367,HK
 1728954368,1728955391,JP
 1728955392,1728956415,CN
 1728956416,1728957439,ID
@@ -34047,9 +35133,7 @@
 1728973824,1728974847,JP
 1728974848,1728976383,ID
 1728976384,1728976895,AU
-1728976896,1728977151,AF
 1728977920,1728978943,MY
-1728978944,1728979967,JP
 1728979968,1728980991,MN
 1728980992,1728982015,AU
 1728982016,1728982527,ID
@@ -34168,7 +35252,8 @@
 1729079296,1729080319,AU
 1729080320,1729081343,ID
 1729081344,1729081599,IN
-1729081600,1729082111,AU
+1729081600,1729081855,AU
+1729081856,1729082111,NZ
 1729082112,1729082367,IN
 1729082368,1729083391,HK
 1729083392,1729083647,JP
@@ -34279,7 +35364,6 @@
 1729182208,1729182463,ID
 1729182464,1729182719,AU
 1729182720,1729183743,AF
-1729183744,1729184767,JP
 1729184768,1729185791,BD
 1729185792,1729186815,HK
 1729186816,1729187327,ID
@@ -34295,7 +35379,6 @@
 1729198080,1729199103,CN
 1729199104,1729199615,MY
 1729199616,1729199871,JP
-1729199872,1729200127,TH
 1729200128,1729201151,IN
 1729201152,1729202175,AU
 1729203200,1729205247,SG
@@ -34340,7 +35423,6 @@
 1729239040,1729240063,JP
 1729240064,1729242111,ID
 1729242112,1729244159,AU
-1729244160,1729245183,SG
 1729245184,1729247231,AU
 1729247232,1729247487,NZ
 1729247488,1729247743,AU
@@ -34438,7 +35520,7 @@
 1729352704,1729353727,IN
 1729353728,1729353983,AU
 1729353984,1729354239,IN
-1729354240,1729354751,AU
+1729354240,1729354495,AU
 1729354752,1729355775,VN
 1729355776,1729356799,IN
 1729356800,1729357823,ID
@@ -34605,7 +35687,6 @@
 1729546240,1729546495,JP
 1729546496,1729547263,HK
 1729548288,1729549311,AU
-1729549312,1729550335,JP
 1729550336,1729551359,MY
 1729551360,1729552383,KR
 1729552384,1729553407,AU
@@ -34675,7 +35756,7 @@
 1729613824,1729614847,SG
 1729614848,1729615103,NZ
 1729615104,1729615359,KH
-1729615360,1729615871,IN
+1729615360,1729615615,IN
 1729615872,1729616895,AU
 1729616896,1729617919,JP
 1729617920,1729618943,ID
@@ -34691,11 +35772,10 @@
 1729627136,1729628159,SG
 1729628160,1729629183,KR
 1729629184,1729629695,ID
-1729629696,1729629951,AU
+1729629696,1729629951,NZ
 1729629952,1729630207,HK
 1729630208,1729631231,PH
 1729631232,1729632255,IN
-1729632256,1729633279,SG
 1729633280,1729634303,NZ
 1729634304,1729635327,KH
 1729635328,1729636351,IN
@@ -34782,7 +35862,6 @@
 1729723392,1729726463,IN
 1729726464,1729727487,PK
 1729727488,1729728511,KI
-1729728512,1729729535,JP
 1729729536,1729730559,CN
 1729730560,1729731583,IN
 1729731584,1729732607,CN
@@ -34915,7 +35994,6 @@
 1729864704,1729866751,IN
 1729866752,1729867775,AU
 1729867776,1729869823,HK
-1729869824,1729870847,JP
 1729870848,1729871871,AU
 1729871872,1729872895,JP
 1729872896,1729873919,AU
@@ -34923,7 +36001,6 @@
 1729874944,1729875455,MY
 1729875456,1729875967,ID
 1729875968,1729876991,CN
-1729876992,1729878015,JP
 1729878016,1729879039,NZ
 1729879040,1729879295,AU
 1729879296,1729879423,KR
@@ -34961,7 +36038,6 @@
 1729902080,1729902591,SG
 1729902592,1729903615,ID
 1729903616,1729905663,KR
-1729905664,1729906687,PH
 1729906688,1729906943,AU
 1729906944,1729907199,JP
 1729907200,1729907711,ID
@@ -35010,7 +36086,6 @@
 1729952000,1729952511,JP
 1729952512,1729952767,NZ
 1729952768,1729953791,IN
-1729953792,1729954815,MY
 1729954816,1729955839,ID
 1729955840,1729956863,BD
 1729956864,1729957887,HK
@@ -35027,7 +36102,7 @@
 1729968128,1729969151,MY
 1729969152,1729970175,LK
 1729970176,1729971199,AU
-1729971200,1729972223,JP
+1729971200,1729972223,SG
 1729972224,1729973247,HK
 1729973248,1729974271,AU
 1729974272,1729975295,PH
@@ -35101,7 +36176,7 @@
 1730043904,1730044927,CN
 1730044928,1730046975,HK
 1730046976,1730047999,KR
-1730048000,1730049023,ID
+1730048000,1730049023,TL
 1730050048,1730050303,AU
 1730050304,1730050559,SG
 1730050560,1730051071,ID
@@ -35127,7 +36202,6 @@
 1730073600,1730073855,HK
 1730074112,1730074367,AU
 1730074368,1730074623,SG
-1730074624,1730075647,CN
 1730075648,1730076671,ID
 1730077696,1730078719,CN
 1730078720,1730079743,HK
@@ -35193,7 +36267,62 @@
 1730147328,1730148351,JP
 1730148352,1730149375,ID
 1730149376,1730150399,JP
-1730150400,1730412543,CN
+1730150400,1730360319,CN
+1730360320,1730361343,IN
+1730361344,1730362367,SG
+1730362368,1730363391,JP
+1730363392,1730364415,VN
+1730364416,1730365439,IN
+1730365440,1730367487,HK
+1730367488,1730368511,AU
+1730368512,1730369535,HK
+1730369536,1730370047,NZ
+1730370048,1730370303,IN
+1730370304,1730370559,JP
+1730370560,1730371583,AU
+1730371584,1730372607,TH
+1730372608,1730373631,IN
+1730373632,1730374655,CN
+1730374656,1730375679,BD
+1730375680,1730376191,AU
+1730376192,1730376703,VU
+1730376704,1730377727,CN
+1730377728,1730378239,IN
+1730378240,1730378495,HK
+1730378496,1730378751,IN
+1730378752,1730379775,HK
+1730379776,1730380799,AU
+1730380800,1730381823,IN
+1730381824,1730382847,MY
+1730382848,1730383359,ID
+1730383360,1730383615,IN
+1730383616,1730383871,MY
+1730383872,1730385919,HK
+1730385920,1730386943,AU
+1730386944,1730387967,BD
+1730387968,1730389503,IN
+1730389504,1730390015,AF
+1730390016,1730391039,BD
+1730391040,1730392063,HK
+1730392064,1730393087,AU
+1730393088,1730394111,SG
+1730394112,1730395135,HK
+1730395136,1730396159,JP
+1730396160,1730398207,IN
+1730398208,1730399231,CN
+1730399232,1730400255,TW
+1730400256,1730402303,PK
+1730402304,1730402559,NZ
+1730402560,1730402815,IN
+1730402816,1730403071,ID
+1730403072,1730403327,AU
+1730403328,1730404351,CN
+1730404352,1730406399,AU
+1730406400,1730407423,IN
+1730407424,1730408447,ID
+1730408448,1730410495,IN
+1730410496,1730411519,SG
+1730411520,1730412543,HK
 1730412544,1730414591,AU
 1730414592,1730415615,ID
 1730415616,1730416127,AU
@@ -35273,7 +36402,7 @@
 1730522112,1730524159,CN
 1730524160,1730525183,IN
 1730525184,1730526207,HK
-1730526208,1730528255,JP
+1730527232,1730528255,JP
 1730528256,1730529279,SG
 1730529280,1730529791,IN
 1730529792,1730530303,AU
@@ -35297,7 +36426,6 @@
 1730552832,1730553855,IN
 1730553856,1730555903,CN
 1730555904,1730556415,IN
-1730556416,1730556927,HK
 1730556928,1730557951,JP
 1730557952,1730558975,CN
 1730558976,1730559999,MY
@@ -35548,7 +36676,7 @@
 1730858240,1730858495,ID
 1730858496,1730859007,IN
 1730859008,1730860031,BN
-1730860032,1730861055,MY
+1730860032,1730861055,HK
 1730861056,1730862079,MM
 1730862080,1730863103,JP
 1730863104,1730864127,AU
@@ -35584,8 +36712,8 @@
 1730893824,1730895103,AU
 1730895104,1730895359,BD
 1730895360,1730895871,NL
-1730895872,1730899455,CN
-1730899456,1730899967,MO
+1730895872,1730898943,CN
+1730898944,1730899967,MO
 1730899968,1730900991,IN
 1730900992,1730901503,AU
 1730901504,1730901759,DE
@@ -35756,9 +36884,10 @@
 1731167232,1731168255,ID
 1731168256,1731170559,CN
 1731170560,1731170687,HK
-1731170688,1731170815,PK
+1731170688,1731170815,MY
 1731170816,1731171071,AU
-1731171072,1731171327,PK
+1731171072,1731171199,TH
+1731171200,1731171327,MY
 1731171328,1731172863,IN
 1731172864,1731173375,MY
 1731173376,1731178495,IN
@@ -35771,7 +36900,7 @@
 1731182592,1731183615,VN
 1731183616,1731184639,IN
 1731184640,1731185663,CN
-1731185664,1731186687,NZ
+1731185664,1731186687,US
 1731186688,1731187711,SG
 1731187712,1731188735,CN
 1731188736,1731189759,IN
@@ -36092,7 +37221,11 @@
 1731557376,1731558399,JP
 1731558400,1731564543,CN
 1731564544,1731565567,NZ
-1731565568,1731566079,HK
+1731565568,1731565600,HK
+1731565601,1731565605,JP
+1731565606,1731565611,HK
+1731565612,1731565613,JP
+1731565614,1731566079,HK
 1731566080,1731566591,PH
 1731566592,1731567615,IN
 1731567616,1731568639,CN
@@ -36107,7 +37240,8 @@
 1731574784,1731576831,ID
 1731576832,1731577087,AU
 1731577088,1731577599,SG
-1731577600,1731578879,AU
+1731577600,1731577855,HK
+1731577856,1731578879,AU
 1731578880,1731580927,CN
 1731581952,1731582975,CN
 1731582976,1731583999,PH
@@ -36125,8 +37259,7 @@
 1731601408,1731603455,BD
 1731603456,1731604479,HK
 1731604480,1731605503,CN
-1731605504,1731605759,MY
-1731605760,1731606527,CN
+1731605504,1731606527,MY
 1731606528,1731607551,JP
 1731607552,1731608575,CN
 1731608576,1731609599,IN
@@ -36173,7 +37306,10 @@
 1731655680,1731657727,VN
 1731657728,1731658751,TH
 1731658752,1731659775,JP
-1731659776,1731660799,HK
+1731659776,1731660031,HK
+1731660032,1731660287,SG
+1731660288,1731660543,MY
+1731660544,1731660799,BN
 1731660800,1731661823,JP
 1731661824,1731662847,AU
 1731662848,1731663871,HK
@@ -36275,8 +37411,470 @@
 1731761664,1731762175,AU
 1731762176,1731763199,CN
 1731763200,1731767295,VN
-1731767296,1731767551,IN
-1731768320,1731770367,IN
+1731767296,1731767807,IN
+1731767808,1731768063,KH
+1731768064,1731770367,IN
+1731770368,1731771391,CN
+1731771392,1731772415,ID
+1731772416,1731773439,HK
+1731773440,1731774463,IN
+1731774464,1731775487,CN
+1731775488,1731776511,ID
+1731776512,1731777023,BD
+1731777024,1731777535,IN
+1731777536,1731778559,JP
+1731778560,1731779071,HK
+1731779072,1731779583,JP
+1731779584,1731782655,IN
+1731782656,1731783679,ID
+1731783680,1731788799,IN
+1731788800,1731789823,AU
+1731789824,1731790847,JP
+1731790848,1731791871,ID
+1731791872,1731792895,CN
+1731792896,1731793919,IN
+1731793920,1731794943,BD
+1731794944,1731795967,HK
+1731795968,1731796991,JP
+1731796992,1731798015,AU
+1731798016,1731799039,ID
+1731799040,1731800063,BD
+1731800064,1731802111,JP
+1731802112,1731804159,CN
+1731804160,1731805183,KR
+1731805184,1731806207,IN
+1731806208,1731806463,AU
+1731806464,1731807231,IN
+1731807232,1731808255,SG
+1731808256,1731809279,CN
+1731809280,1731811583,IN
+1731811584,1731811839,AU
+1731811840,1731812095,HK
+1731812096,1731812351,AU
+1731812352,1731813375,MN
+1731813376,1731815423,JP
+1731815424,1731816447,VN
+1731816448,1731817471,CN
+1731817472,1731818495,VN
+1731818496,1731820543,BD
+1731820544,1731821567,IN
+1731821568,1731822591,JP
+1731822592,1731823615,IN
+1731823616,1731824639,CN
+1731824640,1731825663,IN
+1731825664,1731826687,JP
+1731826688,1731827199,AU
+1731827200,1731827455,IN
+1731827456,1731827711,BD
+1731827712,1731828735,PK
+1731828736,1731829759,SG
+1731829760,1731830783,IN
+1731830784,1731831039,SG
+1731831040,1731831807,AU
+1731831808,1731832831,PK
+1731832832,1731836927,IN
+1731836928,1731837951,MY
+1731837952,1731838975,ID
+1731838976,1731839999,CN
+1731840000,1731841023,HK
+1731841024,1731842047,NP
+1731842048,1731843071,VN
+1731843072,1731845119,IN
+1731845120,1731846143,VN
+1731846144,1731846655,HK
+1731846656,1731846911,IN
+1731846912,1731847167,PH
+1731847168,1731848191,HK
+1731848192,1731849215,MP
+1731849216,1731858431,IN
+1731858432,1731859455,MY
+1731859456,1731860479,FJ
+1731860480,1731861503,CN
+1731861504,1731862527,IN
+1731862528,1731862783,AU
+1731862784,1731863039,ID
+1731863040,1731863551,AU
+1731863552,1731871743,IN
+1731871744,1731872767,JP
+1731872768,1731873791,BD
+1731873792,1731877887,IN
+1731877888,1731878911,BD
+1731878912,1731879935,IN
+1731879936,1731881983,ID
+1731881984,1731882495,BD
+1731882496,1731882751,SG
+1731882752,1731883007,ID
+1731883008,1731883263,SG
+1731883264,1731883519,MY
+1731883520,1731891199,IN
+1731891200,1731891711,NP
+1731891712,1731892223,ID
+1731892224,1731893247,TH
+1731893248,1731895295,IN
+1731895296,1731896319,ID
+1731896320,1731899391,IN
+1731899392,1731900415,HK
+1731900416,1731900671,IN
+1731900672,1731900927,HK
+1731900928,1731901439,CN
+1731901440,1731903487,IN
+1731903488,1731905535,AU
+1731905536,1731908607,IN
+1731908608,1731911679,AU
+1731911680,1731912703,KH
+1731912704,1731913727,NZ
+1731913728,1731913983,AU
+1731913984,1731928063,IN
+1731928064,1731929087,JP
+1731929088,1731930111,BD
+1731930112,1731933183,HK
+1731933184,1731934207,LA
+1731934208,1731939327,IN
+1731939328,1731940351,CN
+1731940352,1731942655,IN
+1731942656,1731942911,JP
+1731942912,1731943423,HK
+1731943424,1731944447,KR
+1731944448,1731945471,IN
+1731945472,1731946495,CN
+1731946496,1731947519,IN
+1731947520,1731948543,AU
+1731948544,1731953663,CN
+1731953664,1731954687,IN
+1731954688,1731955711,JP
+1731956736,1731957759,HK
+1731957760,1731958783,CN
+1731958784,1731959807,IN
+1731959808,1731960831,KR
+1731960832,1731961855,AU
+1731961856,1731962879,CN
+1731962880,1731963903,BD
+1731963904,1731964927,KH
+1731964928,1731965951,BD
+1731965952,1731966463,IN
+1731966464,1731966975,AU
+1731966976,1731975167,IN
+1731975168,1731976191,CN
+1731976192,1731977215,TW
+1731977216,1731979519,IN
+1731979520,1731979775,BD
+1731979776,1731980287,ID
+1731980288,1731986431,IN
+1731986432,1731987455,JP
+1731987456,1731988479,SG
+1731988480,1731989503,JP
+1731989504,1731990527,VN
+1731990528,1731990783,AU
+1731990784,1731991039,IN
+1731991040,1731991551,AU
+1731991552,1731992575,MY
+1731992576,1731993599,IN
+1731993600,1731994623,CN
+1731994624,1731995647,JP
+1731995648,1731996671,IN
+1731996672,1731997695,CN
+1731997696,1731999743,IN
+1731999744,1732002815,HK
+1732002816,1732007935,IN
+1732007936,1732009983,JP
+1732009984,1732010239,AU
+1732010240,1732010495,MN
+1732010496,1732010751,AU
+1732010752,1732011007,NZ
+1732011008,1732012287,IN
+1732012288,1732013055,AU
+1732013056,1732014079,HK
+1732014080,1732016127,IN
+1732016128,1732018175,KR
+1732018176,1732019199,IN
+1732019200,1732019967,AU
+1732019968,1732022271,IN
+1732022272,1732024319,HK
+1732024320,1732025343,AU
+1732025344,1732026367,IN
+1732026368,1732027391,BD
+1732027392,1732028415,CN
+1732028416,1732029439,PH
+1732029440,1732030463,BD
+1732030464,1732031487,IN
+1732031488,1732032511,ID
+1732032512,1732032767,PH
+1732032768,1732033023,TH
+1732033024,1732033535,IN
+1732033536,1732034559,JP
+1732034560,1732035583,NZ
+1732035584,1732036607,IN
+1732036608,1732037631,AU
+1732037632,1732038655,JP
+1732038656,1732040703,IN
+1732040704,1732040959,AU
+1732040960,1732041215,SG
+1732041216,1732041727,IN
+1732041728,1732042751,HK
+1732042752,1732043775,JP
+1732043776,1732044799,CN
+1732044800,1732045823,HK
+1732045824,1732046847,CN
+1732046848,1732047871,AU
+1732047872,1732048895,IN
+1732048896,1732049919,HK
+1732049920,1732050943,PH
+1732050944,1732051967,HK
+1732051968,1732052991,SG
+1732052992,1732054015,MM
+1732054016,1732055039,IN
+1732055040,1732056063,ID
+1732056064,1732057087,HK
+1732057088,1732058111,KH
+1732058112,1732059135,HK
+1732059136,1732060159,IN
+1732060160,1732061183,HK
+1732061184,1732061439,AU
+1732061440,1732061695,ID
+1732061696,1732062207,AU
+1732062208,1732064255,VN
+1732064256,1732066303,IN
+1732066304,1732067327,CN
+1732067328,1732068607,IN
+1732068608,1732068863,NZ
+1732068864,1732069119,AU
+1732069120,1732069375,ID
+1732069376,1732074495,IN
+1732074496,1732075519,KH
+1732075520,1732076543,AU
+1732076544,1732077567,IN
+1732077568,1732078591,CN
+1732078592,1732080639,IN
+1732080640,1732081663,ID
+1732081664,1732082687,HK
+1732082688,1732083711,MY
+1732083712,1732084735,AU
+1732084736,1732085759,IN
+1732085760,1732086783,TW
+1732086784,1732087807,CN
+1732087808,1732088831,HK
+1732088832,1732089599,IN
+1732089600,1732089855,JP
+1732089856,1732092927,CN
+1732092928,1732093951,IN
+1732093952,1732094975,HK
+1732094976,1732097023,CN
+1732097024,1732098047,IN
+1732098048,1732100095,CN
+1732100096,1732100607,SG
+1732100608,1732107263,IN
+1732107264,1732108287,HK
+1732108288,1732109823,AU
+1732109824,1732110335,IN
+1732110336,1732111359,JP
+1732111360,1732113407,HK
+1732113408,1732114431,JP
+1732114432,1732115455,ID
+1732115456,1732116479,IN
+1732116480,1732117503,PH
+1732117504,1732118527,SG
+1732118528,1732119551,VN
+1732119552,1732122623,IN
+1732122624,1732123647,CN
+1732123648,1732124159,AU
+1732124160,1732124671,PH
+1732124672,1732126719,AU
+1732126720,1732127743,IN
+1732127744,1732128767,HK
+1732128768,1732129023,SG
+1732129024,1732129791,HK
+1732129792,1732130815,CN
+1732130816,1732134911,IN
+1732134912,1732140031,CN
+1732140032,1732141055,IN
+1732141056,1732151295,CN
+1732151296,1732152319,IN
+1732152320,1732153855,BD
+1732153856,1732154367,IN
+1732154368,1732155391,HK
+1732155392,1732156415,PH
+1732156416,1732166655,CN
+1732166656,1732167167,ID
+1732167168,1732167679,IN
+1732167680,1732168191,AU
+1732168192,1732168703,ID
+1732168704,1732174847,CN
+1732174848,1732175871,KR
+1732175872,1732176895,PK
+1732176896,1732177919,IN
+1732177920,1732178943,SG
+1732178944,1732179967,JP
+1732179968,1732182015,IN
+1732182016,1732184063,HK
+1732184064,1732188671,IN
+1732188672,1732188927,AU
+1732188928,1732189183,WS
+1732189184,1732190207,IN
+1732190208,1732205567,CN
+1732205568,1732206591,NZ
+1732206592,1732207615,ID
+1732207616,1732207871,AU
+1732207872,1732208127,IN
+1732208128,1732208383,PH
+1732208384,1732208639,AU
+1732208640,1732213759,VN
+1732213760,1732215807,IN
+1732215808,1732217855,HK
+1732217856,1732219903,CN
+1732219904,1732220927,IN
+1732220928,1732221951,CN
+1732221952,1732222975,BD
+1732222976,1732230143,CN
+1732230144,1732230399,LA
+1732230400,1732230655,AU
+1732230656,1732230911,KH
+1732230912,1732231167,AU
+1732231168,1732236287,CN
+1732236288,1732237311,VN
+1732237312,1732240383,JP
+1732240384,1732241407,AU
+1732241408,1732241663,IN
+1732241664,1732241919,ID
+1732241920,1732242431,BD
+1732242432,1732243455,HK
+1732243456,1732247551,CN
+1740636160,1740644351,CN
+1740644352,1740645375,IN
+1740645376,1740647423,HK
+1740647424,1740648447,MO
+1740648448,1740651519,CN
+1740651520,1740653567,IN
+1740653568,1740654591,JP
+1740654592,1740655615,IN
+1740655616,1740656639,NP
+1740656640,1740656895,NZ
+1740656896,1740657151,AF
+1740657152,1740657663,AU
+1740657664,1740665855,CN
+1740665856,1740666879,IN
+1740666880,1740667903,JP
+1740667904,1740668927,PH
+1740668928,1740674047,CN
+1740674048,1740675071,JP
+1740675072,1740676095,AU
+1740676096,1740677119,BD
+1740677120,1740678143,HK
+1740678144,1740679167,CN
+1740679168,1740680447,IN
+1740680448,1740680703,AU
+1740680704,1740680959,MM
+1740680960,1740681215,AU
+1740681216,1740682239,HK
+1740682240,1740683263,KH
+1740683264,1740684287,PH
+1740684288,1740685311,CN
+1740685312,1740686591,AU
+1740686592,1740686847,NZ
+1740686848,1740687359,IN
+1740687360,1740688383,HK
+1740688384,1740689407,IN
+1740689408,1740692479,CN
+1740692480,1740693503,IN
+1740693504,1740694527,HK
+1740694528,1740696575,JP
+1740696576,1740697599,VN
+1740697600,1740698623,NZ
+1740698624,1740700671,IN
+1740700672,1740701695,CN
+1740701696,1740702719,IN
+1740702720,1740703743,MX
+1740703744,1740704255,NZ
+1740704256,1740704767,AU
+1740704768,1740705791,JP
+1740705792,1740706047,NZ
+1740706048,1740706303,AU
+1740706304,1740706559,PK
+1740706560,1740706815,ID
+1740706816,1740709887,IN
+1740709888,1740710911,HK
+1740710912,1740711423,IN
+1740711424,1740711935,NZ
+1740711936,1740713983,CN
+1740713984,1740719103,IN
+1740719104,1740720127,HK
+1740720128,1740721151,JP
+1740721152,1740721407,AU
+1740721408,1740721663,IN
+1740721664,1740721919,AU
+1740721920,1740722175,IN
+1740722176,1740723199,AU
+1740723200,1740731391,IN
+1740731392,1740732415,ID
+1740732416,1740734463,CN
+1740734464,1740736511,HK
+1740736512,1740737535,NZ
+1740737536,1740740607,CN
+1740740608,1740742655,IN
+1740742656,1740743679,CN
+1740743680,1740743935,NZ
+1740743936,1740744191,PH
+1740744192,1740744703,AU
+1740744704,1740745727,BD
+1740745728,1740746751,HK
+1740746752,1740747775,JP
+1740747776,1740748799,KH
+1740748800,1740749823,JP
+1740749824,1740751871,CN
+1740751872,1740753919,IN
+1740753920,1740754943,KH
+1740754944,1740755967,AU
+1740755968,1740764159,CN
+1740764160,1740766207,HK
+1740766208,1740767231,IN
+1740767232,1740769279,AU
+1740769280,1740771327,IN
+1740771328,1740772351,CN
+1740772352,1740776447,IN
+1740776448,1740777471,HK
+1740777472,1740777983,JP
+1740777984,1740778495,HK
+1740778496,1740779519,IN
+1740779520,1740780543,AU
+1740780544,1740784639,IN
+1740784640,1740784895,AU
+1740784896,1740785663,IN
+1740785664,1740786687,JP
+1740786688,1740787711,SG
+1740787712,1740788735,MY
+1740788736,1740789759,KH
+1740789760,1740790783,IN
+1740791808,1740792831,IN
+1740792832,1740794879,HK
+1740794880,1740795903,KR
+1740795904,1740796159,NZ
+1740796160,1740798207,IN
+1740798208,1740798463,AU
+1740798464,1740798975,IN
+1740798976,1740799999,AU
+1740800000,1740800511,IN
+1740800512,1740800767,ID
+1740800768,1740805119,IN
+1740805120,1740806143,HK
+1740806144,1740809215,IN
+1740809216,1740810239,JP
+1740810240,1740811263,IN
+1740811264,1740812287,ID
+1740812288,1740813311,MN
+1740813312,1740814335,IN
+1740815360,1740816383,VN
+1740816384,1740821503,IN
+1740821504,1740822015,HK
+1740822016,1740822527,AU
+1740822528,1740825599,IN
+1740825600,1740825855,SG
+1740825856,1740826111,AU
+1740826112,1740826623,CN
+1740826624,1740827647,IN
+1740827648,1740828671,HK
+1740828672,1740829695,IN
+1740829696,1740830719,HK
+1740830720,1740831743,IN
+1740831744,1740832767,KR
 1742734336,1742735359,IN
 1742735360,1742736383,JP
 1742736384,1742737407,PK
@@ -36299,7 +37897,7 @@
 1742750720,1742751743,IN
 1742751744,1742752767,HK
 1742752768,1742753791,NZ
-1742753792,1742754815,CN
+1742753792,1742754815,HK
 1742754816,1742756863,AU
 1742756864,1742757887,JP
 1742757888,1742758911,BN
@@ -36465,13 +38063,13 @@
 1742928896,1742929919,NZ
 1742929920,1742930175,IN
 1742930432,1742930943,PH
-1742930944,1742931967,KH
 1742931968,1742932991,JP
 1742932992,1742933503,SG
 1742933504,1742933759,ID
 1742933760,1742934015,NZ
 1742934016,1742935039,AF
-1742935040,1742938111,AU
+1742935040,1742937087,AU
+1742937088,1742938111,NZ
 1742938112,1742939135,TW
 1742939136,1742940159,IN
 1742940160,1742941183,JP
@@ -36502,8 +38100,6 @@
 1742972928,1742973439,AU
 1742973440,1742973951,NZ
 1742973952,1742975999,SG
-1742976000,1742977023,JP
-1742977024,1742978047,HK
 1742978048,1742979071,JP
 1742979072,1742980095,HK
 1742980096,1742981119,CN
@@ -36525,7 +38121,6 @@
 1742994432,1742995455,ID
 1742995456,1742996479,BD
 1742996480,1742997503,TH
-1742997504,1742998527,JP
 1742998528,1742999551,CN
 1742999552,1742999807,AU
 1742999808,1743000063,ID
@@ -36544,27 +38139,22 @@
 1743015936,1743016447,ID
 1743016448,1743016703,HK
 1743016704,1743016959,IN
-1743016960,1743017983,KH
 1743017984,1743019007,CN
 1743019008,1743021055,HK
 1743021056,1743021311,SG
 1743021312,1743021567,NZ
 1743021568,1743021823,PH
 1743021824,1743022079,IN
-1743022080,1743023103,AU
 1743023104,1743024127,HK
 1743024128,1743025151,IN
 1743025152,1743026175,ID
 1743026176,1743027199,BD
 1743027200,1743028223,AU
 1743028224,1743029247,CN
-1743029248,1743029503,AU
-1743030272,1743031295,HK
 1743031296,1743035391,IN
 1743035392,1743036415,PK
 1743036416,1743037439,CN
 1743037440,1743038463,AU
-1743038464,1743039487,JP
 1743039488,1743040511,IN
 1743040512,1743041535,CN
 1743041536,1743042559,HK
@@ -36578,7 +38168,6 @@
 1743049728,1743050751,AU
 1743050752,1743051775,TW
 1743051776,1743052799,IN
-1743052800,1743053823,JP
 1743053824,1743055871,CN
 1743055872,1743059199,ID
 1743059200,1743059967,IN
@@ -36603,9 +38192,7 @@
 1743074048,1743074303,IN
 1743074304,1743075327,HK
 1743075328,1743076351,MY
-1743076352,1743077375,JP
 1743077376,1743078399,IN
-1743078400,1743079423,JP
 1743079424,1743080959,ID
 1743080960,1743081471,IN
 1743081472,1743083519,BD
@@ -36629,7 +38216,6 @@
 1743095808,1743096831,CN
 1743096832,1743098879,HK
 1743098880,1743099903,CN
-1743099904,1743100927,KH
 1743100928,1743101951,KR
 1743101952,1743103999,ID
 1743104000,1743105023,IN
@@ -36660,7 +38246,6 @@
 1743126528,1743127551,CN
 1743127552,1743128575,BD
 1743128576,1743129599,JP
-1743129600,1743131647,HK
 1743131648,1743132671,IN
 1743132672,1743133695,JP
 1743133696,1743134719,CN
@@ -36675,7 +38260,6 @@
 1743140864,1743141887,MY
 1743141888,1743142911,BD
 1743142912,1743143935,BN
-1743143936,1743144959,HK
 1743144960,1743145983,AU
 1743145984,1743147007,NZ
 1743147008,1743147263,AU
@@ -36690,24 +38274,21 @@
 1743153152,1743154175,BD
 1743154176,1743155199,HK
 1743155200,1743156223,KR
-1743156224,1743157247,KH
 1743157248,1743158271,HK
-1743158272,1743160319,JP
+1743159296,1743160319,JP
 1743160320,1743161343,TH
-1743161344,1743163391,HK
+1743161344,1743162367,HK
 1743163392,1743166463,IN
 1743166464,1743167487,AU
 1743167488,1743168511,HK
 1743169024,1743169535,IN
 1743169536,1743170559,JP
-1743170560,1743171583,KR
 1743171584,1743172607,AU
 1743172608,1743173631,BD
 1743173632,1743174655,AU
 1743174656,1743175679,ID
 1743175680,1743176703,HK
 1743176704,1743179775,CN
-1743179776,1743180799,JP
 1743180800,1743181823,CN
 1743181824,1743182847,HK
 1743182848,1743184895,IN
@@ -36729,7 +38310,6 @@
 1743201280,1743202303,PH
 1743202304,1743204351,IN
 1743204352,1743205375,TW
-1743205376,1743206399,JP
 1743206400,1743207423,HK
 1743207424,1743208447,KH
 1743208448,1743210495,CN
@@ -36751,8 +38331,7 @@
 1743225856,1743226367,IN
 1743226368,1743226623,PH
 1743226624,1743226879,BD
-1743226880,1743227647,AF
-1743227648,1743227903,IR
+1743226880,1743227903,AF
 1743227904,1743228927,HK
 1743228928,1743229951,CN
 1743229952,1743230975,VN
@@ -36767,7 +38346,6 @@
 1743237120,1743238143,BD
 1743238144,1743240191,CN
 1743240192,1743241215,SG
-1743241216,1743242239,JP
 1743242240,1743244287,ID
 1743244288,1743245311,AU
 1743245312,1743248383,IN
@@ -36784,8 +38362,9 @@
 1743256576,1743258623,HK
 1743258624,1743259647,CN
 1743259648,1743260671,IN
-1743260672,1743261695,JP
-1743261696,1743262719,HK
+1743260672,1743261703,JP
+1743261704,1743261711,PH
+1743261712,1743262719,HK
 1743262720,1743264767,IN
 1743264768,1743265279,MY
 1743265280,1743265535,ID
@@ -36799,12 +38378,10 @@
 1743273984,1743275007,ID
 1743275008,1743276031,HK
 1743276032,1743277055,JP
-1743277056,1743278079,PH
 1743278080,1743279103,LA
 1743279104,1743281151,HK
 1743281152,1743283199,AU
 1743283200,1743284223,BD
-1743284224,1743285247,JP
 1743285248,1743286271,NZ
 1743286272,1743287295,IN
 1743287296,1743288319,AU
@@ -36818,12 +38395,10 @@
 1743296512,1743297535,NP
 1743297536,1743298303,NZ
 1743298304,1743299583,AU
-1743299584,1743300607,KH
 1743300608,1743301631,AU
 1743301632,1743303679,IN
 1743303680,1743304703,NZ
 1743304704,1743305727,IN
-1743305728,1743306751,JP
 1743306752,1743307775,KH
 1743307776,1743308799,AU
 1743308800,1743309823,JP
@@ -36842,7 +38417,6 @@
 1743319296,1743319551,IN
 1743319552,1743320063,ID
 1743320064,1743321087,IN
-1743321088,1743322111,JP
 1743322112,1743323135,AU
 1743323136,1743324159,MY
 1743324160,1743325183,CN
@@ -36852,7 +38426,6 @@
 1743329280,1743330303,IN
 1743330304,1743331327,AU
 1743331328,1743333375,PH
-1743333376,1743334399,JP
 1743334400,1743335423,CN
 1743335424,1743336447,VN
 1743336448,1743337471,CN
@@ -36880,7 +38453,6 @@
 1743355904,1743356927,CN
 1743356928,1743357951,NZ
 1743357952,1743358975,CN
-1743358976,1743359487,AF
 1743359488,1743361023,ID
 1743361024,1743362047,AU
 1743362048,1743364095,ID
@@ -36895,7 +38467,7 @@
 1743370240,1743371263,HK
 1743371264,1743372287,MO
 1743372288,1743373311,TH
-1743373312,1743375359,JP
+1743373312,1743374335,JP
 1743375360,1743376383,MM
 1743376384,1743377407,AU
 1743377408,1743378431,JP
@@ -36912,23 +38484,19 @@
 1743387648,1743388671,JP
 1743388672,1743389695,CN
 1743389696,1743390719,KR
-1743390720,1743391743,JP
 1743391744,1743391999,PK
 1743392000,1743392767,AU
 1743392768,1743393791,HK
 1743393792,1743394815,CN
 1743394816,1743395839,BD
-1743395840,1743396863,JP
 1743396864,1743397887,HK
 1743397888,1743398911,VN
 1743398912,1743399935,TW
-1743399936,1743400959,JP
 1743400960,1743401983,PG
 1743401984,1743403007,HK
 1743403008,1743404031,CN
 1743404032,1743405055,AU
 1743405056,1743407103,IN
-1743407104,1743408127,JP
 1743408128,1743410175,TW
 1743410176,1743411199,SG
 1743411200,1743412223,VN
@@ -36967,7 +38535,7 @@
 1743446016,1743448063,TW
 1743448064,1743449087,AU
 1743449088,1743451135,IN
-1743451136,1743452159,HK
+1743451136,1743452159,CN
 1743452160,1743453183,AU
 1743453184,1743454207,ID
 1743454208,1743455231,IN
@@ -37023,7 +38591,31 @@
 1743506944,1743507455,IN
 1743507456,1743509503,VN
 1743509504,1743510527,HK
-1743510528,1743552511,CN
+1743510528,1743545343,CN
+1743545344,1743546367,HK
+1743546368,1743549951,IN
+1743549952,1743550207,AU
+1743550208,1743550463,SG
+1743550464,1743551487,CN
+1743551488,1743552511,IN
+1743552512,1743553535,JP
+1743553536,1743554559,PK
+1743554560,1743555583,HK
+1743555584,1743557631,JP
+1743557632,1743558655,ID
+1743558656,1743560703,IN
+1743560704,1743561215,ID
+1743561216,1743561727,AU
+1743561728,1743564799,IN
+1743564800,1743565823,PH
+1743565824,1743566847,JP
+1743566848,1743567871,CN
+1743567872,1743569151,ID
+1743569152,1743569919,IN
+1743569920,1743570943,SG
+1743570944,1743574015,IN
+1743574016,1743575039,AU
+1743575040,1743576063,HK
 1743585280,1743589375,CN
 1743589376,1743590399,AU
 1743590400,1743591423,KR
@@ -37084,7 +38676,7 @@
 1743682560,1743683583,MY
 1743683584,1743683839,JP
 1743683840,1743684095,AU
-1743684096,1743684351,HK
+1743684096,1743684351,JP
 1743684352,1743684607,AU
 1743684608,1743685631,CN
 1743685632,1743686655,ID
@@ -37157,7 +38749,6 @@
 1743767552,1743768575,PH
 1743768576,1743770623,CN
 1743770624,1743770879,AU
-1743770880,1743771135,PH
 1743771136,1743771647,NZ
 1743771648,1743772671,JP
 1743772672,1743773695,SG
@@ -37397,7 +38988,7 @@
 1744041984,1744043007,TW
 1744043008,1744044031,CN
 1744044032,1744045055,HK
-1744045056,1744047103,SG
+1744046080,1744047103,SG
 1744047104,1744048127,BD
 1744048128,1744049151,CN
 1744049152,1744050175,BD
@@ -37564,7 +39155,6 @@
 1744218112,1744218367,AU
 1744218368,1744218623,ID
 1744218624,1744219135,IN
-1744219136,1744220159,PH
 1744220160,1744220927,HK
 1744220928,1744221183,JP
 1744221184,1744222207,NZ
@@ -37664,7 +39254,7 @@
 1744315392,1744316415,HK
 1744316416,1744317439,KH
 1744317440,1744318463,AU
-1744318464,1744320511,JP
+1744318464,1744319487,JP
 1744320512,1744321535,ID
 1744321536,1744322559,IN
 1744322560,1744323583,CN
@@ -37681,7 +39271,7 @@
 1744337920,1744338943,CN
 1744338944,1744339967,AU
 1744339968,1744340991,SG
-1744340992,1744343039,HK
+1744342016,1744343039,HK
 1744343040,1744343551,SG
 1744343552,1744343807,ID
 1744343808,1744344063,AU
@@ -37693,11 +39283,11 @@
 1744350208,1744351231,IN
 1744351232,1744352255,NZ
 1744353280,1744354303,HK
-1744354304,1744355327,AU
+1744354304,1744354559,AU
+1744354560,1744355327,NZ
 1744355328,1744356351,CN
-1744356352,1744357375,JP
 1744357376,1744357631,NZ
-1744357632,1744358399,AU
+1744357632,1744357887,AU
 1744358400,1744359423,BD
 1744359424,1744360447,IN
 1744360448,1744361471,CN
@@ -37708,7 +39298,7 @@
 1744367616,1744368639,HK
 1744368640,1744369663,IN
 1744369664,1744369919,ID
-1744369920,1744370431,AU
+1744369920,1744370175,AU
 1744370432,1744370687,JP
 1744370688,1744371711,HK
 1744371712,1744372735,BD
@@ -37769,7 +39359,6 @@
 1744434176,1744435199,CN
 1744435200,1744436223,IN
 1744436224,1744437247,CN
-1744438272,1744439295,JP
 1744439296,1744439807,AU
 1744439808,1744440319,IN
 1744440320,1744441343,HK
@@ -37821,7 +39410,6 @@
 1744490496,1744491519,IN
 1744491520,1744492543,AU
 1744492544,1744493567,CN
-1744493568,1744494079,AU
 1744494080,1744494591,PK
 1744494592,1744495615,CN
 1744495616,1744497663,NZ
@@ -37913,7 +39501,12 @@
 1744594432,1744594943,AU
 1744594944,1744595967,CN
 1744595968,1744596991,IN
-1744596992,1744598015,SG
+1744596992,1744597123,SG
+1744597124,1744597124,US
+1744597125,1744597151,SG
+1744597152,1744597183,IN
+1744597184,1744597215,JP
+1744597216,1744598015,SG
 1744599040,1744601087,JP
 1744602112,1744603135,HK
 1744603136,1744604159,JP
@@ -38052,12 +39645,11 @@
 1744747520,1744748543,CN
 1744749056,1744749567,NZ
 1744749568,1744749823,CN
-1744749824,1744750591,AU
 1744750592,1744752639,IN
 1744752640,1744753663,HK
 1744753664,1744754687,SG
 1744754688,1744755711,VN
-1744755712,1744756735,CN
+1744755712,1744756735,HK
 1744756736,1744757759,PF
 1744757760,1744758271,NZ
 1744758272,1744758527,IN
@@ -38119,7 +39711,7 @@
 1744825344,1744826367,VN
 1744826368,1744827391,ID
 1744827392,1744828415,JP
-1744828416,1744828927,AU
+1744828416,1744828927,NZ
 1744828928,1744829183,SG
 1744829184,1744829439,AU
 1744829440,1744830463,HK
@@ -38190,7 +39782,9 @@
 1749397504,1749406719,NL
 1749406720,1749413887,US
 1749413888,1749422079,NL
-1749422080,1749476863,US
+1749422080,1749449727,US
+1749449728,1749450239,NL
+1749450240,1749476863,US
 1749476864,1749496319,NL
 1749496320,1749497855,US
 1749497856,1749499391,NL
@@ -38214,19 +39808,66 @@
 1749685248,1749686783,NL
 1749686784,1749696511,US
 1749696512,1749698047,NL
-1749698048,1749749247,US
+1749698048,1749698559,US
+1749698560,1749718015,NL
+1749718016,1749749247,US
 1749749248,1749749759,NL
 1749749760,1749757951,US
 1749757952,1749767167,NL
-1749767168,1749816831,US
+1749767168,1749767679,US
+1749767680,1749769215,NL
+1749769216,1749770239,US
+1749770240,1749778431,NL
+1749778432,1749816831,US
 1749816832,1749818367,NL
 1749818368,1749819391,US
 1749819392,1749827583,NL
-1749827584,1749862143,US
+1749827584,1749837823,US
+1749837824,1749838847,NL
+1749838848,1749862143,US
 1749862144,1749862399,NL
-1749862400,1749866239,US
+1749862400,1749863423,US
+1749863424,1749863679,NL
+1749863680,1749866239,US
 1749866240,1749866495,NL
-1749866496,1753251839,US
+1749866496,1749867263,US
+1749867264,1749867519,NL
+1749867520,1749868031,US
+1749868032,1749868287,NL
+1749868288,1750079999,US
+1750080000,1750081535,NL
+1750081536,1750089727,US
+1750089728,1750106111,NL
+1750106112,1750241279,US
+1750241280,1750252543,NL
+1750252544,1750253567,US
+1750253568,1750261759,NL
+1750261760,1750270975,US
+1750270976,1750290943,NL
+1750290944,1750292479,US
+1750292480,1750294527,NL
+1750294528,1750302719,US
+1750302720,1750321663,NL
+1750321664,1750323199,US
+1750323200,1750331391,NL
+1750331392,1750372351,US
+1750372352,1750373375,NL
+1750373376,1750374399,US
+1750374400,1750374911,NL
+1750374912,1750494719,US
+1750494720,1750495231,NL
+1750495232,1750515199,US
+1750515200,1750515711,NL
+1750515712,1750523903,US
+1750523904,1750533119,NL
+1750533120,1750581247,US
+1750581248,1750597631,NL
+1750597632,1750705151,US
+1750705152,1750724607,NL
+1750724608,1751505919,US
+1751505920,1751506175,IN
+1751506176,1751506431,HK
+1751506432,1753251839,US
 1753251840,1753252095,MN
 1753252096,1753252351,SY
 1753252352,1753252607,BY
@@ -38262,7 +39903,13 @@
 1753489664,1753490175,US
 1753490176,1753490431,AU
 1753490432,1753490687,IL
-1753490688,1753735167,US
+1753490688,1753494527,US
+1753494528,1753494783,IL
+1753494784,1753517567,US
+1753517568,1753517823,NO
+1753517824,1753522431,US
+1753522432,1753522687,FR
+1753522688,1753735167,US
 1753735168,1753743359,IE
 1753743360,1754136575,US
 1754136576,1754169343,CA
@@ -38285,7 +39932,10 @@
 1754209536,1754209791,BR
 1754209792,1754210047,AR
 1754210048,1754210303,BJ
-1754210304,1754230783,US
+1754210304,1754223615,US
+1754223616,1754223623,MX
+1754223624,1754223631,AU
+1754223632,1754230783,US
 1754230784,1754234879,VG
 1754234880,1754251519,US
 1754251520,1754251775,LY
@@ -38435,7 +40085,7 @@
 1755824128,1755824383,TV
 1755824384,1755824639,SY
 1755824640,1755824895,ZW
-1755824896,1755825151,TG
+1755824896,1755825151,US
 1755825152,1755825407,GM
 1755825408,1755825663,AO
 1755825664,1755825919,LB
@@ -38600,7 +40250,9 @@
 1758420224,1758420479,HU
 1758420480,1758420735,CH
 1758420736,1758420991,MM
-1758420992,1759128575,US
+1758420992,1758429695,US
+1758429696,1758430207,DE
+1758430208,1759128575,US
 1759128576,1759129599,CA
 1759129600,1759131647,US
 1759131648,1759133695,CA
@@ -38734,7 +40386,7 @@
 1759522560,1759522815,PN
 1759522816,1759523071,MP
 1759523072,1759523327,NF
-1759523328,1759523583,US
+1759523328,1759523583,PR
 1759523584,1759523839,NU
 1759523840,1759524095,NC
 1759524096,1759524351,NL
@@ -38751,8 +40403,8 @@
 1759526912,1759535103,US
 1759535104,1759543295,CA
 1759543296,1759547391,US
-1759547392,1759549439,NL
-1759549440,1760047103,US
+1759547392,1759548415,NL
+1759548416,1760047103,US
 1760047104,1760051199,CA
 1760051200,1760083967,US
 1760083968,1760086015,SE
@@ -38779,22 +40431,25 @@
 1760440832,1760441343,AU
 1760441344,1760443391,US
 1760443392,1760444415,DE
-1760444416,1760468991,US
+1760444416,1760465919,US
+1760465920,1760466943,JP
+1760466944,1760468479,US
+1760468480,1760468991,DE
 1760468992,1760469503,JP
 1760469504,1760470527,US
 1760470528,1760471039,DE
 1760471040,1760473087,GB
 1760473088,1760473599,DE
 1760473600,1760475135,US
-1760475136,1760477183,GB
+1760475136,1760476159,GB
+1760476160,1760477183,FR
 1760477184,1760657407,US
 1760657408,1760677887,CA
 1760677888,1760690175,US
 1760690176,1760755711,CA
 1760755712,1760776191,US
 1760776192,1760784383,CA
-1760784384,1760817151,US
-1760817152,1760817407,MO
+1760784384,1760817407,US
 1760817408,1760817663,BZ
 1760817664,1760817919,BS
 1760817920,1760818175,PA
@@ -38810,7 +40465,9 @@
 1760820480,1760820735,CA
 1760820736,1760837631,US
 1760837632,1760839679,CA
-1760839680,1760867327,US
+1760839680,1760840379,US
+1760840380,1760840380,LU
+1760840381,1760867327,US
 1760867328,1760868351,PR
 1760868352,1760869375,US
 1760869376,1760870399,CA
@@ -38853,25 +40510,41 @@
 1761019648,1761019903,VE
 1761019904,1761023231,US
 1761023232,1761023487,JP
-1761023488,1761044479,US
+1761023488,1761043711,US
+1761043712,1761043967,PH
+1761043968,1761044479,US
 1761044480,1761044735,AU
 1761044736,1761046527,US
 1761046528,1761046783,JP
-1761046784,1761075199,US
+1761046784,1761048063,US
+1761048064,1761048319,IN
+1761048320,1761075199,US
 1761075200,1761083391,CA
 1761083392,1761181695,US
 1761181696,1761181951,MX
 1761181952,1761183743,US
 1761183744,1761183999,AU
-1761184000,1761185791,US
+1761184000,1761185023,US
+1761185024,1761185279,RU
+1761185280,1761185535,US
+1761185536,1761185791,AE
 1761185792,1761186047,MX
-1761186048,1761187327,US
+1761186048,1761186815,US
+1761186816,1761187071,MX
+1761187072,1761187327,US
 1761187328,1761187583,PK
-1761187584,1761189887,US
+1761187584,1761188095,US
+1761188096,1761188351,RU
+1761188352,1761189887,US
 1761189888,1761190143,JP
-1761190144,1761192703,US
+1761190144,1761191679,US
+1761191680,1761191935,MX
+1761191936,1761192703,US
 1761192704,1761192959,AU
-1761192960,1761195007,US
+1761192960,1761194239,US
+1761194240,1761194495,PH
+1761194496,1761194751,HK
+1761194752,1761195007,US
 1761195008,1761195263,HK
 1761195264,1761198079,US
 1761198080,1761214463,CA
@@ -38898,7 +40571,7 @@
 1761259520,1761259775,KH
 1761259776,1761260031,AZ
 1761260032,1761260287,ET
-1761260288,1761260543,CU
+1761260288,1761260543,US
 1761260544,1761260799,EC
 1761260800,1761261055,MU
 1761261056,1761261311,JM
@@ -38907,7 +40580,11 @@
 1761261824,1761262079,SG
 1761262080,1761262335,IN
 1761262336,1761262591,PK
-1761262592,1761273599,US
+1761262592,1761262847,US
+1761262848,1761263103,RU
+1761263104,1761273087,US
+1761273088,1761273343,PH
+1761273344,1761273599,US
 1761273600,1761273855,AU
 1761273856,1761275391,US
 1761275392,1761275647,JP
@@ -38917,7 +40594,9 @@
 1761302016,1761302271,CA
 1761302272,1761304575,US
 1761304576,1761308671,CA
-1761308672,1761478655,US
+1761308672,1761328639,US
+1761328640,1761328895,AU
+1761328896,1761478655,US
 1761478656,1761479679,CA
 1761479680,1761484799,US
 1761484800,1761485823,CA
@@ -38966,7 +40645,7 @@
 1762681088,1762681599,DE
 1762681600,1762684927,MU
 1762684928,1762689023,KE
-1762689024,1762691071,MU
+1762689024,1762691071,DJ
 1762691072,1762693119,TZ
 1762693120,1762695167,MZ
 1762695168,1762701311,ZA
@@ -38977,14 +40656,15 @@
 1762770944,1762783231,MU
 1762783232,1762791423,KE
 1762791424,1762795519,DJ
-1762795520,1762803711,MU
-1762803712,1762807807,ZA
-1762807808,1762815999,MU
+1762795520,1762799615,TZ
+1762799616,1762803711,MZ
+1762803712,1762815999,ZA
 1762816000,1762820095,FR
 1762820096,1762942975,MU
 1762942976,1762947071,NL
 1762947072,1762951167,SE
-1762951168,1762983935,MU
+1762951168,1762955263,DE
+1762955264,1762983935,MU
 1762983936,1763000319,KE
 1763000320,1763008511,UG
 1763008512,1763016703,RW
@@ -39004,7 +40684,8 @@
 1763344896,1763352575,DE
 1763352576,1763385343,MU
 1763385344,1763393535,AE
-1763393536,1763402239,MU
+1763393536,1763401727,GB
+1763401728,1763402239,MU
 1763402240,1763402751,KE
 1763402752,1763406335,MU
 1763406336,1763406847,ZA
@@ -39013,16 +40694,21 @@
 1763428864,1763430399,MU
 1763430400,1763438591,KE
 1763438592,1763442687,UG
-1763442688,1763450879,MU
+1763442688,1763446783,RW
+1763446784,1763450879,DJ
 1763450880,1763459071,TZ
 1763459072,1763463167,MZ
 1763463168,1763475455,ZA
 1763475456,1763479551,FR
-1763479552,1763573759,MU
+1763479552,1763483647,GB
+1763483648,1763573759,MU
 1763573760,1763577855,US
-1763577856,1763602431,MU
+1763577856,1763598335,MU
+1763598336,1763602431,IN
 1763602432,1763606527,NL
-1763606528,1763631103,MU
+1763606528,1763610623,MU
+1763610624,1763614719,DE
+1763614720,1763631103,MU
 1763631104,1763635199,AE
 1763635200,1763657727,MU
 1763657728,1763659775,ZA
@@ -39104,8 +40790,8 @@
 1795560448,1795560959,CA
 1795560960,1795561247,US
 1795561248,1795561343,CA
-1795561344,1795561471,US
-1795561472,1795562495,CA
+1795561344,1795561983,US
+1795561984,1795562495,CA
 1795562496,1795562911,US
 1795562912,1795562943,CA
 1795562944,1795564031,US
@@ -39175,7 +40861,7 @@
 1805253120,1805253375,DE
 1805253376,1805253631,GB
 1805253632,1805253887,DE
-1805253888,1805254143,GB
+1805253888,1805254143,US
 1805254144,1805254399,DE
 1805254400,1805254655,GB
 1805254656,1805582335,US
@@ -39263,14 +40949,15 @@
 1815962112,1815962623,NL
 1815962624,1815963391,US
 1815963392,1815963647,NL
-1815963648,1815964159,US
+1815963648,1815963903,US
+1815963904,1815964159,FR
 1815964160,1815964415,DK
 1815964416,1815964671,PL
 1815964672,1815965695,US
 1815965696,1815966207,DE
 1815966208,1815966719,US
 1815966720,1815966975,GB
-1815966976,1815967231,US
+1815966976,1815967231,NL
 1815967232,1815967487,CA
 1815967488,1815968255,US
 1815968256,1815968767,FR
@@ -39310,7 +40997,9 @@
 1815996160,1815996415,CA
 1815996416,1815997695,US
 1815997696,1815997951,FR
-1815997952,1816001023,US
+1815997952,1816000063,US
+1816000064,1816000511,JP
+1816000512,1816001023,US
 1816001024,1816001279,JP
 1816001280,1816001535,AU
 1816001536,1816001791,US
@@ -39653,10 +41342,13 @@
 1835597824,1835606015,HU
 1835606016,1835614207,CZ
 1835614208,1835622399,RU
-1835622400,1835630591,SE
+1835622400,1835627007,SE
+1835627008,1835627263,DK
+1835627264,1835630591,SE
 1835630592,1835636735,RU
 1835636736,1835638527,LU
-1835638528,1835646975,RU
+1835638528,1835638783,AM
+1835638784,1835646975,RU
 1835646976,1835655167,BA
 1835655168,1835663359,CY
 1835663360,1835671551,UA
@@ -39696,7 +41388,9 @@
 1835917856,1835917863,IT
 1835917864,1835917919,GB
 1835917920,1835917935,IT
-1835917936,1835918383,GB
+1835917936,1835918031,GB
+1835918032,1835918039,IT
+1835918040,1835918383,GB
 1835918384,1835918391,IT
 1835918392,1835918439,GB
 1835918440,1835918447,IT
@@ -39716,9 +41410,7 @@
 1835919752,1835919759,IT
 1835919760,1835920479,GB
 1835920480,1835920487,IT
-1835920488,1835920991,GB
-1835920992,1835920999,IT
-1835921000,1835921119,GB
+1835920488,1835921119,GB
 1835921120,1835921127,IT
 1835921128,1835921343,GB
 1835921344,1835921351,IT
@@ -39763,7 +41455,153 @@
 1836023808,1836040191,RU
 1836040192,1836048383,GB
 1836048384,1836056575,RS
-1836056576,1836580863,IT
+1836056576,1836450337,IT
+1836450338,1836450338,CN
+1836450339,1836450371,IT
+1836450372,1836450372,CN
+1836450373,1836450450,IT
+1836450451,1836450451,CN
+1836450452,1836450470,IT
+1836450471,1836450471,CN
+1836450472,1836450511,IT
+1836450512,1836450512,CN
+1836450513,1836450869,IT
+1836450870,1836450870,CN
+1836450871,1836450881,IT
+1836450882,1836450882,CN
+1836450883,1836450883,IT
+1836450884,1836450884,CN
+1836450885,1836450926,IT
+1836450927,1836450927,CN
+1836450928,1836450931,IT
+1836450932,1836450932,CN
+1836450933,1836450940,IT
+1836450941,1836450941,CN
+1836450942,1836450955,IT
+1836450956,1836450956,CN
+1836450957,1836451346,IT
+1836451347,1836451348,CN
+1836451349,1836451350,IT
+1836451351,1836451351,CN
+1836451352,1836451406,IT
+1836451407,1836451407,CN
+1836451408,1836451417,IT
+1836451418,1836451418,CN
+1836451419,1836451461,IT
+1836451462,1836451462,CN
+1836451463,1836451463,IT
+1836451464,1836451464,CN
+1836451465,1836451521,IT
+1836451522,1836451522,CN
+1836451523,1836452122,IT
+1836452123,1836452123,CN
+1836452124,1836452147,IT
+1836452148,1836452148,CN
+1836452149,1836452186,IT
+1836452187,1836452187,CN
+1836452188,1836452315,IT
+1836452316,1836452316,CN
+1836452317,1836452343,IT
+1836452344,1836452345,CN
+1836452346,1836452445,IT
+1836452446,1836452446,CN
+1836452447,1836452447,IT
+1836452448,1836452448,CN
+1836452449,1836452450,IT
+1836452451,1836452451,CN
+1836452452,1836452546,IT
+1836452547,1836452547,CN
+1836452548,1836452751,IT
+1836452752,1836452752,CN
+1836452753,1836452755,IT
+1836452756,1836452757,CN
+1836452758,1836453483,IT
+1836453484,1836453484,CN
+1836453485,1836453539,IT
+1836453540,1836453540,CN
+1836453541,1836453573,IT
+1836453574,1836453574,CN
+1836453575,1836454695,IT
+1836454696,1836454696,CN
+1836454697,1836454740,IT
+1836454741,1836454741,CN
+1836454742,1836454755,IT
+1836454756,1836454756,CN
+1836454757,1836455219,IT
+1836455220,1836455220,CN
+1836455221,1836455228,IT
+1836455229,1836455229,CN
+1836455230,1836455233,IT
+1836455234,1836455234,CN
+1836455235,1836455263,IT
+1836455264,1836455264,CN
+1836455265,1836455272,IT
+1836455273,1836455274,CN
+1836455275,1836455281,IT
+1836455282,1836455282,CN
+1836455283,1836455305,IT
+1836455306,1836455306,CN
+1836455307,1836455309,IT
+1836455310,1836455310,CN
+1836455311,1836455378,IT
+1836455379,1836455379,CN
+1836455380,1836455454,IT
+1836455455,1836455455,CN
+1836455456,1836455458,IT
+1836455459,1836455460,CN
+1836455461,1836455516,IT
+1836455517,1836455517,CN
+1836455518,1836455546,IT
+1836455547,1836455547,CN
+1836455548,1836455556,IT
+1836455557,1836455557,CN
+1836455558,1836455562,IT
+1836455563,1836455563,CN
+1836455564,1836455565,IT
+1836455566,1836455566,CN
+1836455567,1836455568,IT
+1836455569,1836455570,CN
+1836455571,1836455589,IT
+1836455590,1836455590,CN
+1836455591,1836455631,IT
+1836455632,1836455632,CN
+1836455633,1836455987,IT
+1836455988,1836455988,CN
+1836455989,1836455993,IT
+1836455994,1836455995,CN
+1836455996,1836455997,IT
+1836455998,1836455998,CN
+1836455999,1836456001,IT
+1836456002,1836456002,CN
+1836456003,1836456021,IT
+1836456022,1836456022,CN
+1836456023,1836456097,IT
+1836456098,1836456098,CN
+1836456099,1836456117,IT
+1836456118,1836456118,CN
+1836456119,1836456131,IT
+1836456132,1836456135,CN
+1836456136,1836456136,IT
+1836456137,1836456137,CN
+1836456138,1836458047,IT
+1836458048,1836458048,CN
+1836458049,1836459294,IT
+1836459295,1836459295,CN
+1836459296,1836459383,IT
+1836459384,1836459384,CN
+1836459385,1836459399,IT
+1836459400,1836459400,CN
+1836459401,1836466454,IT
+1836466455,1836466455,CN
+1836466456,1836466465,IT
+1836466466,1836466466,CN
+1836466467,1836466529,IT
+1836466530,1836466530,CN
+1836466531,1836466532,IT
+1836466533,1836466533,CN
+1836466534,1836466551,IT
+1836466552,1836466552,CN
+1836466553,1836580863,IT
 1836580864,1836597247,RU
 1836597248,1836598271,LU
 1836598272,1836605439,FR
@@ -39793,7 +41631,9 @@
 1836794595,1836794595,FR
 1836794596,1836797951,GB
 1836797952,1836798207,DE
-1836798208,1836810239,GB
+1836798208,1836807087,GB
+1836807088,1836807088,CN
+1836807089,1836810239,GB
 1836810240,1836826623,RU
 1836826624,1836843007,CZ
 1836843008,1836875775,RU
@@ -39811,7 +41651,77 @@
 1837056000,1837072383,IQ
 1837072384,1837088767,RU
 1837088768,1837105151,SI
-1837105152,1838153727,BE
+1837105152,1837500953,BE
+1837500954,1837500954,CN
+1837500955,1837501019,BE
+1837501020,1837501020,CN
+1837501021,1837501040,BE
+1837501041,1837501041,CN
+1837501042,1837501119,BE
+1837501120,1837501120,CN
+1837501121,1837501584,BE
+1837501585,1837501585,CN
+1837501586,1837501588,BE
+1837501589,1837501589,CN
+1837501590,1837501623,BE
+1837501624,1837501624,CN
+1837501625,1837501643,BE
+1837501644,1837501644,CN
+1837501645,1837501998,BE
+1837501999,1837501999,CN
+1837502000,1837502022,BE
+1837502023,1837502023,CN
+1837502024,1837502041,BE
+1837502042,1837502042,CN
+1837502043,1837502052,BE
+1837502053,1837502053,CN
+1837502054,1837502126,BE
+1837502127,1837502127,CN
+1837502128,1837502164,BE
+1837502165,1837502165,CN
+1837502166,1837502539,BE
+1837502540,1837502540,CN
+1837502541,1837502574,BE
+1837502575,1837502575,CN
+1837502576,1837502606,BE
+1837502607,1837502607,CN
+1837502608,1837502610,BE
+1837502611,1837502611,CN
+1837502612,1837502639,BE
+1837502640,1837502640,CN
+1837502641,1837502702,BE
+1837502703,1837502703,CN
+1837502704,1837502818,BE
+1837502819,1837502819,CN
+1837502820,1837502913,BE
+1837502914,1837502914,CN
+1837502915,1837502931,BE
+1837502932,1837502932,CN
+1837502933,1837503116,BE
+1837503117,1837503117,CN
+1837503118,1837503125,BE
+1837503126,1837503127,CN
+1837503128,1837503129,BE
+1837503130,1837503131,CN
+1837503132,1837503136,BE
+1837503137,1837503137,CN
+1837503138,1837503153,BE
+1837503154,1837503154,CN
+1837503155,1837503156,BE
+1837503157,1837503157,CN
+1837503158,1837503163,BE
+1837503164,1837503165,CN
+1837503166,1837503166,BE
+1837503167,1837503167,CN
+1837503168,1837503175,BE
+1837503176,1837503176,CN
+1837503177,1837503184,BE
+1837503185,1837503185,CN
+1837503186,1837503186,BE
+1837503187,1837503187,CN
+1837503188,1837503188,BE
+1837503189,1837503189,CN
+1837503190,1838153727,BE
 1838153728,1839202303,GB
 1839202304,1839235071,BG
 1839235072,1839267839,IL
@@ -39836,17 +41746,17 @@
 1839603712,1839618047,RO
 1839618048,1839628287,SA
 1839628288,1839661055,RO
-1839661056,1839693823,UA
+1839661056,1839686655,UA
+1839686656,1839687167,ES
+1839687168,1839693055,UA
+1839693056,1839693311,ES
+1839693312,1839693823,UA
 1839693824,1839726591,RU
 1839726592,1839759359,IT
 1839759360,1839792127,RU
-1839792128,1839793279,GB
-1839793280,1839793407,A1
-1839793408,1839794847,GB
+1839792128,1839794847,GB
 1839794848,1839794879,CH
-1839794880,1839796479,GB
-1839796480,1839796671,A1
-1839796672,1839816703,GB
+1839794880,1839816703,GB
 1839816704,1839824895,NO
 1839824896,1839890431,RU
 1839890432,1839923199,GB
@@ -39977,9 +41887,18 @@
 1842085888,1842118655,GB
 1842118656,1842151423,FI
 1842151424,1842153471,FR
-1842153472,1842154271,NO
+1842153472,1842153983,NO
+1842153984,1842154239,US
+1842154240,1842154271,NO
 1842154272,1842154303,HK
-1842154304,1842155519,NO
+1842154304,1842154335,NO
+1842154336,1842154343,SG
+1842154344,1842154351,NO
+1842154352,1842154367,SG
+1842154368,1842154495,NO
+1842154496,1842155007,US
+1842155008,1842155263,AU
+1842155264,1842155519,NL
 1842155520,1842157567,IT
 1842157568,1842159615,AE
 1842159616,1842161663,BA
@@ -40017,7 +41936,7 @@
 1842233344,1842241535,SA
 1842241536,1842249727,RS
 1842249728,1842257919,RU
-1842257920,1842266111,EU
+1842257920,1842266111,NL
 1842266112,1842274303,PL
 1842282496,1842286591,RU
 1842286592,1842290687,GB
@@ -40253,9 +42172,19 @@
 1844772864,1844838399,RS
 1844838400,1844903935,GB
 1844903936,1844969471,NO
-1844969472,1845029887,RU
+1844969472,1845006335,RU
+1845006336,1845010431,KZ
+1845010432,1845022719,RU
+1845022720,1845023743,KZ
+1845023744,1845025535,RU
+1845025536,1845025791,KZ
+1845025792,1845027583,RU
+1845027584,1845027839,ES
+1845027840,1845029887,RU
 1845029888,1845030143,KZ
-1845030144,1845034751,RU
+1845030144,1845030911,RU
+1845030912,1845031935,GE
+1845031936,1845034751,RU
 1845034752,1845035007,BY
 1845035008,1845100543,GB
 1845100544,1845166079,DE
@@ -40562,7 +42491,6 @@
 1876934656,1876942847,JP
 1876942848,1876946943,AU
 1876946944,1876947967,CN
-1876947968,1876948991,AF
 1876948992,1876950015,CN
 1876950016,1876951039,ID
 1876951040,1877475327,CN
@@ -41017,7 +42945,11 @@
 1933922304,1933926399,IN
 1933926400,1933934591,KR
 1933934592,1933942783,IN
-1933942784,1933950975,AU
+1933942784,1933944319,NZ
+1933944320,1933944575,AU
+1933944576,1933946879,NZ
+1933946880,1933948927,AU
+1933948928,1933950975,NZ
 1933950976,1933955071,JP
 1933955072,1933957119,BD
 1933957120,1933959167,ID
@@ -41039,7 +42971,8 @@
 1934966784,1934974975,ID
 1934974976,1934983167,JP
 1934983168,1934983423,MY
-1934983424,1934985215,AU
+1934983424,1934984959,AU
+1934984960,1934985215,US
 1934985216,1934987263,JP
 1934987264,1934991359,TW
 1934991360,1934999551,KR
@@ -41135,18 +43068,23 @@
 1946163200,1946165247,CN
 1946165248,1946173439,PK
 1946173440,1946173695,PG
-1946173696,1946175487,SG
-1946175488,1946176511,SY
+1946173696,1946173951,TW
+1946173952,1946174463,SG
+1946174464,1946174719,TW
+1946174720,1946175487,SG
+1946175488,1946175615,HK
+1946175616,1946176511,SG
 1946176512,1946176639,AU
 1946176640,1946176767,PH
 1946176768,1946178047,SG
 1946178048,1946178303,HK
-1946178304,1946181631,SG
+1946178304,1946179583,SG
+1946179584,1946179839,AU
+1946179840,1946181631,SG
 1946181632,1946189823,MY
 1946189824,1946222591,JP
 1946222592,1946943487,CN
 1946943488,1946951679,JP
-1946951680,1946953727,BD
 1946953728,1946955775,ID
 1946955776,1946957823,SG
 1946957824,1946959871,NZ
@@ -41162,7 +43100,9 @@
 1949440000,1949442047,ID
 1949442048,1949446143,TW
 1949446144,1949448191,JP
-1949448192,1949449471,AU
+1949448192,1949449395,AU
+1949449396,1949449396,AP
+1949449397,1949449471,AU
 1949449472,1949449727,JP
 1949449728,1949450239,AU
 1949450240,1949466623,IN
@@ -41287,7 +43227,7 @@
 1959239680,1959241727,KR
 1959241728,1959243775,IN
 1959243776,1959247871,JP
-1959247872,1959251967,ID
+1959247872,1959249919,ID
 1959251968,1959256063,NZ
 1959256064,1959260159,AU
 1959260160,1959264255,JP
@@ -41337,15 +43277,11 @@
 1962622976,1962639359,CN
 1962639360,1962658815,NZ
 1962658816,1962659839,HK
-1962659840,1962660863,SG
-1962660864,1962661375,HK
-1962661376,1962663935,SG
+1962659840,1962663935,SG
 1962663936,1962672127,HK
 1962672128,1962803199,CN
 1962803200,1962827775,JP
-1962827776,1962829823,ID
-1962829824,1962831871,JP
-1962831872,1962835967,ID
+1962827776,1962835967,ID
 1962835968,1962868735,CN
 1962868736,1962885119,AU
 1962885120,1962901503,KR
@@ -41474,7 +43410,11 @@
 1970798592,1970800639,SG
 1970800640,1970802943,AU
 1970802944,1970803199,SG
-1970803200,1970804735,AU
+1970803200,1970803711,AU
+1970803712,1970803967,HK
+1970803968,1970804519,AU
+1970804520,1970804520,SG
+1970804521,1970804735,AU
 1970804736,1970806783,KH
 1970806784,1970808831,NZ
 1970808832,1970810879,AU
@@ -41489,7 +43429,8 @@
 1970926336,1970926591,US
 1970926592,1970926847,SG
 1970926848,1970927103,IL
-1970927104,1970927615,SG
+1970927104,1970927359,SG
+1970927360,1970927615,US
 1970927616,1970929663,AU
 1970929664,1970962431,VN
 1970962432,1970995199,CN
@@ -41551,7 +43492,8 @@
 1986498560,1986502655,HK
 1986510848,1986519039,KR
 1986519040,1986523135,PK
-1986523136,1986525183,CN
+1986523136,1986523904,HK
+1986523905,1986525183,CN
 1986525184,1986527231,BN
 1986527232,1986723839,JP
 1986723840,1986740223,AU
@@ -41621,7 +43563,9 @@
 1996685312,1996750847,HK
 1996750848,1997078527,CN
 1997078528,1997094911,AU
-1997094912,1997144063,HK
+1997094912,1997111295,HK
+1997111296,1997127679,AU
+1997127680,1997144063,HK
 1997144064,1997176831,CN
 1997176832,1997180927,AU
 1997180928,1997185023,HK
@@ -41709,7 +43653,6 @@
 1999136768,1999138815,AU
 1999138816,1999142911,MY
 1999142912,1999249407,CN
-1999249408,1999257599,PH
 1999257600,1999273983,TH
 1999273984,1999278079,CN
 1999278080,1999280127,HK
@@ -41766,61 +43709,39 @@
 2001829888,2001841247,HK
 2001841248,2001841248,SA
 2001841249,2001846271,HK
-2001846272,2001855231,SG
+2001846272,2001854943,SG
+2001854944,2001854951,CN
+2001854952,2001855231,SG
 2001855232,2001855263,US
-2001855264,2001855775,SG
-2001855776,2001855791,US
-2001855792,2001855807,SG
-2001855808,2001855823,GB
-2001855824,2001857439,SG
-2001857440,2001857503,US
-2001857504,2001857975,SG
-2001857976,2001857983,US
-2001857984,2001858007,SG
-2001858008,2001858011,US
-2001858012,2001858111,SG
-2001858112,2001858143,US
-2001858144,2001859007,SG
-2001859008,2001859015,NL
-2001859016,2001859039,SG
-2001859040,2001859071,US
-2001859072,2001859791,SG
-2001859792,2001859799,US
-2001859800,2001859807,SG
-2001859808,2001859811,US
-2001859812,2001859899,SG
-2001859900,2001859903,US
-2001859904,2001860119,SG
-2001860120,2001860127,US
-2001860128,2001860227,SG
-2001860228,2001860231,US
-2001860232,2001860335,SG
-2001860336,2001860343,US
-2001860344,2001860439,SG
-2001860440,2001860443,US
-2001860444,2001860527,SG
-2001860528,2001860531,US
-2001860532,2001860603,SG
-2001860604,2001860607,US
-2001860608,2001860791,SG
-2001860792,2001860795,US
-2001860796,2001860855,SG
-2001860856,2001860863,US
-2001860864,2001860903,SG
-2001860904,2001860907,US
-2001860908,2001860959,SG
-2001860960,2001860963,US
-2001860964,2001861087,SG
-2001861088,2001861095,US
-2001861096,2001861207,SG
-2001861208,2001861215,US
-2001861216,2001861399,SG
-2001861400,2001861415,US
-2001861416,2001861439,SG
-2001861440,2001861447,AU
-2001861448,2001862015,SG
-2001862016,2001862047,US
-2001862048,2001862655,SG
+2001855264,2001855743,SG
+2001855744,2001855999,HK
+2001856000,2001857255,SG
+2001857256,2001857263,A1
+2001857264,2001857439,SG
+2001857440,2001857471,US
+2001857472,2001857791,SG
+2001857792,2001858047,HK
+2001858048,2001858335,SG
+2001858336,2001858367,US
+2001858368,2001858639,SG
+2001858640,2001858655,US
+2001858656,2001859071,SG
+2001859072,2001859327,HK
+2001859328,2001860031,SG
+2001860032,2001860047,HK
+2001860048,2001860351,SG
+2001860352,2001860607,HK
+2001860608,2001860655,SG
+2001860656,2001860671,US
+2001860672,2001860991,SG
+2001860992,2001861007,US
+2001861008,2001861263,SG
+2001861264,2001861279,US
+2001861280,2001862079,SG
+2001862080,2001862124,US
+2001862125,2001862125,HK
+2001862126,2001862143,US
+2001862144,2001862655,SG
 2001862656,2001864703,AU
 2001864704,2001870847,JP
 2001870848,2001879039,KR
@@ -42149,9 +44070,7 @@
 2047496192,2047504383,HK
 2047504384,2047506431,CN
 2047506432,2047508479,US
-2047508480,2047517695,CN
-2047517696,2047518719,HK
-2047518720,2047574015,CN
+2047508480,2047574015,CN
 2047574016,2047606783,SG
 2047606784,2047770879,CN
 2047770880,2047773184,HK
@@ -42565,7 +44484,6 @@
 2084569088,2084732927,CN
 2084732928,2084741119,SG
 2084741120,2084743167,ID
-2084743168,2084745215,JP
 2084745216,2084749311,KR
 2084749312,2084753407,JP
 2084753408,2084757503,KR
@@ -42786,9 +44704,13 @@
 2113688000,2113688031,AU
 2113688032,2113688959,JP
 2113688960,2113688991,SG
-2113688992,2113693599,JP
+2113688992,2113691135,JP
+2113691136,2113691391,SG
+2113691392,2113693599,JP
 2113693600,2113693615,HK
-2113693616,2113694175,JP
+2113693616,2113693879,JP
+2113693880,2113693887,AU
+2113693888,2113694175,JP
 2113694176,2113694191,HK
 2113694192,2113716223,JP
 2113716224,2113724927,SG
@@ -42811,8 +44733,8 @@
 2147491840,2147494911,DE
 2147494912,2147495167,RO
 2147495168,2147495423,DE
-2147495424,2147495935,RO
-2147495936,2147497215,DE
+2147495424,2147496959,RO
+2147496960,2147497215,DE
 2147497216,2147497471,RO
 2147497472,2147498239,DE
 2147498240,2147498495,RO
@@ -42885,10 +44807,15 @@
 2153387008,2153387263,CH
 2153387264,2153387775,US
 2153387776,2153388031,CH
-2153388032,2153406463,US
+2153388032,2153397247,US
+2153397248,2153397503,IN
+2153397504,2153397759,SA
+2153397760,2153398015,QA
+2153398016,2153398271,BH
+2153398272,2153406463,US
 2153406464,2153407487,JP
 2153407488,2153407743,HK
-2153407744,2153407999,US
+2153407744,2153407999,AE
 2153408000,2153408511,BR
 2153408512,2153408767,AU
 2153408768,2153409023,PA
@@ -42948,7 +44875,9 @@
 2156331008,2156593151,US
 2156593152,2156658687,IL
 2156658688,2156691455,IR
-2156691456,2156695551,A2
+2156691456,2156694271,A2
+2156694272,2156694783,FR
+2156694784,2156695551,A2
 2156695552,2156697599,FR
 2156697600,2156699647,GR
 2156699648,2156703743,RU
@@ -43003,7 +44932,9 @@
 2163638528,2163671039,DE
 2163671040,2163867647,US
 2163867648,2163933183,AU
-2163933184,2164981759,US
+2163933184,2164260863,US
+2164260864,2164326399,CM
+2164326400,2164981759,US
 2164981760,2165112831,GB
 2165112832,2165178367,DE
 2165178368,2165309439,US
@@ -43084,6 +45015,10 @@
 2177105920,2177302527,US
 2177302528,2177368063,FR
 2177368064,2177695743,US
+2177695744,2177703935,UG
+2177703936,2177712127,ZA
+2177728512,2177744895,ZA
+2177744896,2177761279,BW
 2177761280,2177826815,DE
 2177826816,2177892351,US
 2177892352,2177957887,SA
@@ -43199,7 +45134,15 @@
 2188509184,2188574719,US
 2188574720,2188640255,NL
 2188640256,2188705791,AU
-2188705792,2188724463,EU
+2188705792,2188706153,EU
+2188706154,2188706154,SI
+2188706155,2188718161,EU
+2188718162,2188718162,SI
+2188718163,2188718337,EU
+2188718338,2188718338,AT
+2188718339,2188718473,EU
+2188718474,2188718474,AT
+2188718475,2188724463,EU
 2188724464,2188724464,NL
 2188724465,2188724991,EU
 2188724992,2188725247,RS
@@ -43266,7 +45209,9 @@
 2193205248,2193207295,FR
 2193207296,2193209343,CZ
 2193209344,2193211391,FR
-2193211392,2193227775,BG
+2193211392,2193223423,BG
+2193223424,2193223679,GB
+2193223680,2193227775,BG
 2193227776,2193293311,IT
 2193293312,2193358847,US
 2193358848,2193424383,FI
@@ -43283,17 +45228,19 @@
 2193707408,2193707415,IT
 2193707416,2193707559,GB
 2193707560,2193707567,IT
-2193707568,2193707631,GB
-2193707632,2193707639,IT
-2193707640,2193707655,GB
+2193707568,2193707655,GB
 2193707656,2193707663,IT
 2193707664,2193707751,GB
 2193707752,2193707759,IT
 2193707760,2193708735,GB
 2193708736,2193708743,IT
-2193708744,2193709087,GB
+2193708744,2193708967,GB
+2193708968,2193708975,IT
+2193708976,2193709087,GB
 2193709088,2193709095,IT
-2193709096,2193709631,GB
+2193709096,2193709199,GB
+2193709200,2193709215,IT
+2193709216,2193709631,GB
 2193709632,2193709639,IT
 2193709640,2193711103,GB
 2193711104,2193713151,DE
@@ -43339,7 +45286,9 @@
 2197751808,2197753855,RU
 2197753856,2197754879,GB
 2197754880,2197755135,DK
-2197755136,2197757951,GB
+2197755136,2197756159,GB
+2197756160,2197756175,PT
+2197756176,2197757951,GB
 2197757952,2197766143,RU
 2197766144,2197768191,PS
 2197768192,2197770239,DE
@@ -43487,7 +45436,7 @@
 2206400512,2206466047,US
 2206466048,2207121407,CA
 2207121408,2207449087,US
-2207449088,2207514623,HK
+2207449088,2207514623,JP
 2207514624,2207647487,CA
 2207647488,2207647743,US
 2207647744,2207648511,CA
@@ -43569,7 +45518,7 @@
 2211446784,2211643391,US
 2211643392,2211708927,NL
 2211708928,2211774463,US
-2211774464,2211839999,HK
+2211774464,2211839999,JP
 2211840000,2212036607,US
 2212036608,2212102143,AU
 2212102144,2212233215,US
@@ -43746,7 +45695,9 @@
 2231362560,2231364607,BR
 2231364608,2231365631,CL
 2231365632,2231369727,BR
-2231369728,2248146943,JP
+2231369728,2239889407,JP
+2239889408,2239890431,US
+2239890432,2248146943,JP
 2248146944,2248148991,IT
 2248148992,2248151039,ES
 2248151040,2248153087,GB
@@ -44047,7 +45998,11 @@
 2258614816,2258615039,AU
 2258615040,2258615055,IN
 2258615056,2258616319,AU
-2258616320,2258632703,HK
+2258616320,2258621951,HK
+2258621952,2258622207,NZ
+2258622208,2258622719,HK
+2258622720,2258623231,NZ
+2258623232,2258632703,HK
 2258632704,2258698239,JP
 2258698240,2259222527,US
 2259222528,2259288063,DE
@@ -44106,7 +46061,7 @@
 2263613440,2263678975,TH
 2263678976,2263744511,JP
 2263744512,2263810047,US
-2263810048,2263875583,GB
+2263810048,2263875583,RO
 2263875584,2264203263,US
 2264203264,2264268799,DE
 2264268800,2264334335,FR
@@ -44504,8 +46459,7 @@
 2321447936,2321452031,BR
 2321452032,2321453055,MX
 2321453056,2321454079,HN
-2321454080,2321456127,BR
-2321457152,2321471487,BR
+2321454080,2321471487,BR
 2321471488,2321472511,HN
 2321472512,2321477631,BR
 2321477632,2321478655,TT
@@ -44520,11 +46474,14 @@
 2321633280,2321634303,CO
 2321634304,2321648639,BR
 2321648640,2321649663,SV
-2321649664,2321653759,BR
+2321649664,2321652735,BR
+2321652736,2321653759,BZ
 2321653760,2321654783,NI
 2321654784,2321655807,BR
 2321655808,2321656831,MX
-2321656832,2321663999,BR
+2321656832,2321657855,BR
+2321657856,2321658879,AR
+2321658880,2321663999,BR
 2321664000,2321665023,AR
 2321665024,2321673215,BR
 2321673216,2321674239,AR
@@ -44540,24 +46497,36 @@
 2321755136,2321756159,UY
 2321756160,2321769471,BR
 2321769472,2321770495,PY
-2321770496,2321774591,BR
-2321774592,2321775615,BZ
+2321770496,2321774719,BR
+2321774720,2321774847,PE
+2321774848,2321774975,AR
+2321774976,2321775103,VE
+2321775104,2321775231,PE
+2321775232,2321775359,BR
+2321775360,2321775487,EC
+2321775488,2321775615,AR
 2321775616,2321776639,VE
 2321776640,2321777663,AR
 2321777664,2321778687,BR
 2321778688,2321779711,PA
+2321779712,2321780735,BR
+2321780736,2321780991,PA
+2321780992,2321781247,BR
+2321781248,2321781503,PA
+2321781504,2321781759,BR
+2321781760,2321782783,MX
 2321782784,2321787903,BR
 2321787904,2321788927,AR
 2321788928,2321789951,CL
 2321789952,2321790975,SV
 2321790976,2321791999,AR
-2321793024,2321797119,BR
+2321792000,2321797119,BR
 2321797120,2321798143,BZ
 2321798144,2321799167,CW
 2321799168,2321800191,BZ
 2321800192,2321801215,VE
 2321801216,2321802239,CL
-2321802240,2321803263,BR
+2321802240,2321804287,BR
 2321804288,2321805311,DO
 2321805312,2321809407,BR
 2321809408,2321874943,ES
@@ -44574,15 +46543,19 @@
 2322368512,2322368767,MY
 2322368768,2322923519,US
 2322923520,2322924543,BR
+2322924544,2322925567,NI
 2322925568,2322929663,AR
-2322930688,2322931711,BR
-2322932736,2322933759,BR
+2322929664,2322933759,BR
+2322933760,2322934783,CO
 2322934784,2322935807,VE
 2322935808,2322936831,AR
-2322936832,2322939903,BR
+2322936832,2322940927,BR
 2322940928,2322941951,CL
 2322941952,2322942975,BR
-2322947072,2322948095,BR
+2322942976,2322943999,AR
+2322944000,2322945023,BR
+2322945024,2322946047,CO
+2322946048,2322948095,BR
 2322948096,2322949119,HN
 2322949120,2322951167,BR
 2322951168,2322952191,CO
@@ -44592,11 +46565,98 @@
 2322957312,2322958335,BR
 2322958336,2322959359,CO
 2322959360,2322960383,GT
+2322960384,2322961407,BR
 2322961408,2322962431,CL
+2322962432,2322963455,BR
+2322963456,2322964479,AR
+2322964480,2322965503,PE
+2322965504,2322974719,BR
+2322974720,2322975743,AR
+2322975744,2322980863,BR
+2322989056,2322991103,BR
+2322991104,2322992127,CL
+2322992128,2322998271,BR
+2322998272,2322999295,AR
+2322999296,2323001343,BR
+2323001344,2323002367,AR
+2323002368,2323009535,BR
+2323009536,2323010559,CR
+2323010560,2323015679,BR
+2323015680,2323016703,GT
+2323016704,2323017727,BR
+2323017728,2323018751,AR
+2323018752,2323020799,BR
+2323020800,2323021823,PA
+2323021824,2323025919,BR
+2323025920,2323026943,AR
+2323026944,2323028991,BR
+2323028992,2323030015,CR
+2323030016,2323042303,BR
+2323042304,2323045375,AR
+2323045376,2323054591,BR
 2323054592,2323120127,CA
+2323120128,2323185663,US
+2323185664,2323186687,BR
+2323186688,2323187711,CO
+2323187712,2323188735,BR
+2323188736,2323189759,CO
+2323189760,2323205119,BR
+2323205120,2323208191,AR
+2323209216,2323210239,BR
+2323210240,2323211263,CL
+2323211264,2323213311,AR
+2323213312,2323214335,CL
+2323214336,2323215359,AR
+2323215360,2323217407,BR
+2323217408,2323218431,AR
+2323218432,2323221503,BR
+2323221504,2323222527,CR
+2323222528,2323225599,BR
+2323225600,2323226623,CO
+2323226624,2323227647,AR
+2323227648,2323228671,BR
+2323228672,2323229695,CL
+2323229696,2323230719,BR
+2323230720,2323231743,CL
+2323231744,2323236863,BR
+2323236864,2323237887,CO
+2323237888,2323244031,BR
+2323244032,2323245055,AR
+2323245056,2323247103,BR
+2323247104,2323248127,AR
+2323248128,2323252223,BR
+2323252224,2323253247,VE
+2323253248,2323257343,BR
+2323257344,2323258367,CR
+2323258368,2323275775,BR
+2323275776,2323276799,MX
+2323276800,2323278847,BR
+2323278848,2323279871,EC
+2323279872,2323283967,BR
+2323283968,2323284991,AR
+2323284992,2323288063,BR
+2323288064,2323289087,MX
+2323289088,2323291135,BR
+2323291136,2323292159,AR
+2323292160,2323293183,PY
+2323293184,2323298303,BR
+2323298304,2323299327,PY
+2323299328,2323300351,AR
+2323300352,2323301375,HN
+2323301376,2323302399,BR
+2323302400,2323303423,CO
+2323303424,2323308543,BR
+2323308544,2323309567,CL
+2323309568,2323310591,AR
+2323310592,2323313663,BR
+2323313664,2323314687,CR
+2323314688,2323315711,BR
+2323315712,2323316735,MX
 2323316736,2323382271,US
 2323382272,2323447807,NO
-2323447808,2323699711,US
+2323447808,2323690495,US
+2323690496,2323690751,IN
+2323690752,2323699711,US
 2323699712,2323700735,NL
 2323700736,2323701759,US
 2323701760,2323709951,VG
@@ -44607,6 +46667,68 @@
 2323972096,2324037631,US
 2324037632,2324103167,IL
 2324103168,2327379967,US
+2327379968,2327380991,MX
+2327380992,2327383039,BR
+2327383040,2327384063,CL
+2327384064,2327387135,BR
+2327387136,2327388159,NI
+2327388160,2327396351,BR
+2327396352,2327398399,VE
+2327398400,2327399423,BR
+2327399424,2327400447,BZ
+2327400448,2327401471,AR
+2327401472,2327406591,BR
+2327406592,2327407615,NI
+2327407616,2327408639,BR
+2327408640,2327409663,AR
+2327409664,2327410687,PE
+2327410688,2327414783,BR
+2327414784,2327415807,EC
+2327415808,2327416831,AR
+2327416832,2327432191,BR
+2327432192,2327433215,AR
+2327433216,2327434239,BQ
+2327434240,2327437311,BR
+2327437312,2327438335,MX
+2327438336,2327443455,BR
+2327443456,2327444479,CR
+2327444480,2327446527,BR
+2327446528,2327447551,VE
+2327447552,2327448575,CL
+2327448576,2327449599,PA
+2327449600,2327450623,BR
+2327450624,2327451647,CO
+2327451648,2327452671,BR
+2327452672,2327453695,MX
+2327453696,2327460863,BR
+2327460864,2327461887,PY
+2327461888,2327462911,MX
+2327462912,2327468031,BR
+2327468032,2327469055,PA
+2327469056,2327471103,BR
+2327471104,2327472127,MX
+2327472128,2327476223,BR
+2327476224,2327477247,CL
+2327477248,2327480319,BR
+2327480320,2327481343,HN
+2327481344,2327482367,AR
+2327482368,2327483391,BR
+2327483392,2327485439,AR
+2327485440,2327486463,BR
+2327486464,2327487487,AR
+2327487488,2327490559,BR
+2327490560,2327491583,VE
+2327491584,2327493631,BR
+2327493632,2327494655,CO
+2327494656,2327496703,BR
+2327496704,2327497727,MX
+2327497728,2327498751,BR
+2327498752,2327499775,HN
+2327499776,2327501823,AR
+2327501824,2327507967,BR
+2327507968,2327508991,AR
+2327508992,2327510015,SV
+2327510016,2327511039,AR
 2327511040,2327838719,CH
 2327838720,2327969791,US
 2327969792,2328035327,AU
@@ -44619,6 +46741,27 @@
 2328363008,2328494079,DE
 2328494080,2328559615,US
 2328559616,2328625151,BE
+2328625152,2328627199,AR
+2328627200,2328628223,BR
+2328628224,2328629247,BZ
+2328629248,2328635391,BR
+2328635392,2328636415,AR
+2328636416,2328652799,BR
+2328652800,2328653823,PA
+2328653824,2328664063,BR
+2328664064,2328667135,AR
+2328667136,2328668159,BR
+2328668160,2328669183,MX
+2328669184,2328671231,BR
+2328671232,2328672255,HN
+2328672256,2328677375,BR
+2328677376,2328678399,MX
+2328678400,2328680447,BR
+2328680448,2328681471,AR
+2328681472,2328683519,BR
+2328684544,2328685567,BR
+2328685568,2328686591,VE
+2328686592,2328687615,BR
 2328690688,2328756223,BE
 2328756224,2328797439,CH
 2328797440,2328797695,AU
@@ -44631,6 +46774,32 @@
 2329411584,2329477119,FI
 2329477120,2329542655,AU
 2329542656,2329608191,CA
+2329609216,2329610239,AR
+2329610240,2329611263,PY
+2329612288,2329613311,AR
+2329613312,2329614335,BR
+2329615360,2329617407,BR
+2329617408,2329618431,MX
+2329618432,2329619455,AR
+2329619456,2329622527,BR
+2329623552,2329624575,AR
+2329624576,2329626623,BR
+2329626624,2329627647,HN
+2329627648,2329628671,BR
+2329628672,2329629695,AR
+2329629696,2329638911,BR
+2329638912,2329639935,HN
+2329639936,2329644031,BR
+2329644032,2329645055,CW
+2329645056,2329649151,BR
+2329649152,2329650175,AR
+2329650176,2329651199,BR
+2329653248,2329662463,BR
+2329662464,2329664511,AR
+2329664512,2329666559,BR
+2329666560,2329667583,CL
+2329668608,2329671679,BR
+2329671680,2329672703,AR
 2329673728,2329739263,US
 2329739264,2329804799,CH
 2329804800,2329870335,DE
@@ -44663,6 +46832,15 @@
 2331639808,2331770879,GB
 2331836416,2331901951,GB
 2331901952,2331967487,US
+2331967488,2331980799,BR
+2331980800,2331981823,PA
+2331981824,2331982847,BR
+2331982848,2331983871,MX
+2331983872,2331992063,BR
+2331993088,2331994111,CL
+2331994112,2332006399,BR
+2332006400,2332007423,SV
+2332016640,2332020735,BR
 2332033024,2332098559,ID
 2332098560,2332622847,DE
 2332622848,2332688383,CN
@@ -44685,7 +46863,9 @@
 2335965184,2336161791,US
 2336161792,2336227327,NL
 2336292864,2336358399,US
-2336358400,2336423935,FI
+2336358400,2336411647,FI
+2336411648,2336412671,SG
+2336412672,2336423935,FI
 2336423936,2336882687,US
 2336882688,2336948223,FI
 2336948224,2337013759,DE
@@ -44767,7 +46947,11 @@
 2342518784,2342584319,FR
 2342584320,2342649856,US
 2342649857,2342658047,SG
-2342658048,2342715391,US
+2342658048,2342682623,US
+2342682624,2342690815,DE
+2342690816,2342700247,US
+2342700248,2342700248,GB
+2342700249,2342715391,US
 2342715392,2342780927,AU
 2342780928,2342846463,NO
 2342846464,2342911999,BE
@@ -44907,8 +47091,8 @@
 2365587456,2365589503,JO
 2365589504,2365590527,US
 2365590528,2365591039,NO
-2365591040,2365591455,EU
-2365591456,2365591551,NO
+2365591040,2365591295,EU
+2365591296,2365591551,NO
 2365591552,2365593599,DE
 2365593600,2365595647,NL
 2365595648,2365603839,GB
@@ -45195,13 +47379,13 @@
 2382692352,2383085567,CA
 2383085568,2383151103,US
 2383151104,2385903615,CA
-2385903616,2385908223,US
+2385903616,2385908735,US
 2385908736,2385909759,VG
 2385909760,2385915903,US
 2385915904,2385919999,CA
 2385920000,2385952767,US
 2385952768,2385954815,BM
-2385954816,2385955327,US
+2385954816,2385955839,US
 2385955840,2385956863,TC
 2385956864,2385969151,US
 2385969152,2386624511,CA
@@ -45239,23 +47423,31 @@
 2391015424,2391277567,CA
 2391277568,2391343103,US
 2391343104,2391998463,CA
-2391998464,2392001535,US
-2392002304,2392012799,CA
-2392012800,2392013823,US
+2391998464,2392002303,US
+2392002304,2392010751,CA
+2392010752,2392011263,US
+2392011264,2392011519,CA
+2392011776,2392012543,CA
+2392012544,2392014079,US
 2392014080,2392014335,CA
-2392015360,2392015615,CA
-2392015872,2392016895,US
-2392016896,2392019199,CA
-2392019968,2392020991,US
-2392020992,2392021247,HK
-2392021248,2392021503,JP
-2392021504,2392021759,US
+2392015360,2392015871,CA
+2392015872,2392017407,US
+2392017408,2392017663,CA
+2392017920,2392018431,US
+2392018432,2392018687,CA
+2392018688,2392018943,US
+2392018944,2392019199,CA
+2392019200,2392019455,US
+2392019456,2392019967,CA
+2392019968,2392021759,US
 2392021760,2392022015,NL
 2392022016,2392022271,FR
 2392022272,2392022527,DE
 2392022528,2392022783,GB
 2392022784,2392023039,US
-2392023040,2392025087,CA
+2392023040,2392024319,CA
+2392024320,2392024575,US
+2392024576,2392025087,VI
 2392025088,2392063999,US
 2392064000,2392096767,CA
 2392096768,2392129535,US
@@ -45350,7 +47542,9 @@
 2413428736,2413494271,AU
 2413494272,2413625343,US
 2413625344,2413690879,JP
-2413690880,2413821951,US
+2413690880,2413758463,US
+2413758464,2413758975,GB
+2413758976,2413821951,US
 2413821952,2413887487,AT
 2413887488,2413953023,IT
 2413953024,2414411775,US
@@ -45391,41 +47585,127 @@
 2417688576,2417754111,SE
 2417754112,2418016255,US
 2418016256,2418081791,GB
-2418081792,2418296319,US
+2418081792,2418278655,US
+2418278656,2418278911,ZA
+2418278912,2418279487,US
+2418279488,2418279491,ES
+2418279492,2418281151,US
+2418281152,2418281215,IN
+2418281216,2418281983,US
+2418281984,2418282239,ES
+2418282240,2418284543,US
+2418284544,2418285055,CA
+2418285056,2418285567,MX
+2418285568,2418286335,US
+2418286336,2418286591,MX
+2418286592,2418287103,CA
+2418287104,2418287295,US
+2418287296,2418287359,GB
+2418287360,2418291199,US
+2418291200,2418292223,AR
+2418292224,2418292735,PH
+2418292736,2418294015,US
+2418294016,2418294783,AR
+2418294784,2418294911,US
+2418294912,2418295039,GB
+2418295040,2418295807,US
+2418295808,2418295935,GB
+2418295936,2418295947,US
+2418295948,2418295951,GB
+2418295952,2418296063,US
+2418296064,2418296319,DE
 2418296320,2418297343,IN
-2418297344,2418305023,US
-2418305024,2418305279,IN
-2418305280,2418311167,US
+2418297344,2418297855,US
+2418297856,2418298367,BR
+2418298368,2418298623,ZA
+2418298624,2418301439,US
+2418301440,2418301695,PH
+2418301696,2418302463,US
+2418302464,2418302719,PH
+2418302720,2418302975,US
+2418302976,2418303231,IN
+2418303232,2418303487,ZA
+2418303488,2418303871,US
+2418303872,2418303879,GB
+2418303880,2418304511,US
+2418304512,2418304671,GB
+2418304672,2418304767,US
+2418304768,2418304895,DE
+2418304896,2418305151,US
+2418305152,2418305279,IN
+2418305280,2418305535,ES
+2418305536,2418306303,US
+2418306304,2418306559,GB
+2418306560,2418307327,MU
+2418307328,2418307455,US
+2418307456,2418307583,PH
+2418307584,2418308095,LV
+2418308096,2418308351,PH
+2418308352,2418308383,GB
+2418308384,2418308607,US
+2418308608,2418309119,RO
+2418309120,2418309631,PL
+2418309632,2418310143,US
+2418310144,2418310655,PH
+2418310656,2418311167,US
 2418311168,2418311679,IN
-2418311680,2418312703,US
+2418311680,2418312703,CZ
 2418312704,2418313215,IN
-2418313216,2418314239,US
+2418313216,2418314239,PH
 2418314240,2418314751,IN
-2418314752,2418315263,US
+2418314752,2418315007,PH
+2418315008,2418315135,IN
+2418315136,2418315263,US
 2418315264,2418315775,IN
-2418315776,2418316287,US
+2418315776,2418316287,CN
 2418316288,2418316799,IN
-2418316800,2418323455,US
+2418316800,2418317055,AU
+2418317056,2418317311,JP
+2418317312,2418317823,PH
+2418317824,2418318079,US
+2418318080,2418318335,IN
+2418318336,2418319871,PH
+2418319872,2418320127,KR
+2418320128,2418320191,US
+2418320192,2418320255,AU
+2418320256,2418320319,IN
+2418320320,2418320383,PH
+2418320384,2418321407,US
+2418321408,2418322431,PH
+2418322432,2418322687,US
+2418322688,2418322847,IN
+2418322848,2418323455,US
 2418323456,2418323711,IN
 2418323712,2418323967,US
-2418323968,2418324223,IN
-2418324224,2418324991,US
+2418323968,2418324479,IN
+2418324480,2418324735,PH
+2418324736,2418324799,IN
+2418324800,2418324991,US
 2418324992,2418326015,IN
-2418326016,2418326527,US
+2418326016,2418326527,PH
 2418326528,2418327039,IN
-2418327040,2418331135,US
+2418327040,2418327423,US
+2418327424,2418327487,PH
+2418327488,2418328063,US
+2418328064,2418328831,SK
+2418328832,2418329599,US
+2418329600,2418330367,SK
+2418330368,2418331135,US
 2418331136,2418331647,IN
 2418331648,2418332159,US
 2418332160,2418332671,IN
-2418332672,2418333183,US
+2418332672,2418333183,PH
 2418333184,2418334207,IN
-2418334208,2418334719,US
+2418334208,2418334463,CN
+2418334464,2418334719,PH
 2418334720,2418339071,IN
-2418339072,2418340863,US
+2418339072,2418339839,MU
+2418339840,2418340351,CN
+2418340352,2418340863,US
 2418340864,2418341375,IN
-2418341376,2418341887,US
+2418341376,2418341887,PH
 2418341888,2418342911,IN
-2418342912,2418343423,US
+2418342912,2418343423,PH
 2418343424,2418343935,IN
 2418343936,2418606079,US
 2418606080,2418671615,DE
@@ -45588,8 +47868,7 @@
 2449420288,2449422335,DE
 2449422336,2449424383,DK
 2449424384,2449440767,OM
-2449440768,2449441279,NL
-2449441280,2449442815,RO
+2449440768,2449442815,NL
 2449442816,2449444863,RU
 2449444864,2449448959,SK
 2449448960,2449457151,KZ
@@ -45708,13 +47987,16 @@
 2455265280,2455273471,US
 2455273472,2455275519,AU
 2455275520,2455279615,US
-2455279616,2455281663,MO
+2455279616,2455280127,MO
+2455280128,2455280383,MY
+2455280384,2455281663,MO
 2455281664,2455285759,IN
 2455285760,2455371775,US
 2455371776,2455437311,GB
 2455437312,2455830527,US
 2455830528,2455896063,GB
-2455896064,2456027135,US
+2455896064,2455961599,US
+2455961600,2456027135,JP
 2456027136,2456092671,IT
 2456092672,2456158207,GB
 2456158208,2456223743,CZ
@@ -45780,7 +48062,7 @@
 2459828224,2459860991,RU
 2459860992,2459893759,ES
 2459893760,2459959295,CH
-2459959296,2460024831,US
+2459959296,2460024831,JP
 2460024832,2460090367,FI
 2460090368,2460155903,GB
 2460155904,2460221439,US
@@ -46090,7 +48372,9 @@
 2486960128,2487025663,FR
 2487025664,2487369727,US
 2487369728,2487386111,PF
-2487386112,2488205311,US
+2487386112,2487418879,US
+2487418880,2487549951,JP
+2487549952,2488205311,US
 2488205312,2488270847,GB
 2488270848,2488336383,US
 2488336384,2488401919,PL
@@ -46132,10 +48416,9 @@
 2492989440,2493513727,US
 2493513728,2493579263,SE
 2493579264,2493644799,JP
-2493644800,2493755391,US
-2493755904,2493756415,US
+2493644800,2493756415,US
 2493756416,2493757439,CA
-2493759488,2494103551,US
+2493757440,2494103551,US
 2494103552,2494169087,FR
 2494169088,2494562303,US
 2494562304,2494627839,GB
@@ -46204,7 +48487,9 @@
 2500149504,2500149759,GB
 2500149760,2500150655,US
 2500150656,2500150719,GB
-2500150720,2500161023,US
+2500150720,2500155647,US
+2500155648,2500155903,GB
+2500155904,2500161023,US
 2500161024,2500162047,GB
 2500162048,2500162559,US
 2500162560,2500162815,GB
@@ -46214,7 +48499,9 @@
 2500170752,2500170752,FI
 2500170753,2500177935,US
 2500177936,2500177943,PL
-2500177944,2500188679,US
+2500177944,2500180735,US
+2500180736,2500180991,HR
+2500180992,2500188679,US
 2500188680,2500188687,CH
 2500188688,2500196351,US
 2500196352,2500198399,FI
@@ -46339,12 +48626,16 @@
 2500728320,2500743215,US
 2500743216,2500743223,GB
 2500743224,2500984831,US
-2500984832,2501001215,GB
-2501001216,2501574655,US
+2500984832,2501017599,GB
+2501017600,2501574655,US
 2501574656,2501640191,KZ
-2501640192,2503016447,US
-2503016448,2503081983,IL
-2503081984,2503671807,US
+2501640192,2502033407,US
+2502033408,2502037503,LU
+2502037504,2502041599,US
+2502041600,2502043647,ES
+2502043648,2503016447,US
+2503016448,2503147519,IL
+2503147520,2503671807,US
 2503671808,2503737343,NL
 2503737344,2503868415,US
 2503868416,2503876607,RU
@@ -46367,7 +48658,9 @@
 2504482816,2504486911,ES
 2504486912,2504491007,US
 2504491008,2504499199,IT
-2504499200,2504949759,US
+2504499200,2504918642,US
+2504918643,2504918643,IL
+2504918644,2504949759,US
 2504949760,2504982527,IL
 2504982528,2505457663,US
 2505457664,2505459711,IE
@@ -46389,15 +48682,15 @@
 2505790464,2505791487,US
 2505791488,2505792511,FR
 2505792512,2505793535,US
-2505793536,2505801727,ES
-2505801728,2506293247,US
+2505793536,2505803775,ES
+2505803776,2506293247,US
 2506293248,2506358783,CA
 2506358784,2506359039,ES
 2506359040,2506360831,US
 2506360832,2506361087,ES
 2506361088,2506401791,US
-2506401792,2506402815,IT
-2506402816,2506489855,US
+2506401792,2506403839,IT
+2506403840,2506489855,US
 2506489856,2506498047,ES
 2506498048,2506499071,FR
 2506499072,2506506239,ES
@@ -46486,7 +48779,47 @@
 2512912384,2512945151,HU
 2512945152,2512977919,JO
 2512977920,2513043455,DE
-2513043456,2513108991,FR
+2513043456,2513044691,FR
+2513044692,2513044695,IT
+2513044696,2513044703,FR
+2513044704,2513044735,DE
+2513044736,2513044751,FR
+2513044752,2513044767,BE
+2513044768,2513044799,ES
+2513044800,2513044815,FR
+2513044816,2513044831,IT
+2513044832,2513045247,FR
+2513045248,2513045255,CZ
+2513045256,2513046591,FR
+2513046592,2513046623,ES
+2513046624,2513048047,FR
+2513048048,2513048063,ES
+2513048064,2513049375,FR
+2513049376,2513049407,DE
+2513049408,2513049551,FR
+2513049552,2513049567,ES
+2513049568,2513051487,FR
+2513051488,2513051519,GB
+2513051520,2513068207,FR
+2513068208,2513068223,DE
+2513068224,2513068287,NL
+2513068288,2513070559,FR
+2513070560,2513070591,ES
+2513070592,2513070623,FR
+2513070624,2513070655,ES
+2513070656,2513076471,FR
+2513076472,2513076479,ES
+2513076480,2513078367,FR
+2513078368,2513078371,GB
+2513078372,2513079250,FR
+2513079251,2513079254,ES
+2513079255,2513081327,FR
+2513081328,2513081343,ES
+2513081344,2513082561,FR
+2513082562,2513082562,GB
+2513082563,2513102899,FR
+2513102900,2513102903,CZ
+2513102904,2513108991,FR
 2513108992,2513502207,DE
 2513502208,2513567743,NO
 2513567744,2513600511,GR
@@ -46599,7 +48932,8 @@
 2524971008,2525036543,ES
 2525036544,2525037567,IN
 2525037568,2525038591,PK
-2525038592,2525039615,HK
+2525038592,2525039359,CN
+2525039360,2525039615,HK
 2525039616,2525040639,AU
 2525040640,2525041151,BD
 2525041152,2525041407,ID
@@ -46620,7 +48954,7 @@
 2525060096,2525061119,AU
 2525061120,2525062143,TW
 2525062144,2525071359,IN
-2525071360,2525072383,HK
+2525071360,2525072383,CN
 2525072384,2525073407,MN
 2525073408,2525075455,IN
 2525075456,2525076479,CN
@@ -46730,23 +49064,33 @@
 2533097472,2533228543,US
 2533228544,2533294079,PL
 2533294080,2533359615,CN
-2533359616,2533369855,UA
-2533369856,2533371903,BG
-2533371904,2533375999,UA
+2533359616,2533367807,UA
+2533367808,2533369855,BG
+2533369856,2533375999,UA
 2533376000,2533392383,HU
 2533392384,2538602495,IT
 2538602496,2538604967,FR
 2538604968,2538604975,ES
-2538604976,2538606027,FR
+2538604976,2538605271,FR
+2538605272,2538605279,ES
+2538605280,2538606027,FR
 2538606028,2538606031,DE
 2538606032,2538606039,ES
 2538606040,2538606043,FR
 2538606044,2538606047,DE
-2538606048,2538619359,FR
+2538606048,2538606403,FR
+2538606404,2538606407,GB
+2538606408,2538619359,FR
 2538619360,2538619375,ES
-2538619376,2538619903,FR
+2538619376,2538619431,FR
+2538619432,2538619435,DE
+2538619436,2538619903,FR
 2538619904,2538619911,ES
-2538619912,2538634227,FR
+2538619912,2538625527,FR
+2538625528,2538625535,DE
+2538625536,2538626687,FR
+2538626688,2538626703,ES
+2538626704,2538634227,FR
 2538634228,2538634231,DE
 2538634232,2538644015,FR
 2538644016,2538644039,ES
@@ -46762,7 +49106,9 @@
 2538646272,2538646399,BE
 2538646400,2538646783,FR
 2538646784,2538647039,CZ
-2538647040,2538648591,FR
+2538647040,2538648239,FR
+2538648240,2538648255,DE
+2538648256,2538648591,FR
 2538648592,2538648623,BE
 2538648624,2538649767,FR
 2538649768,2538649775,DE
@@ -46793,9 +49139,13 @@
 2538656516,2538656519,IT
 2538656520,2538656959,FR
 2538656960,2538656975,ES
-2538656976,2538658347,FR
+2538656976,2538657135,FR
+2538657136,2538657139,RO
+2538657140,2538658347,FR
 2538658348,2538658351,DE
-2538658352,2538664847,FR
+2538658352,2538658623,FR
+2538658624,2538658655,NL
+2538658656,2538664847,FR
 2538664848,2538664863,NL
 2538664864,2538664895,DE
 2538664896,2538668031,FR
@@ -46842,7 +49192,8 @@
 2546039040,2547187711,US
 2547187712,2547318783,GB
 2547318784,2547515391,US
-2547515392,2547548159,GB
+2547523584,2547535871,GB
+2547535872,2547548159,BG
 2547548160,2547580927,NO
 2548039680,2548563967,GB
 2548563968,2548826111,IR
@@ -46931,7 +49282,7 @@
 2549901312,2549903359,RU
 2549903360,2549905407,ES
 2549905408,2549907455,GB
-2549907456,2549923839,DE
+2549907456,2549923839,SE
 2549923840,2549927935,BG
 2549927936,2549929983,HR
 2549929984,2549932031,DE
@@ -47056,13 +49407,22 @@
 2570190848,2572681215,US
 2572681216,2572746751,SE
 2572746752,2572943359,US
-2572943360,2572955647,DE
+2572943360,2572951551,DE
+2572951552,2572953599,US
+2572953600,2572953855,BY
+2572953856,2572954111,HK
+2572954112,2572954367,DE
+2572954368,2572954623,HK
+2572954624,2572954879,AU
+2572954880,2572955135,HK
+2572955136,2572955647,DE
 2572955648,2572959743,BR
 2572959744,2572968447,DE
 2572968448,2572968959,CZ
 2572968960,2572975103,BR
-2572975104,2572976127,DE
-2572976128,2572989439,NL
+2572975104,2572975615,DE
+2572975616,2572975871,SE
+2572975872,2572989439,NL
 2572989440,2572989951,GR
 2572989952,2572991487,NL
 2572991488,2573000703,BR
@@ -47112,7 +49472,8 @@
 2584739904,2584740095,ZA
 2584740096,2584740351,US
 2584740352,2584740415,AU
-2584740416,2584740607,ZA
+2584740416,2584740479,DE
+2584740480,2584740607,ZA
 2584740608,2584740863,US
 2584740864,2584740927,AU
 2584740928,2584741119,ZA
@@ -47124,7 +49485,8 @@
 2584741952,2584742143,ZA
 2584742144,2584742399,US
 2584742400,2584742463,AU
-2584742464,2584742655,ZA
+2584742464,2584742527,DE
+2584742528,2584742655,ZA
 2584742656,2584742911,US
 2584742912,2584742975,KR
 2584742976,2584743167,ZA
@@ -47136,7 +49498,8 @@
 2584744000,2584744191,ZA
 2584744192,2584744447,US
 2584744448,2584744511,AU
-2584744512,2584744703,ZA
+2584744512,2584744575,ZA
+2584744576,2584744703,DE
 2584744704,2584744959,US
 2584744960,2584745023,AU
 2584745024,2584745215,ZA
@@ -47249,10 +49612,8 @@
 2584763968,2584764159,ZA
 2584764160,2584764415,US
 2584764416,2584764671,ZA
-2584764672,2584768511,US
-2584768512,2584770559,ZA
-2584770560,2584775423,US
-2584775424,2584775679,ZA
+2584764672,2584775423,US
+2584775424,2584775679,KE
 2584775680,2585001983,US
 2585001984,2585067519,CA
 2585067520,2585788415,US
@@ -47263,7 +49624,9 @@
 2586484736,2586486783,GB
 2586486784,2586510335,US
 2586510336,2586511359,ES
-2586511360,2586566655,US
+2586511360,2586544127,US
+2586544128,2586546175,SE
+2586546176,2586566655,US
 2586566656,2586566687,FR
 2586566688,2586610431,US
 2586610432,2586610687,GB
@@ -47282,7 +49645,11 @@
 2586650880,2586651135,NL
 2586651136,2586714879,US
 2586714880,2586715135,NL
-2586715136,2586733567,US
+2586715136,2586716159,US
+2586716160,2586716671,ES
+2586716672,2586717183,US
+2586717184,2586717439,ES
+2586717440,2586733567,US
 2586733568,2586733823,LT
 2586733824,2586734591,US
 2586734592,2586735615,LT
@@ -47294,8 +49661,10 @@
 2586804224,2586804479,ES
 2586804480,2586828799,US
 2586828800,2586829055,CH
-2586829056,2586870783,US
-2586870784,2586875903,ES
+2586829056,2586869759,US
+2586869760,2586870015,ES
+2586870016,2586870271,US
+2586870272,2586875903,ES
 2586875904,2586876415,US
 2586876416,2586876671,ES
 2586876672,2586876927,US
@@ -47313,7 +49682,9 @@
 2587018672,2587018687,IE
 2587018688,2587019263,US
 2587019264,2587019775,IE
-2587019776,2587021823,US
+2587019776,2587020287,US
+2587020288,2587020799,IE
+2587020800,2587021823,US
 2587021824,2587022335,IE
 2587022336,2587066879,US
 2587066880,2587067135,GB
@@ -47323,7 +49694,9 @@
 2587068416,2587068479,GB
 2587068480,2587071759,US
 2587071760,2587071775,GB
-2587071776,2587131903,US
+2587071776,2587128522,US
+2587128523,2587128523,TR
+2587128524,2587131903,US
 2587131904,2587132159,FR
 2587132160,2587197439,US
 2587197440,2587197695,ES
@@ -47331,7 +49704,9 @@
 2587240390,2587240390,FR
 2587240391,2587249417,US
 2587249418,2587249418,FR
-2587249419,2587394047,US
+2587249419,2587361791,US
+2587361792,2587362047,MD
+2587362048,2587394047,US
 2587394048,2587394303,ES
 2587394304,2587394815,US
 2587394816,2587395071,ES
@@ -47355,10 +49730,10 @@
 2587496448,2587508735,US
 2587508736,2587525119,GB
 2587525120,2587542527,US
-2587542528,2587544063,ES
-2587544064,2587545599,US
-2587545600,2587546623,ES
-2587546624,2587582463,US
+2587542528,2587544575,ES
+2587544576,2587545599,US
+2587545600,2587549695,ES
+2587549696,2587582463,US
 2587582464,2587586559,NL
 2587586560,2587592703,US
 2587592704,2587594751,GB
@@ -47394,6 +49769,7 @@
 2588042240,2588043263,SS
 2588043264,2588044287,AO
 2588044288,2588045311,LS
+2588045312,2588046335,ZA
 2588046336,2588047359,TD
 2588047360,2588049407,MW
 2588049408,2588053503,BJ
@@ -47418,7 +49794,8 @@
 2588303360,2588311551,CM
 2588311552,2588315647,ZA
 2588315648,2588317695,BW
-2588317696,2588318207,MU
+2588317696,2588317951,ZA
+2588317952,2588318207,MU
 2588318208,2588318719,ZA
 2588318720,2588319743,UG
 2588319744,2588327935,SC
@@ -47502,6 +49879,7 @@
 2590507008,2591031295,TN
 2591031296,2591096831,GA
 2591096832,2591162367,NG
+2591162368,2591293439,ZA
 2591293440,2591326207,GA
 2591326208,2591358975,AO
 2591358976,2591375359,GH
@@ -47545,12 +49923,10 @@
 2592026624,2592026879,US
 2592026880,2592027391,ZA
 2592027392,2592027647,GB
-2592027648,2592028159,US
-2592028160,2592028415,CA
-2592028416,2592028671,US
+2592027648,2592028671,US
 2592028672,2592028799,NG
 2592028800,2592028927,KE
-2592028928,2592029183,ZA
+2592028928,2592029183,US
 2592029184,2592029311,CI
 2592029312,2592030207,ZA
 2592030208,2592030335,GH
@@ -47608,6 +49984,7 @@
 2605187072,2605252607,US
 2605252608,2605318143,AT
 2605318144,2606301183,US
+2606301184,2606366719,AO
 2606366720,2606448649,US
 2606448650,2606448651,EU
 2606448652,2606467071,US
@@ -47682,7 +50059,9 @@
 2616885530,2616918015,DE
 2616983552,2617049087,US
 2617049088,2617114623,IT
-2617114624,2617123839,US
+2617114624,2617115135,US
+2617115136,2617115647,CA
+2617115648,2617123839,US
 2617123840,2617124095,DE
 2617124096,2617124863,US
 2617124864,2617126911,NL
@@ -47721,7 +50100,7 @@
 2617146880,2617147135,DE
 2617147136,2617147391,AO
 2617147392,2617149439,US
-2617151488,2617155583,CA
+2617149440,2617155583,CA
 2617155584,2617163775,US
 2617163776,2617164031,SK
 2617164032,2617164287,MC
@@ -47736,7 +50115,7 @@
 2617166336,2617166591,KH
 2617166592,2617166847,TJ
 2617166848,2617167103,KG
-2617167104,2617167359,IS
+2617167104,2617167359,IN
 2617167360,2617167615,DK
 2617167616,2617167871,IL
 2617167872,2617168127,PL
@@ -47781,7 +50160,7 @@
 2617177856,2617178111,BE
 2617178112,2617178367,IM
 2617178368,2617178623,BN
-2617178624,2617178879,AD
+2617178624,2617178879,US
 2617178880,2617179135,LT
 2617179136,2617179391,MD
 2617179392,2617179647,SI
@@ -47858,16 +50237,14 @@
 2625961984,2626027519,LU
 2626027520,2626093055,US
 2626093056,2626158591,CH
-2626158592,2626224127,US
-2626224128,2626289663,CZ
-2626289664,2626879487,US
+2626158592,2626879487,US
 2626879488,2626945023,KR
 2626945024,2627010559,IT
 2627010560,2627076095,NZ
 2627076096,2627141631,NL
 2627141632,2627469311,US
 2627469312,2627731455,TZ
-2627731456,2629828607,EG
+2627731456,2631925759,EG
 2634022912,2634088447,CN
 2634088448,2635202559,JP
 2635202560,2635268095,CN
@@ -47887,7 +50264,15 @@
 2637733152,2637733183,JP
 2637733184,2637733375,US
 2637733376,2637733407,SG
-2637733408,2638020607,US
+2637733408,2637997055,US
+2637997056,2637997311,AU
+2637997312,2637998591,US
+2637998592,2637998847,AU
+2637998848,2638000127,US
+2638000128,2638000255,AU
+2638000256,2638002175,US
+2638002176,2638002687,AU
+2638002688,2638020607,US
 2638020608,2638086143,CN
 2638086144,2638151679,US
 2638151680,2639331327,JP
@@ -47907,7 +50292,10 @@
 2640445440,2640510975,US
 2640510976,2640576511,FR
 2640576512,2640642047,EC
-2640642048,2641952767,JP
+2640642048,2641928191,JP
+2641928192,2641936383,SG
+2641936384,2641944575,US
+2641944576,2641952767,JP
 2641952768,2642018303,US
 2642018304,2642083839,CN
 2642083840,2642149375,US
@@ -48031,7 +50419,15 @@
 2655059968,2655125503,US
 2655125504,2655191039,PL
 2655191040,2655256575,EU
-2655256576,2655715327,US
+2655256576,2655323135,US
+2655323136,2655323647,CA
+2655323648,2655324671,US
+2655324672,2655324799,CA
+2655324800,2655325695,US
+2655325696,2655325823,CA
+2655325824,2655326207,US
+2655326208,2655326463,CA
+2655326464,2655715327,US
 2655715328,2655780863,PL
 2655780864,2656387071,US
 2656387072,2656403455,CA
@@ -48104,7 +50500,11 @@
 2662203392,2662662143,GB
 2662662144,2662670335,KG
 2662670336,2662674431,AZ
-2662674432,2662686719,DE
+2662674432,2662677087,DE
+2662677088,2662677279,US
+2662677280,2662677375,DE
+2662677376,2662678527,US
+2662678528,2662686719,DE
 2662686720,2662694911,CH
 2662694912,2662727679,KG
 2662727680,2662793215,HK
@@ -48121,7 +50521,11 @@
 2665086976,2665152511,GB
 2665152512,2665218047,US
 2665218048,2665283583,CH
-2665283584,2665414655,US
+2665283584,2665359359,US
+2665359360,2665359871,MF
+2665359872,2665375743,US
+2665375744,2665377791,CA
+2665377792,2665414655,US
 2665414656,2665480191,GB
 2665480192,2665545727,US
 2665545728,2665611263,DE
@@ -48265,7 +50669,9 @@
 2674130944,2674147327,GB
 2674147328,2674163711,NL
 2674163712,2674175999,GB
-2674176000,2674192383,US
+2674176000,2674177286,US
+2674177287,2674177287,GB
+2674177288,2674192383,US
 2674192384,2674196479,CH
 2674196480,2674249727,GB
 2674249728,2674251775,US
@@ -48284,11 +50690,17 @@
 2675245056,2675310591,NZ
 2675310592,2675574239,US
 2675574240,2675574271,IT
-2675574272,2675577999,US
-2675578000,2675578015,ES
-2675578016,2675589119,US
+2675574272,2675576703,US
+2675576704,2675576711,JO
+2675576712,2675578527,US
+2675578528,2675578535,CO
+2675578536,2675580063,US
+2675580064,2675580095,AE
+2675580096,2675589119,US
 2675589120,2675605503,DE
-2675605504,2675835135,US
+2675605504,2675606271,US
+2675606272,2675606527,IT
+2675606528,2675835135,US
 2675835136,2675835391,CA
 2675835392,2675965951,US
 2675965952,2676031487,CA
@@ -48399,7 +50811,9 @@
 2680487936,2680553471,GB
 2680553472,2680684543,US
 2680684544,2680750079,SE
-2680750080,2681012223,US
+2680750080,2680881151,US
+2680881152,2680897535,CA
+2680897536,2681012223,US
 2681012224,2681077759,PL
 2681077760,2681143295,CA
 2681143296,2681208831,AU
@@ -48547,7 +50961,9 @@
 2689594112,2689594879,GB
 2689594880,2689597439,US
 2689597440,2689662975,IT
-2689662976,2689802751,US
+2689662976,2689801904,US
+2689801905,2689801905,DE
+2689801906,2689802751,US
 2689802752,2689803263,TR
 2689803264,2689803519,GB
 2689803520,2689804799,US
@@ -48588,7 +51004,8 @@
 2697789440,2697854975,US
 2697854976,2697889791,AU
 2697889792,2697891839,US
-2697891840,2697892863,AU
+2697891840,2697892095,GB
+2697892096,2697892863,AU
 2697892864,2697894399,US
 2697894400,2697920511,AU
 2697920512,2698117119,US
@@ -48605,17 +51022,20 @@
 2698903552,2698969087,AU
 2698969088,2699034623,CA
 2699034624,2699165695,AO
+2699165696,2699198463,NG
 2699231232,2699296767,US
 2699296768,2699362303,FR
 2699362304,2699624447,US
 2699624448,2699689983,JP
-2699755520,2700935167,JP
+2699755520,2700214271,JP
+2700214272,2700247039,NA
+2700247040,2700263423,UG
+2700279808,2700935167,JP
 2700935168,2701066239,US
-2701066240,2701074431,ZA
-2701074432,2701099007,BG
-2701099008,2701123583,ZA
-2701123584,2701131775,BG
-2701131776,2701139967,HN
+2701066240,2701131775,BG
+2701131776,2701132543,HN
+2701132544,2701132559,CR
+2701132560,2701139967,HN
 2701139968,2701148159,NI
 2701148160,2701149183,AR
 2701149184,2701150207,HN
@@ -48650,7 +51070,9 @@
 2702508032,2702573567,US
 2702573568,2702581759,AR
 2702581760,2702585855,VE
-2702585856,2702587903,CW
+2702585856,2702586111,CW
+2702586112,2702586367,PA
+2702586368,2702587903,CW
 2702587904,2702589951,BR
 2702589952,2702606335,GF
 2702606336,2702639103,BO
@@ -48695,7 +51117,9 @@
 2705522688,2705588223,ES
 2705588224,2705596159,US
 2705596160,2705596415,CA
-2705596416,2705691647,US
+2705596416,2705688319,US
+2705688320,2705688575,DE
+2705688576,2705691647,US
 2705691648,2705692671,GB
 2705692672,2705710079,US
 2705710080,2705711103,IN
@@ -48767,7 +51191,9 @@
 2714370800,2714370815,PH
 2714370816,2714370895,US
 2714370896,2714370911,CN
-2714370912,2714386431,US
+2714370912,2714373127,US
+2714373128,2714373128,SG
+2714373129,2714386431,US
 2714386432,2714402815,JP
 2714402816,2714697727,US
 2714697728,2714763263,CN
@@ -48887,7 +51313,7 @@
 2731792384,2731795455,US
 2731795456,2731796479,DE
 2731796480,2731797503,CA
-2731797504,2731800575,US
+2731798528,2731800575,US
 2731800576,2731801599,CA
 2731801600,2731804671,US
 2731804672,2731805695,CA
@@ -48937,8 +51363,8 @@
 2732201984,2732203007,VG
 2732203008,2732204031,US
 2732204032,2732206079,CA
-2732206080,2732220159,US
-2732220160,2732220400,CA
+2732206080,2732220287,US
+2732220288,2732220400,CA
 2732220401,2732220401,US
 2732220402,2732220415,CA
 2732220416,2732227583,US
@@ -49014,7 +51440,9 @@
 2732549120,2732550143,CA
 2732550144,2732580863,US
 2732580864,2732582911,CA
-2732582912,2733903871,US
+2732582912,2733882879,US
+2733882880,2733883135,CA
+2733883136,2733903871,US
 2733903872,2733904895,PR
 2733904896,2733907967,CA
 2733907968,2733911039,US
@@ -49183,13 +51611,7 @@
 2734633984,2734635007,CA
 2734635008,2734649343,US
 2734649344,2734650367,CA
-2734650368,2734655927,US
-2734655928,2734655935,GB
-2734655936,2734656127,US
-2734656128,2734656255,GB
-2734656256,2734656383,US
-2734656384,2734656511,GB
-2734656512,2734657535,US
+2734650368,2734657535,US
 2734657536,2734658559,VG
 2734658560,2734659583,CA
 2734659584,2734665727,US
@@ -49217,11 +51639,12 @@
 2736848896,2736914431,US
 2736914432,2736979967,NO
 2736979968,2737438719,US
-2737438720,2737602559,JP
+2737438720,2737594367,JP
+2737594368,2737602559,US
 2737602560,2737610751,SG
 2737610752,2737767423,JP
 2737767424,2737768447,CN
-2737768448,2737769471,AU
+2737768448,2737769471,SG
 2737769472,2737770495,IN
 2737770496,2737771263,AU
 2737771264,2737771519,JP
@@ -49260,7 +51683,9 @@
 2737813504,2737815551,NZ
 2737815552,2737816575,MY
 2737816576,2737817599,AU
-2737817600,2737818623,MY
+2737817600,2737818111,MY
+2737818112,2737818367,AU
+2737818368,2737818623,MY
 2737818624,2737819647,NZ
 2737819648,2737821695,IN
 2737821696,2737822719,AU
@@ -49296,7 +51721,8 @@
 2738214912,2738215935,HK
 2738215936,2738216959,CN
 2738216960,2738217983,HK
-2738217984,2738220031,AU
+2738217984,2738219007,AU
+2738219008,2738220031,NZ
 2738220032,2738221055,PK
 2738221056,2738222079,CN
 2738222080,2738223103,MO
@@ -49365,7 +51791,9 @@
 2750349312,2750414847,KR
 2750414848,2750692863,US
 2750692864,2750693375,EU
-2750693376,2750873599,US
+2750693376,2750739967,US
+2750739968,2750740223,CN
+2750740224,2750873599,US
 2750873600,2750939135,CL
 2750939136,2751070207,US
 2751070208,2751135743,CL
@@ -49557,7 +51985,8 @@
 2773286912,2773745663,US
 2773745664,2773794815,NZ
 2773794816,2773798911,IN
-2773798912,2773807103,NZ
+2773798912,2773805055,NZ
+2773805056,2773807103,JP
 2773807104,2773811199,IN
 2773811200,2773876735,US
 2773876736,2773942271,AU
@@ -49593,7 +52022,9 @@
 2778333184,2778398719,CA
 2778398720,2779054079,US
 2779054080,2779119615,ZA
-2779119616,2779906047,US
+2779119616,2779316223,US
+2779316224,2779381759,RE
+2779381760,2779906047,US
 2779906048,2779971583,CA
 2779971584,2780037119,US
 2780037120,2780102655,ZA
@@ -49628,7 +52059,10 @@
 2780934912,2780935167,GB
 2780935168,2780954623,US
 2780954624,2781020159,KR
-2781020160,2781478911,US
+2781020160,2781206527,US
+2781206528,2781207551,GB
+2781207552,2781208575,DE
+2781208576,2781478911,US
 2781478912,2781544447,HK
 2781544448,2781629951,US
 2781629952,2781630207,EU
@@ -49654,7 +52088,11 @@
 2783003648,2783003903,SE
 2783003904,2783004159,US
 2783004160,2783004671,CH
-2783004672,2783010815,US
+2783004672,2783005439,DE
+2783005440,2783005695,US
+2783005696,2783006719,FR
+2783006720,2783007743,GB
+2783007744,2783010815,US
 2783010816,2783011327,HK
 2783011328,2783011583,AU
 2783011584,2783011839,US
@@ -49674,10 +52112,10 @@
 2783399936,2783404031,FR
 2783404032,2783408127,NL
 2783408128,2783412223,NO
-2783412224,2783416319,SC
+2783412224,2783416319,SE
 2783416320,2783420415,RU
 2783420416,2783424511,EE
-2783424512,2783428607,SC
+2783424512,2783428607,JP
 2783428608,2783436799,US
 2783436800,2783440895,IT
 2783440896,2783444991,IN
@@ -49691,6 +52129,7 @@
 2784362496,2784428031,KR
 2784428032,2784952063,US
 2784952064,2784952319,NL
+2784952320,2785017855,ZA
 2785017856,2785804287,US
 2785804288,2786066431,CH
 2786066432,2788163583,US
@@ -49802,13 +52241,18 @@
 2809282653,2809282653,US
 2809282654,2809286975,CA
 2809286976,2809286991,US
-2809286992,2809291823,CA
+2809286992,2809291732,CA
+2809291733,2809291733,US
+2809291734,2809291823,CA
 2809291824,2809291824,US
 2809291825,2809291891,CA
 2809291892,2809291892,US
 2809291893,2809308599,CA
 2809308600,2809308607,US
-2809308608,2809331711,CA
+2809308608,2809321007,CA
+2809321008,2809321015,US
+2809321016,2809323519,CA
+2809323520,2809331711,FR
 2809331712,2809397247,US
 2809397248,2809462783,UY
 2809462784,2809855999,US
@@ -49828,7 +52272,9 @@
 2811559936,2811625471,CH
 2811625472,2812084223,US
 2812084224,2812149759,BO
-2812149760,2812293119,US
+2812149760,2812291071,US
+2812291072,2812292095,DE
+2812292096,2812293119,US
 2812293120,2812295167,IN
 2812295168,2812297215,GB
 2812297216,2812411903,US
@@ -49856,7 +52302,9 @@
 2815229952,2815295487,ID
 2815295488,2815986943,US
 2815986944,2815987199,GB
-2815987200,2816159743,US
+2815987200,2815988863,US
+2815988864,2815988895,GB
+2815988896,2816159743,US
 2816159744,2816159999,IN
 2816160000,2816262143,US
 2816262144,2816263167,IE
@@ -49871,7 +52319,8 @@
 2816272384,2816273407,JP
 2816273408,2816274431,IN
 2816274432,2816275455,AU
-2816275456,2816278527,SG
+2816275456,2816276479,CN
+2816276480,2816278527,SG
 2816278528,2816671743,US
 2816671744,2816737279,CA
 2816737280,2817059071,US
@@ -50023,13 +52472,21 @@
 2834825216,2834956287,KR
 2834956288,2835087359,US
 2835087360,2835152895,AU
+2835152896,2835161087,LR
+2835161088,2835169279,ZW
+2835169280,2835177471,ZA
+2835177472,2835181567,DZ
+2835181568,2835183615,NG
+2835183616,2835185663,ZA
+2835185664,2835202047,RE
 2835202048,2835206143,ZA
 2835206144,2835208191,NG
 2835208192,2835210239,ZA
 2835210240,2835218431,MW
 2835218432,2835283967,US
 2835283968,2835349503,MX
-2835349504,2837446655,US
+2835349504,2835480575,ZA
+2835480576,2837446655,US
 2837446656,2837839871,CH
 2837839872,2837905407,US
 2837905408,2837970943,CH
@@ -50042,15 +52499,19 @@
 2838757376,2838822911,CH
 2838822912,2838865599,US
 2838865600,2838865615,KR
-2838865616,2838881055,US
+2838865616,2838871295,US
+2838871296,2838871311,CA
+2838871312,2838881055,US
 2838881056,2838881087,AT
-2838881088,2838904831,US
+2838881088,2838887871,US
+2838887872,2838887887,EC
+2838887888,2838904831,US
 2838904832,2838921215,CA
-2838921216,2838938991,US
+2838921216,2838930495,US
+2838930496,2838930511,HK
+2838930512,2838938991,US
 2838938992,2838939007,AU
-2838939008,2838939615,US
-2838939616,2838939647,IE
-2838939648,2838942527,US
+2838939008,2838942527,US
 2838942528,2838942559,AU
 2838942560,2838943263,US
 2838943264,2838943279,GB
@@ -50058,17 +52519,29 @@
 2838946432,2838946447,CA
 2838946448,2838946735,US
 2838946736,2838946751,CA
-2838946752,2839085055,US
+2838946752,2838958927,US
+2838958928,2838958943,AF
+2838958944,2838962111,US
+2838962112,2838962127,BR
+2838962128,2838962527,US
+2838962528,2838962543,GB
+2838962544,2838964047,US
+2838964048,2838964063,PE
+2838964064,2839085055,US
 2839085056,2839117823,MX
-2839117824,2839150591,US
+2839117824,2839150591,BR
 2839150592,2839543807,CH
 2839543808,2843803647,US
 2843803648,2843869183,ZA
 2843869184,2844524543,US
 2844524544,2844590079,KR
-2844590080,2844884991,US
+2844590080,2844783615,US
+2844783616,2844784639,EU
+2844784640,2844884991,US
 2844884992,2844885247,FR
-2844885248,2845704191,US
+2844885248,2844902655,US
+2844902656,2844902911,AP
+2844902912,2845704191,US
 2845704192,2845755391,CU
 2845755392,2845755647,EU
 2845755648,2845769727,CU
@@ -50084,7 +52557,24 @@
 2848587776,2848653311,ZA
 2848653312,2848980991,US
 2848980992,2850029567,KR
-2850029568,2851995647,US
+2850029568,2851012607,US
+2851012608,2851013631,TZ
+2851013632,2851015679,ZA
+2851015680,2851016703,CV
+2851016704,2851017727,NG
+2851017728,2851018751,SC
+2851018752,2851019775,ZW
+2851019776,2851020799,ZA
+2851020800,2851021823,AO
+2851021824,2851022847,EG
+2851022848,2851023871,CM
+2851023872,2851024895,ZA
+2851024896,2851025919,NG
+2851025920,2851026943,GH
+2851026944,2851027967,DZ
+2851027968,2851028991,ZA
+2851028992,2851030015,CI
+2851078144,2851995647,US
 2852061184,2852062207,ZA
 2852062208,2852063231,CM
 2852063232,2852064255,KE
@@ -50107,7 +52597,7 @@
 2852083712,2852084735,AO
 2852084736,2852085759,TN
 2852085760,2852086783,KE
-2852086784,2852087807,SD
+2852086784,2852087807,SS
 2852087808,2852088831,KE
 2852088832,2852089855,LY
 2852089856,2852090879,TZ
@@ -50128,6 +52618,16 @@
 2852107264,2852108287,NG
 2852108288,2852109311,TZ
 2852109312,2852110335,CD
+2852110336,2852112383,ZA
+2852112384,2852113407,KE
+2852113408,2852114431,CD
+2852114432,2852115455,NG
+2852115456,2852116479,KE
+2852116480,2852118527,ZA
+2852118528,2852119551,NG
+2852119552,2852121599,ZA
+2852121600,2852122623,NG
+2852122624,2852126719,ZA
 2852126720,2853306367,US
 2853306368,2853371903,CL
 2853371904,2853765119,US
@@ -50195,51 +52695,161 @@
 2867593216,2867724287,CH
 2867855360,2868117503,US
 2868379648,2868380159,IN
-2868380160,2868382719,US
+2868380160,2868380671,BR
+2868380672,2868380927,US
+2868380928,2868381055,MX
+2868381056,2868381183,IN
+2868381184,2868381695,MX
+2868381696,2868382463,US
+2868382464,2868382719,CL
 2868382720,2868383231,IN
-2868383232,2868390399,US
+2868383232,2868383743,US
+2868383744,2868384255,PH
+2868384256,2868384767,BR
+2868384768,2868390143,US
+2868390144,2868390399,GB
 2868390400,2868390911,IN
 2868390912,2868391423,US
 2868391424,2868391935,IN
-2868391936,2868414975,US
+2868391936,2868399615,US
+2868399616,2868399871,BR
+2868399872,2868400127,US
+2868400128,2868400639,BR
+2868400640,2868401151,US
+2868401152,2868401663,BR
+2868401664,2868401919,PH
+2868401920,2868402175,AR
+2868402176,2868410367,US
+2868410368,2868410879,BR
+2868410880,2868411391,AR
+2868411392,2868411903,PL
+2868411904,2868414719,US
+2868414720,2868414975,MU
 2868414976,2868415487,IN
-2868415488,2868420607,US
+2868415488,2868415999,US
+2868416000,2868416255,AU
+2868416256,2868416767,US
+2868416768,2868417023,PL
+2868417024,2868417535,JP
+2868417536,2868418815,US
+2868418816,2868419071,TR
+2868419072,2868419327,PH
+2868419328,2868419583,IN
+2868419584,2868420607,PH
 2868420608,2868423679,IN
 2868423680,2868428287,US
 2868428288,2868428799,IN
-2868428800,2868578815,US
+2868428800,2868432895,US
+2868432896,2868433407,AR
+2868433408,2868437503,US
+2868437504,2868437759,BR
+2868437760,2868576255,US
+2868576256,2868578303,IN
+2868578304,2868578815,BR
 2868578816,2868579327,IN
 2868579328,2868581375,US
 2868581376,2868581887,IN
-2868581888,2868586495,US
+2868581888,2868582143,US
+2868582144,2868582399,RO
+2868582400,2868585471,US
+2868585472,2868585727,GB
+2868585728,2868585983,PH
+2868585984,2868586495,GB
 2868586496,2868588543,IN
-2868588544,2868591615,US
-2868591616,2868592127,IN
-2868592128,2868599295,US
+2868588544,2868589055,PH
+2868589056,2868591615,US
+2868591616,2868592383,IN
+2868592384,2868592447,DE
+2868592448,2868592511,IN
+2868592512,2868592639,US
+2868592640,2868593663,NL
+2868593664,2868593919,IN
+2868593920,2868595711,US
+2868595712,2868596223,FR
+2868596224,2868596735,ES
+2868596736,2868597759,DE
+2868597760,2868598271,PH
+2868598272,2868599295,US
 2868599296,2868599807,IN
-2868599808,2868604415,US
+2868599808,2868600319,FR
+2868600320,2868600831,AU
+2868600832,2868601343,FR
+2868601344,2868601855,CR
+2868601856,2868602367,ES
+2868602368,2868602623,US
+2868602624,2868603007,ES
+2868603008,2868603071,IN
+2868603072,2868603135,ES
+2868603136,2868603391,PH
+2868603392,2868603647,US
+2868603648,2868604159,DE
+2868604160,2868604415,PH
 2868604416,2868604927,IN
-2868604928,2868612607,US
+2868604928,2868605183,PH
+2868605184,2868605951,SE
+2868605952,2868606207,PL
+2868606208,2868609023,ES
+2868609024,2868610047,AU
+2868610048,2868611327,US
+2868611328,2868611583,AU
+2868611584,2868611839,US
+2868611840,2868612095,IN
+2868612096,2868612607,US
 2868612608,2868613119,IN
-2868613120,2868614399,US
+2868613120,2868613631,US
+2868613632,2868614143,PH
+2868614144,2868614399,US
 2868614400,2868615167,IN
 2868615168,2868615679,US
 2868615680,2868616703,IN
-2868616704,2868619775,US
+2868616704,2868617215,US
+2868617216,2868617471,PH
+2868617472,2868617727,AU
+2868617728,2868618239,US
+2868618240,2868618367,PH
+2868618368,2868618431,US
+2868618432,2868618751,PH
+2868618752,2868619263,US
+2868619264,2868619775,PH
 2868619776,2868620287,IN
 2868620288,2868620799,US
-2868620800,2868621311,IN
-2868621312,2868658175,US
-2868658176,2868658431,GB
-2868658432,2868660223,US
+2868620800,2868621503,IN
+2868621504,2868621567,ES
+2868621568,2868621823,ID
+2868621824,2868621855,IN
+2868621856,2868621919,US
+2868621920,2868621951,IN
+2868621952,2868622335,US
+2868622336,2868622847,DE
+2868622848,2868623359,US
+2868623360,2868623871,PH
+2868623872,2868624383,IN
+2868624384,2868625407,ES
+2868625408,2868649983,US
+2868649984,2868651263,DE
+2868651264,2868651391,US
+2868651392,2868652031,DE
+2868652032,2868658175,US
+2868658176,2868660223,GB
 2868660224,2868660479,EU
-2868660480,2868662271,US
+2868660480,2868662271,GB
 2868662272,2868662527,EU
-2868662528,2868674336,US
+2868662528,2868664319,DE
+2868664320,2868667903,GB
+2868667904,2868668927,US
+2868668928,2868669439,GB
+2868669440,2868669951,US
+2868669952,2868670975,GB
+2868670976,2868671487,US
+2868671488,2868674336,GB
 2868674337,2868674337,SE
-2868674338,2868682752,US
+2868674338,2868674559,GB
+2868674560,2868682752,PH
 2868682753,2868682753,AP
-2868682754,2868772863,US
+2868682754,2868689151,PH
+2868689152,2868689663,AU
+2868689664,2868690943,PH
+2868690944,2868772863,US
 2868838400,2868903935,BE
 2868903936,2869035007,SG
 2869035008,2869166079,JP
@@ -50333,10 +52943,110 @@
 2885681152,2886667007,US
 2886667008,2886667263,DE
 2886667264,2886729727,US
-2887778304,2890414079,US
-2890414080,2890415103,ZA
-2890415104,2890924031,US
-2894069760,2894921727,US
+2887778304,2891034623,US
+2891034624,2891036671,CA
+2891036672,2891056383,US
+2891056384,2891056639,ES
+2891056640,2891058943,US
+2891058944,2891059199,FR
+2891059200,2891120639,US
+2891251712,2891272191,US
+2891272192,2891274239,CA
+2891274240,2891282431,US
+2891282432,2891283455,PR
+2891283456,2891284479,CA
+2891284480,2891364351,US
+2891364352,2891374591,CA
+2891374592,2891378687,US
+2891378688,2891380735,CA
+2891380736,2891403263,US
+2891403264,2891407359,CA
+2891407360,2891796479,US
+2891796480,2891800575,CA
+2891800576,2891807743,US
+2891807744,2891808767,CA
+2891808768,2891841535,US
+2891841536,2891842303,SE
+2891842304,2891843327,GB
+2891843328,2891843839,SE
+2891843840,2891844095,GB
+2891844096,2891845119,FR
+2891845120,2891846399,DE
+2891846400,2891846911,CH
+2891846912,2891847679,NL
+2891847680,2891847935,SG
+2891847936,2891848447,MY
+2891848448,2891848959,JP
+2891848960,2891849471,BN
+2891849472,2891849983,PH
+2891849984,2891850495,TH
+2891850496,2891850751,SG
+2891850752,2891854335,US
+2891854336,2891855615,NL
+2891855616,2891856127,SE
+2891856128,2891856383,LU
+2891856384,2891857919,US
+2891857920,2891858175,ES
+2891858176,2891858431,TR
+2891858432,2891858687,RO
+2891858688,2891862527,US
+2891862528,2891863039,KR
+2891863040,2891863551,AU
+2891863552,2891864063,JP
+2891864064,2891864575,SG
+2891864576,2891871231,US
+2891871232,2891871487,CA
+2891871488,2891974655,US
+2891974656,2891976703,CA
+2891976704,2891982847,US
+2891982848,2891984895,CA
+2891984896,2892021759,US
+2892021760,2892038143,CA
+2892038144,2892040191,US
+2892040192,2892042239,CA
+2892042240,2892050431,US
+2892050432,2892052479,CA
+2892052480,2892053503,US
+2892053504,2892054527,CA
+2892054528,2892068863,US
+2892068864,2892069887,CA
+2892069888,2892070911,US
+2892070912,2892103679,CA
+2892103680,2892120831,US
+2892120832,2892121087,CA
+2892121088,2892140543,US
+2892140544,2892144895,CA
+2892144896,2892145407,US
+2892145408,2892145663,CA
+2892145664,2892146943,US
+2892146944,2892147199,NL
+2892147200,2892149503,US
+2892149504,2892149759,NL
+2892149760,2892171263,US
+2892171264,2892172287,CA
+2892172288,2892174335,US
+2892174336,2892177407,CA
+2892177408,2892369919,US
+2892369920,2892374015,CA
+2892374016,2892423167,US
+2892423168,2892424191,VI
+2892424192,2892425215,CA
+2892425216,2892443647,US
+2892443648,2892447743,CA
+2892447744,2892464127,VG
+2892464128,2892496895,CA
+2892496896,2892906495,US
+2892906496,2892910591,CA
+2892910592,2892988415,US
+2892988416,2892988671,SC
+2892988672,2892988927,PA
+2892988928,2892989183,SA
+2892989184,2892989439,PE
+2892989440,2892989695,CO
+2892989696,2892989951,VE
+2892989952,2893676543,US
+2893676544,2893807615,CA
+2893807616,2894921727,US
 2894921728,2895118335,GB
 2895118336,2895301887,US
 2895301888,2895302143,AR
@@ -50345,7 +53055,9 @@
 2895708160,2896035839,US
 2896035840,2896101375,DE
 2896101376,2896166911,GB
-2896166912,2896429280,US
+2896166912,2896301499,US
+2896301500,2896301500,DE
+2896301501,2896429280,US
 2896429281,2896429281,CA
 2896429282,2897018879,US
 2897018880,2897149951,DE
@@ -50366,7 +53078,9 @@
 2899574784,2899902463,GB
 2899902464,2899967999,US
 2899968000,2900099071,CA
-2900099072,2902458367,US
+2900099072,2901740455,US
+2901740456,2901740463,CA
+2901740464,2902458367,US
 2902458368,2902462463,A1
 2902462464,2902476543,US
 2902476544,2902476799,CW
@@ -50390,17 +53104,13 @@
 2905345280,2905345535,AU
 2905345536,2905346815,US
 2905346816,2905347071,JP
-2905347072,2905348863,US
+2905347072,2905348095,US
+2905348096,2905348351,PH
+2905348352,2905348863,US
 2905348864,2905349119,NZ
-2905349120,2905379071,US
-2905379072,2905379327,CA
-2905379328,2905380607,US
-2905380608,2905380863,CA
-2905380864,2905387519,US
+2905349120,2905387519,US
 2905387520,2905388031,CA
-2905388032,2905394175,US
-2905394176,2905394687,CA
-2905394688,2905401855,US
+2905388032,2905401855,US
 2905401856,2905402111,CA
 2905402112,2905405679,US
 2905405680,2905405687,CN
@@ -50429,7 +53139,8 @@
 2915250176,2915254271,CA
 2915254272,2915516415,US
 2915516416,2915516671,NL
-2915516672,2915517183,US
+2915516672,2915516927,CA
+2915516928,2915517183,US
 2915517184,2915517439,RU
 2915517440,2915518463,DK
 2915518464,2915520511,GB
@@ -50447,7 +53158,9 @@
 2915528768,2915528791,NL
 2915528792,2915528863,US
 2915528864,2915528879,NL
-2915528880,2915795013,US
+2915528880,2915528927,US
+2915528928,2915528943,NL
+2915528944,2915795013,US
 2915795014,2915795014,MX
 2915795015,2915894575,US
 2915894576,2915894591,CA
@@ -50637,8 +53350,8 @@
 2918621184,2918653951,US
 2918653952,2918662143,CA
 2918662144,2918678527,US
-2918678528,2918679039,CA
-2918679040,2918699007,US
+2918678528,2918686719,CA
+2918686720,2918699007,US
 2918699008,2918703103,CA
 2918703104,2918760447,US
 2918760448,2918776831,CA
@@ -50729,9 +53442,7 @@
 2926575616,2927099903,CA
 2927099904,2927242751,US
 2927242752,2927243263,AE
-2927243264,2927254783,US
-2927254784,2927255039,AE
-2927255040,2927581183,US
+2927243264,2927581183,US
 2927581184,2927581439,SG
 2927581440,2927981567,US
 2927981568,2927982591,SG
@@ -50745,7 +53456,9 @@
 2928201984,2928202239,JP
 2928202240,2928204799,US
 2928204800,2928205055,NZ
-2928205056,2928226303,US
+2928205056,2928206335,US
+2928206336,2928206591,PH
+2928206592,2928226303,US
 2928226304,2928230399,CA
 2928230400,2928261375,US
 2928261376,2928261887,CA
@@ -50759,9 +53472,7 @@
 2928336896,2928455679,US
 2928455680,2928459775,CA
 2928459776,2928541695,US
-2928541696,2928570671,CA
-2928570672,2928570687,FR
-2928570688,2928607231,CA
+2928541696,2928607231,CA
 2928607232,2928633199,US
 2928633200,2928633215,CA
 2928633216,2936012799,US
@@ -50815,7 +53526,9 @@
 2942304256,2942566399,TW
 2942566400,2942599167,KH
 2942599168,2942608383,IN
-2942608384,2942609407,HK
+2942608384,2942608639,HK
+2942608640,2942608895,US
+2942608896,2942609407,HK
 2942609408,2942615551,IN
 2942615552,2942619647,HK
 2942619648,2942631935,JP
@@ -51001,7 +53714,9 @@
 2954830524,2954830527,DE
 2954830528,2954830735,FR
 2954830736,2954830751,NL
-2954830752,2954831247,FR
+2954830752,2954830879,FR
+2954830880,2954830887,BE
+2954830888,2954831247,FR
 2954831248,2954831251,ES
 2954831252,2954831807,FR
 2954831808,2954831823,ES
@@ -51028,13 +53743,17 @@
 2954834984,2954834991,IT
 2954834992,2954835039,FR
 2954835040,2954835043,DE
-2954835044,2954835295,FR
+2954835044,2954835067,FR
+2954835068,2954835071,FI
+2954835072,2954835295,FR
 2954835296,2954835299,ES
 2954835300,2954835443,FR
 2954835444,2954835447,ES
 2954835448,2954835451,FR
 2954835452,2954835455,ES
-2954835456,2954837071,FR
+2954835456,2954835619,FR
+2954835620,2954835620,ES
+2954835621,2954837071,FR
 2954837072,2954837075,ES
 2954837076,2954837615,FR
 2954837616,2954837619,IT
@@ -51077,7 +53796,9 @@
 2954843760,2954843771,ES
 2954843772,2954844147,FR
 2954844148,2954844151,DE
-2954844152,2954844999,FR
+2954844152,2954844192,FR
+2954844193,2954844193,NL
+2954844194,2954844999,FR
 2954845000,2954845003,ES
 2954845004,2954845183,FR
 2954845184,2954845199,DE
@@ -51113,7 +53834,9 @@
 2954859872,2954859903,ES
 2954859904,2954861623,FR
 2954861624,2954861631,IT
-2954861632,2954861875,FR
+2954861632,2954861867,FR
+2954861868,2954861871,CZ
+2954861872,2954861875,FR
 2954861876,2954861879,CH
 2954861880,2954862415,FR
 2954862416,2954862419,ES
@@ -51126,7 +53849,11 @@
 2954870844,2954870847,ES
 2954870848,2954870903,FR
 2954870904,2954870907,ES
-2954870908,2954875879,FR
+2954870908,2954874431,FR
+2954874432,2954874447,GB
+2954874448,2954874655,FR
+2954874656,2954874663,DE
+2954874664,2954875879,FR
 2954875880,2954875883,ES
 2954875884,2954876871,FR
 2954876872,2954876875,ES
@@ -51206,7 +53933,7 @@
 2956500992,2956503039,NL
 2956503040,2956504063,CY
 2956504064,2956504319,CH
-2956504320,2956504575,RU
+2956504320,2956504575,NL
 2956504576,2956504831,A1
 2956504832,2956505087,RU
 2956505088,2956506111,NL
@@ -51557,7 +54284,7 @@
 2960160768,2960162815,UA
 2960162816,2960175103,RU
 2960175104,2960179199,SK
-2960179200,2960187391,EU
+2960179200,2960187391,IR
 2960187392,2960211967,RU
 2960220160,2960224255,RO
 2960224256,2960228351,RU
@@ -51694,11 +54421,11 @@
 2960916480,2960924671,UA
 2960932864,2960933887,IR
 2960933888,2960934655,GB
-2960934656,2960934911,DE
+2960934656,2960934911,NL
 2960934912,2960941055,RO
 2960941056,2960943103,AM
 2960943104,2960945151,RO
-2960945152,2960945663,LI
+2960945152,2960945663,GB
 2960945664,2960949247,RU
 2960949248,2960951295,UA
 2960951296,2960951807,RU
@@ -51734,10 +54461,11 @@
 2961057792,2961061887,RU
 2961061888,2961062911,PL
 2961062912,2961063935,UA
-2961063936,2961072127,DE
+2961063936,2961072127,NL
 2961072128,2961088511,UA
 2961088512,2961088767,SE
-2961088768,2961089535,UA
+2961088768,2961089023,RU
+2961089024,2961089535,UA
 2961089536,2961090559,KG
 2961090560,2961096703,RO
 2961096704,2961097471,GB
@@ -51778,7 +54506,7 @@
 2967345152,2967347199,ES
 2967347200,2967351295,HR
 2967351296,2967355391,FR
-2967355392,2967363583,RO
+2967355392,2967363583,ES
 2967363584,2967371775,SE
 2967371776,2967388159,KZ
 2967388160,2967392255,RU
@@ -51800,7 +54528,9 @@
 2967435008,2967441407,RO
 2967441408,2967445503,MD
 2967445504,2967446015,GB
-2967446016,2967470079,RO
+2967446016,2967446783,RO
+2967446784,2967447039,DE
+2967447040,2967470079,RO
 2967470080,2967601151,SA
 2967601152,2967633919,HU
 2967633920,2967666687,RU
@@ -52068,7 +54798,9 @@
 2988444672,2988444679,ES
 2988444680,2988446719,FR
 2988446720,2988446723,DE
-2988446724,2988448607,FR
+2988446724,2988446871,FR
+2988446872,2988446872,IE
+2988446873,2988448607,FR
 2988448608,2988448639,ES
 2988448640,2988448799,FR
 2988448800,2988448815,ES
@@ -52088,7 +54820,9 @@
 2988459688,2988459691,PL
 2988459692,2988459863,FR
 2988459864,2988459867,ES
-2988459868,2988460575,FR
+2988459868,2988460063,FR
+2988460064,2988460095,PT
+2988460096,2988460575,FR
 2988460576,2988460591,PT
 2988460592,2988460651,FR
 2988460652,2988460655,ES
@@ -52107,11 +54841,11 @@
 2988464624,2988464627,ES
 2988464628,2988465215,FR
 2988465216,2988465219,ES
-2988465220,2988465279,FR
-2988465280,2988465295,DE
-2988465296,2988465559,FR
+2988465220,2988465559,FR
 2988465560,2988465563,ES
-2988465564,2988476415,FR
+2988465564,2988466098,FR
+2988466099,2988466099,BE
+2988466100,2988476415,FR
 2988476416,2988478463,IT
 2988478464,2988478579,FR
 2988478580,2988478583,DE
@@ -52153,11 +54887,15 @@
 2988487236,2988487239,NL
 2988487240,2988487303,FR
 2988487304,2988487311,NL
-2988487312,2988487883,FR
+2988487312,2988487407,FR
+2988487408,2988487415,IT
+2988487416,2988487883,FR
 2988487884,2988487887,NL
 2988487888,2988487919,FR
 2988487920,2988487923,DE
-2988487924,2988489479,FR
+2988487924,2988488971,FR
+2988488972,2988488975,MT
+2988488976,2988489479,FR
 2988489480,2988489483,DE
 2988489484,2988489675,FR
 2988489676,2988489679,ES
@@ -52169,7 +54907,9 @@
 2988490688,2988490719,ES
 2988490720,2988491151,FR
 2988491152,2988491155,NL
-2988491156,2988492799,FR
+2988491156,2988491251,FR
+2988491252,2988491252,ES
+2988491253,2988492799,FR
 2988492800,2988494847,PL
 2988494848,2988499535,FR
 2988499536,2988499551,ES
@@ -52247,7 +54987,9 @@
 2988525888,2988525951,GB
 2988525952,2988526415,FR
 2988526416,2988526423,ES
-2988526424,2988527527,FR
+2988526424,2988527447,FR
+2988527448,2988527455,NL
+2988527456,2988527527,FR
 2988527528,2988527531,NL
 2988527532,2988527723,FR
 2988527724,2988527727,ES
@@ -52262,7 +55004,9 @@
 2988529360,2988529375,FR
 2988529376,2988529383,GB
 2988529384,2988529387,ES
-2988529388,2988531275,FR
+2988529388,2988530087,FR
+2988530088,2988530091,NL
+2988530092,2988531275,FR
 2988531276,2988531279,PT
 2988531280,2988535807,FR
 2988535808,2988537855,ES
@@ -52336,7 +55080,9 @@
 2988557508,2988557511,ES
 2988557512,2988557539,FR
 2988557540,2988557543,ES
-2988557544,2988558203,FR
+2988557544,2988557983,FR
+2988557984,2988557999,IT
+2988558000,2988558203,FR
 2988558204,2988558207,DE
 2988558208,2988558623,FR
 2988558624,2988558655,NL
@@ -52383,7 +55129,11 @@
 2989883392,2989948927,UA
 2989948928,2990014463,FI
 2990014464,2990079999,PL
-2990080000,2990145535,RU
+2990080000,2990096895,RU
+2990096896,2990097023,KZ
+2990097024,2990097151,RU
+2990097152,2990097279,KZ
+2990097280,2990145535,RU
 2990145536,2990211071,SI
 2990211072,2990276607,GR
 2990276608,2990342143,ES
@@ -52584,7 +55334,8 @@
 2997522944,2997523199,NO
 2997523200,2997523455,NL
 2997523456,2997524479,DE
-2997524480,2997526527,NL
+2997524480,2997525503,NL
+2997525504,2997526527,TR
 2997526528,2997583871,RU
 2997583872,2997616639,SY
 2997616640,2997649407,SI
@@ -52953,7 +55704,11 @@
 3002826752,3002828799,SE
 3002828800,3002830847,RU
 3002830848,3002834943,FI
-3002834944,3002836991,LU
+3002834944,3002835063,BE
+3002835064,3002835067,LU
+3002835068,3002836319,BE
+3002836320,3002836335,LU
+3002836336,3002836991,BE
 3002836992,3002841087,GB
 3002841088,3002843135,CZ
 3002843136,3002845183,NL
@@ -53117,17 +55872,15 @@
 3005888256,3005890047,PA
 3005890048,3005890303,CO
 3005890304,3005890559,PA
-3005890560,3005891327,CO
-3005891328,3005893119,PA
+3005890560,3005891583,CO
+3005891584,3005893119,PA
 3005893120,3005893631,CO
 3005893632,3005893887,PA
 3005893888,3005894911,CO
 3005894912,3005895167,PA
 3005895168,3005895423,CO
 3005895424,3005896703,PA
-3005896704,3005896959,CO
-3005896960,3005897215,PA
-3005897216,3005897727,CO
+3005896704,3005897727,CO
 3005897728,3005897983,PA
 3005897984,3005898239,CO
 3005898240,3005899007,PA
@@ -53190,8 +55943,8 @@
 3006284544,3006284799,PA
 3006284800,3006285055,CR
 3006285056,3006285311,PA
-3006285312,3006286079,CR
-3006286080,3006286847,PA
+3006285312,3006286335,CR
+3006286336,3006286847,PA
 3006286848,3006287615,CR
 3006287616,3006287871,PA
 3006287872,3006288127,CR
@@ -53229,8 +55982,8 @@
 3006322432,3006323199,CR
 3006323200,3006323455,PA
 3006323456,3006323711,CR
-3006323712,3006324223,PA
-3006324224,3006324479,CR
+3006323712,3006323967,PA
+3006323968,3006324479,CR
 3006324480,3006328831,PA
 3006328832,3006330623,NI
 3006330624,3006330879,PA
@@ -53336,12 +56089,11 @@
 3007155200,3007155215,CL
 3007155216,3007155231,DE
 3007155232,3007155327,CL
-3007155328,3007155455,US
-3007155456,3007155711,GB
+3007155328,3007155711,US
 3007155712,3007155727,CL
 3007155728,3007155743,DE
 3007155744,3007155967,CL
-3007155968,3007156223,DE
+3007155968,3007156223,US
 3007156224,3007156239,CL
 3007156240,3007156255,DE
 3007156256,3007156351,CL
@@ -53525,12 +56277,12 @@
 3007168768,3007169023,CL
 3007169024,3007169151,US
 3007169152,3007169279,CL
-3007169280,3007169535,US
-3007169536,3007170047,CL
+3007169280,3007169791,US
+3007169792,3007170047,CL
 3007170048,3007170303,MX
 3007170304,3007170559,CL
 3007170560,3007171071,DE
-3007171072,3007171327,CL
+3007171072,3007171327,US
 3007171328,3007171583,ES
 3007171584,3007171855,CL
 3007171856,3007171871,US
@@ -53538,7 +56290,8 @@
 3007171874,3007171875,CL
 3007171876,3007171903,BR
 3007171904,3007172607,CL
-3007172608,3007175679,BR
+3007172608,3007172863,US
+3007172864,3007175679,BR
 3007175680,3007175935,GB
 3007175936,3007183359,BR
 3007183360,3007183615,AU
@@ -53567,10 +56320,8 @@
 3007280640,3007280895,PA
 3007280896,3007281151,CR
 3007281152,3007281919,PA
-3007281920,3007283455,CR
-3007283456,3007283711,PA
-3007283712,3007283967,CR
-3007283968,3007284479,PA
+3007281920,3007283199,CR
+3007283200,3007284479,PA
 3007284480,3007285759,CR
 3007285760,3007286271,PA
 3007286272,3007286783,CR
@@ -53611,12 +56362,16 @@
 3024879616,3025141759,CN
 3025141760,3025403903,KR
 3025403904,3025600511,CN
-3025600512,3025603071,IN
+3025600512,3025602047,IN
+3025602048,3025602303,HK
+3025602304,3025603071,IN
 3025603072,3025603091,HK
 3025603092,3025603095,CN
 3025603096,3025603103,IN
 3025603104,3025603215,HK
-3025603216,3025603839,IN
+3025603216,3025603327,IN
+3025603328,3025603335,GU
+3025603336,3025603839,IN
 3025603840,3025604095,HK
 3025604096,3025604607,IN
 3025604608,3025606655,SG
@@ -53636,16 +56391,23 @@
 3025612832,3025612895,IN
 3025612896,3025613063,SG
 3025613064,3025616895,IN
-3025616896,3025617423,SG
-3025617424,3025618943,IN
-3025618944,3025619487,SG
-3025619488,3025620991,IN
+3025616896,3025617439,SG
+3025617440,3025617447,IN
+3025617448,3025617455,SG
+3025617456,3025618943,IN
+3025618944,3025619519,SG
+3025619520,3025619583,IN
+3025619584,3025619711,SG
+3025619712,3025620991,IN
 3025620992,3025621247,PH
 3025621248,3025621503,IN
 3025621504,3025621759,PH
-3025621760,3025623295,IN
+3025621760,3025623055,IN
+3025623056,3025623087,SG
+3025623088,3025623295,IN
 3025623296,3025623551,JP
-3025623552,3025625343,IN
+3025623552,3025623807,SG
+3025623808,3025625343,IN
 3025625344,3025625375,SG
 3025625376,3025625391,IN
 3025625392,3025625395,CA
@@ -53653,8 +56415,8 @@
 3025625400,3025625407,TH
 3025625408,3025625471,SG
 3025625472,3025625503,MY
-3025625504,3025625519,SG
-3025625520,3025625535,IN
+3025625504,3025625527,SG
+3025625528,3025625535,IN
 3025625536,3025625599,CA
 3025625600,3025625855,SG
 3025625856,3025626111,IN
@@ -53670,19 +56432,20 @@
 3025630976,3025631239,IN
 3025631240,3025631247,AU
 3025631248,3025631747,IN
-3025631748,3025631759,HK
-3025631760,3025632255,IN
-3025632256,3025632271,SG
-3025632272,3025632287,IN
-3025632288,3025632383,SG
-3025632384,3025632511,IN
+3025631748,3025631767,HK
+3025631768,3025631999,IN
+3025632000,3025632255,HK
+3025632256,3025632399,SG
+3025632400,3025632511,IN
 3025632512,3025632767,SG
 3025632768,3025633535,IN
 3025633536,3025633791,HK
 3025633792,3025633807,AU
 3025633808,3025633823,IN
 3025633824,3025633855,AU
-3025633856,3025637151,IN
+3025633856,3025633919,IN
+3025633920,3025634047,MY
+3025634048,3025637151,IN
 3025637152,3025637183,MY
 3025637184,3025637375,IN
 3025637376,3025637631,HK
@@ -53702,7 +56465,9 @@
 3025639536,3025639551,HK
 3025639552,3025639679,SG
 3025639680,3025639807,HK
-3025639808,3025640191,IN
+3025639808,3025639839,IN
+3025639840,3025639871,HK
+3025639872,3025640191,IN
 3025640192,3025640447,JP
 3025640448,3025640799,MY
 3025640800,3025641727,IN
@@ -53922,8 +56687,7 @@
 3034456064,3034464255,JP
 3034464256,3034466303,NZ
 3034466304,3034472447,JP
-3034472448,3034478591,IN
-3034478592,3034480639,JP
+3034472448,3034480639,IN
 3034480640,3034482687,SG
 3034482688,3034483967,AF
 3034483968,3034484223,US
@@ -53983,26 +56747,34 @@
 3039166464,3039231999,PA
 3039232000,3039297535,EC
 3039297536,3039363071,PY
-3039363072,3039411199,BZ
+3039363072,3039379455,BZ
+3039379456,3039395839,GY
+3039395840,3039411199,BZ
 3039411200,3039412223,US
 3039412224,3039412735,CL
-3039412736,3039414015,BR
+3039412736,3039412991,BR
+3039412992,3039413247,US
+3039413248,3039414015,BR
 3039414016,3039414271,CL
-3039414272,3039414527,BR
-3039414528,3039414783,CL
-3039414784,3039415039,BR
+3039414272,3039415039,BR
 3039415040,3039415295,CL
 3039415296,3039416319,BR
-3039416320,3039416713,CL
+3039416320,3039416591,CL
+3039416592,3039416607,SG
+3039416608,3039416713,CL
 3039416714,3039416715,US
-3039416716,3039416735,CL
+3039416716,3039416719,SG
+3039416720,3039416735,CL
 3039416736,3039416739,US
-3039416740,3039416831,CL
+3039416740,3039416741,SG
+3039416742,3039416831,CL
 3039416832,3039417599,BR
 3039417600,3039417855,CL
-3039417856,3039418879,BR
-3039418880,3039419135,CL
-3039419136,3039420415,BR
+3039417856,3039419583,BR
+3039419584,3039419647,SG
+3039419648,3039419839,BR
+3039419840,3039419903,SG
+3039419904,3039420415,BR
 3039420416,3039428607,AR
 3039428608,3039559679,CL
 3039559680,3039821823,AR
@@ -54103,192 +56875,236 @@
 3050569728,3050635263,CL
 3050635264,3050700799,BR
 3050700800,3050700815,JP
-3050700816,3050700831,CL
-3050700832,3050700832,BR
-3050700833,3050700835,CL
-3050700836,3050700847,BR
-3050700848,3050701055,CL
+3050700816,3050701055,BR
 3050701056,3050701311,US
 3050701312,3050701327,IE
 3050701328,3050701343,US
-3050701344,3050701344,BR
-3050701345,3050701567,CL
+3050701344,3050701567,BR
 3050701568,3050701823,US
 3050701824,3050701839,SG
-3050701840,3050702079,CL
+3050701840,3050702079,BR
 3050702080,3050702335,US
 3050702336,3050702351,DK
-3050702352,3050702591,CL
+3050702352,3050702591,BR
 3050702592,3050702847,US
 3050702848,3050702863,FR
-3050702864,3050703103,CL
+3050702864,3050703103,BR
 3050703104,3050703359,US
 3050703360,3050703375,AT
-3050703376,3050703871,CL
+3050703376,3050703615,BR
+3050703616,3050703871,US
 3050703872,3050703887,PE
-3050703888,3050704127,CL
+3050703888,3050704127,BR
 3050704128,3050704383,US
 3050704384,3050704399,KR
-3050704400,3050704639,CL
+3050704400,3050704639,BR
 3050704640,3050704895,US
 3050704896,3050704911,IT
-3050704912,3050705151,CL
+3050704912,3050705151,BR
 3050705152,3050705407,US
 3050705408,3050705423,JP
-3050705424,3050705663,CL
+3050705424,3050705663,BR
 3050705664,3050705919,US
 3050705920,3050705935,AU
-3050705936,3050706175,CL
+3050705936,3050706175,BR
 3050706176,3050706431,US
 3050706432,3050706447,NL
-3050706448,3050706687,CL
+3050706448,3050706687,BR
 3050706688,3050706943,US
 3050706944,3050706959,HK
-3050706960,3050707199,CL
+3050706960,3050707199,BR
 3050707200,3050707455,US
 3050707456,3050707471,IT
-3050707472,3050707711,CL
+3050707472,3050707711,BR
 3050707712,3050707967,US
 3050707968,3050707983,CH
-3050707984,3050708223,CL
+3050707984,3050708223,BR
 3050708224,3050708479,US
 3050708480,3050708495,FR
-3050708496,3050708735,CL
+3050708496,3050708735,BR
 3050708736,3050708991,US
 3050708992,3050709007,AT
-3050709008,3050709023,BR
-3050709024,3050709247,CL
+3050709008,3050709247,BR
 3050709248,3050709375,DE
-3050709376,3050709503,CL
+3050709376,3050709503,BR
 3050709504,3050709519,TH
-3050709520,3050709759,CL
+3050709520,3050709759,BR
 3050709760,3050710015,NL
 3050710016,3050710031,ES
-3050710032,3050710271,CL
+3050710032,3050710271,BR
 3050710272,3050710527,US
 3050710528,3050710543,FR
-3050710544,3050710783,CL
+3050710544,3050710783,BR
 3050710784,3050711039,US
 3050711040,3050711055,AU
-3050711056,3050711295,CL
+3050711056,3050711295,BR
 3050711296,3050711551,US
 3050711552,3050711567,EE
-3050711568,3050711807,CL
+3050711568,3050711807,BR
 3050711808,3050712063,US
 3050712064,3050712079,FR
-3050712080,3050712319,CL
+3050712080,3050712319,BR
 3050712320,3050712575,US
 3050712576,3050712591,PL
-3050712592,3050712831,CL
+3050712592,3050712831,BR
 3050712832,3050713087,US
 3050713088,3050713103,LV
-3050713104,3050713343,CL
+3050713104,3050713343,BR
 3050713344,3050713599,US
 3050713600,3050713855,NL
-3050713856,3050714367,CL
+3050713856,3050714111,BR
+3050714112,3050714367,US
 3050714368,3050714623,GB
 3050714624,3050714879,BR
 3050714880,3050715135,ES
-3050715136,3050715647,CL
-3050715648,3050725375,US
-3050725376,3050733567,CL
-3050733568,3050760959,US
-3050760960,3050764287,CL
-3050764288,3050766335,US
+3050715136,3050715647,BR
+3050715648,3050766335,US
 3050766336,3050766351,NO
-3050766352,3050766591,CL
+3050766352,3050766591,BR
 3050766592,3050766847,US
 3050766848,3050766863,KR
-3050766864,3050767359,CL
+3050766864,3050767359,BR
 3050767360,3050767375,AT
-3050767376,3050767615,CL
+3050767376,3050767615,BR
 3050767616,3050767871,US
 3050767872,3050767887,MY
-3050767888,3050768127,CL
+3050767888,3050768127,BR
 3050768128,3050768383,US
 3050768384,3050768399,AT
-3050768400,3050768639,CL
+3050768400,3050768639,BR
 3050768640,3050768895,US
 3050768896,3050768911,CZ
-3050768912,3050769151,CL
+3050768912,3050769151,BR
 3050769152,3050769407,US
 3050769408,3050769423,AU
-3050769424,3050769663,CL
+3050769424,3050769663,BR
 3050769664,3050769919,US
 3050769920,3050769935,MY
-3050769936,3050770175,CL
+3050769936,3050770175,BR
 3050770176,3050770431,US
 3050770432,3050770447,LV
-3050770448,3050770687,CL
+3050770448,3050770687,BR
 3050770688,3050770943,US
 3050770944,3050770959,HK
-3050770960,3050771199,CL
+3050770960,3050771199,BR
 3050771200,3050771455,US
 3050771456,3050771471,SG
-3050771472,3050771711,CL
+3050771472,3050771711,BR
 3050771712,3050771967,US
 3050771968,3050771983,EE
-3050771984,3050772223,CL
+3050771984,3050772223,BR
 3050772224,3050772479,US
 3050772480,3050772495,MY
-3050772496,3050772735,CL
+3050772496,3050772735,BR
 3050772736,3050772991,US
 3050772992,3050773007,HK
-3050773008,3050773247,CL
+3050773008,3050773247,BR
 3050773248,3050773503,US
 3050773504,3050773519,NL
-3050773520,3050773759,CL
+3050773520,3050773759,BR
 3050773760,3050774015,US
 3050774016,3050774031,TR
-3050774032,3050774271,CL
+3050774032,3050774271,BR
 3050774272,3050774527,US
 3050774528,3050774543,ES
-3050774544,3050774783,CL
+3050774544,3050774783,BR
 3050774784,3050775039,US
 3050775040,3050775055,KR
-3050775056,3050775295,CL
+3050775056,3050775295,BR
 3050775296,3050775551,US
 3050775552,3050775567,FR
-3050775568,3050775807,CL
+3050775568,3050775807,BR
 3050775808,3050776063,US
 3050776064,3050776079,MY
-3050776080,3050776319,CL
+3050776080,3050776319,BR
 3050776320,3050776575,US
 3050776576,3050776591,TH
-3050776592,3050776831,CL
+3050776592,3050776831,BR
 3050776832,3050777087,US
 3050777088,3050777103,AU
-3050777104,3050777343,CL
+3050777104,3050777343,BR
 3050777344,3050777599,US
 3050777600,3050777615,HK
-3050777616,3050777855,CL
+3050777616,3050777855,BR
 3050777856,3050778111,US
 3050778112,3050778127,KR
-3050778128,3050778367,CL
+3050778128,3050778367,BR
 3050778368,3050778623,US
 3050778624,3050778639,TR
-3050778640,3050778879,CL
-3050778880,3050788863,US
-3050788864,3050788991,CL
-3050788992,3050789119,US
-3050789120,3050789247,CL
-3050789248,3050789375,US
-3050789376,3050789503,CL
-3050789504,3050789631,US
-3050789632,3050789759,CL
-3050789760,3050789887,US
-3050789888,3050790015,CL
-3050790016,3050790143,US
-3050790144,3050790271,CL
-3050790272,3050790399,US
-3050790400,3050790527,CL
-3050790528,3050790655,US
-3050790656,3050790783,CL
-3050790784,3050825215,US
-3050825216,3050825471,CL
-3050825472,3050826751,US
-3050826752,3050827007,CL
-3050827008,3050831871,US
+3050778640,3050778879,BR
+3050778880,3050800383,US
+3050800384,3050800399,AL
+3050800400,3050800415,AD
+3050800416,3050800431,AI
+3050800432,3050800447,AG
+3050800448,3050800463,AR
+3050800464,3050800479,AM
+3050800480,3050800495,AZ
+3050800496,3050800511,BS
+3050800512,3050800639,US
+3050800640,3050800655,BB
+3050800656,3050800671,BY
+3050800672,3050800687,BZ
+3050800688,3050800703,BM
+3050800704,3050800719,BO
+3050800720,3050800735,BA
+3050800736,3050800751,VG
+3050800752,3050800767,KY
+3050800768,3050800895,US
+3050800896,3050800911,CN
+3050800912,3050800927,CO
+3050800928,3050800943,GG
+3050800944,3050800959,CU
+3050800960,3050800975,CY
+3050800976,3050800991,DK
+3050800992,3050801007,DO
+3050801008,3050801023,EC
+3050801024,3050801151,US
+3050801152,3050801167,EG
+3050801168,3050801183,GQ
+3050801184,3050801199,GF
+3050801200,3050801215,PF
+3050801216,3050801231,GE
+3050801232,3050801247,SV
+3050801248,3050801263,GD
+3050801264,3050801279,GT
+3050801280,3050801407,US
+3050801408,3050801423,HN
+3050801424,3050801439,IR
+3050801440,3050801455,JM
+3050801456,3050801471,JO
+3050801472,3050801487,KG
+3050801488,3050801503,LB
+3050801504,3050801519,LI
+3050801520,3050801535,MG
+3050801536,3050801663,US
+3050801664,3050801679,MT
+3050801680,3050801695,MQ
+3050801696,3050801711,MU
+3050801712,3050801727,MX
+3050801728,3050801743,MC
+3050801744,3050801759,ME
+3050801760,3050801775,NC
+3050801776,3050801791,NI
+3050801792,3050802175,US
+3050802176,3050802191,OM
+3050802192,3050802207,PK
+3050802208,3050802223,PE
+3050802224,3050802239,PH
+3050802240,3050802255,PR
+3050802256,3050802271,QA
+3050802272,3050802287,LC
+3050802288,3050802303,RS
+3050802304,3050802431,US
+3050802432,3050802447,SC
+3050802448,3050802463,SI
+3050802464,3050802479,KR
+3050802480,3050802495,LK
+3050802496,3050802511,TW
+3050802512,3050802527,TT
+3050802528,3050802543,UY
+3050802544,3050802559,VE
+3050802560,3050831871,US
 3050831872,3051356159,BR
 3051356160,3051372543,CR
 3051372544,3051372799,PA
@@ -54414,14 +57230,12 @@
 3056772096,3056773119,JP
 3056773120,3056774143,WS
 3056774144,3056775167,JP
-3056775168,3056779007,AF
-3056779008,3056779263,AU
+3056775168,3056779263,AF
 3056779264,3056791551,JP
 3056791552,3056795647,ID
 3056795648,3056861183,CN
 3056861184,3056992255,TH
 3056992256,3057025023,CN
-3057025024,3057033215,PH
 3057033216,3057037311,NZ
 3057037312,3057041407,JP
 3057041408,3057049599,MY
@@ -54516,7 +57330,6 @@
 3070170112,3070171135,MY
 3070171136,3070172159,HK
 3070172160,3070173183,AU
-3070173184,3070181375,PH
 3070181376,3070185471,JP
 3070185472,3070197759,AU
 3070197760,3070230527,KR
@@ -54588,13 +57401,23 @@
 3082174464,3082178559,BZ
 3082178560,3082178823,HK
 3082178824,3082178824,SG
-3082178825,3082179583,HK
+3082178825,3082179047,HK
+3082179048,3082179055,SG
+3082179056,3082179583,HK
 3082179584,3082181631,IN
 3082181632,3082182655,ID
 3082182656,3082190847,LA
 3082190848,3082289151,JP
 3082289152,3087007743,CN
-3087007744,3088605183,US
+3087007744,3088449535,US
+3088449536,3088462847,TH
+3088462848,3088463103,US
+3088463104,3088474111,TH
+3088474112,3088478207,US
+3088478208,3088489471,TH
+3088489472,3088489727,US
+3088489728,3088506879,TH
+3088506880,3088605183,US
 3088605184,3088609279,NL
 3088609280,3088629759,US
 3088629760,3088633855,NL
@@ -54660,7 +57483,9 @@
 3090387968,3090388479,NL
 3090388480,3090389503,US
 3090389504,3090389631,CA
-3090389632,3090415103,US
+3090389632,3090401791,US
+3090401792,3090402047,IN
+3090402048,3090415103,US
 3090415104,3090415615,NL
 3090415616,3091202047,US
 3091202048,3091726335,CA
@@ -54668,7 +57493,9 @@
 3091955712,3091959807,CA
 3091959808,3091976191,US
 3091976192,3091980287,CA
-3091980288,3092559359,US
+3091980288,3092381695,US
+3092381696,3092439039,TH
+3092439040,3092559359,US
 3092559360,3092559615,NL
 3092559616,3092567039,US
 3092567040,3092568063,NL
@@ -54722,7 +57549,19 @@
 3093282816,3093299199,CA
 3093299200,3093908991,US
 3093908992,3093909247,PR
-3093909248,3094020095,US
+3093909248,3093909528,US
+3093909529,3093909529,AT
+3093909530,3093909597,US
+3093909598,3093909598,DE
+3093909599,3093909656,US
+3093909657,3093909657,FR
+3093909658,3093909812,US
+3093909813,3093909813,AT
+3093909814,3093943785,US
+3093943786,3093943786,CZ
+3093943787,3093945989,US
+3093945990,3093945990,AT
+3093945991,3094020095,US
 3094020096,3094023303,CA
 3094023304,3094023311,BD
 3094023312,3094032759,CA
@@ -54759,26 +57598,13 @@
 3098107136,3098107391,FR
 3098107392,3098107647,EU
 3098107648,3098107903,SE
-3098107904,3098108159,ES
-3098108160,3098108415,IL
-3098108416,3098108671,US
-3098108672,3098108927,SG
-3098108928,3098109183,JP
-3098109184,3098109439,AU
-3098109440,3098109695,HK
-3098109696,3098110719,QA
-3098110720,3098111743,IT
-3098111744,3098112767,US
-3098112768,3098113791,AU
-3098113792,3098148863,US
+3098107904,3098148863,US
 3098148864,3098165247,JM
 3098165248,3098181631,US
 3098181632,3098185727,CA
 3098185728,3098263551,US
 3098263552,3098271743,CA
-3098271744,3098278847,US
-3098278848,3098278911,CA
-3098278912,3098411007,US
+3098271744,3098411007,US
 3098411008,3098415103,PK
 3098415104,3098476543,US
 3098476544,3098492927,CA
@@ -54828,6 +57654,12 @@
 3103860992,3103861247,RU
 3103861248,3103861503,PL
 3103861504,3103861759,AT
+3103861760,3103862015,ME
+3103862016,3103862271,MD
+3103862272,3103862527,IT
+3103862528,3103862783,FR
+3103862784,3103863039,DE
+3103863040,3103863295,RU
 3103916032,3103917055,CH
 3103917056,3103918079,IT
 3103918080,3103919103,DE
@@ -54840,7 +57672,9 @@
 3103924224,3103924479,DE
 3103924480,3103925247,RU
 3103925248,3103926271,PL
-3103926272,3103927295,CZ
+3103926272,3103926783,CZ
+3103926784,3103927039,SK
+3103927040,3103927295,CZ
 3103927296,3103929343,NL
 3103929344,3103930367,BE
 3103930368,3103931391,DE
@@ -54920,7 +57754,7 @@
 3104004864,3104005119,EU
 3104005120,3104006143,GB
 3104006144,3104007167,DE
-3104007168,3104008191,GB
+3104007168,3104008191,GG
 3104008192,3104009215,NL
 3104009216,3104010239,IT
 3104010240,3104011263,PL
@@ -55017,6 +57851,7 @@
 3104103424,3104104447,IR
 3104104448,3104105471,TR
 3104105472,3104106495,FI
+3104106496,3104107519,DE
 3104107520,3104108543,UA
 3104108544,3104109567,GB
 3104109568,3104110591,ES
@@ -55292,7 +58127,9 @@
 3104401408,3104403455,DE
 3104403456,3104404479,SK
 3104404480,3104405503,CZ
-3104405504,3104406527,KZ
+3104405504,3104405759,KZ
+3104405760,3104406015,RU
+3104406016,3104406527,KZ
 3104406528,3104407551,PL
 3104407552,3104408575,DE
 3104408576,3104409599,AT
@@ -55302,7 +58139,7 @@
 3104412672,3104413695,IT
 3104413696,3104414719,FR
 3104414720,3104415743,TR
-3104415744,3104416767,UA
+3104415744,3104416767,RU
 3104416768,3104417791,SE
 3104417792,3104418815,US
 3104418816,3104419839,GB
@@ -55337,22 +58174,15 @@
 3104451584,3104452607,RU
 3104452608,3104453631,NL
 3104453632,3104454655,CH
-3104454656,3104454660,NL
-3104454661,3104454782,SE
-3104454783,3104455050,NL
-3104455051,3104455082,SE
-3104455083,3104455146,NL
-3104455147,3104455162,SE
-3104455163,3104455294,NL
-3104455295,3104455423,SE
-3104455424,3104455679,NL
+3104454656,3104455294,NL
+3104455295,3104455298,SE
+3104455299,3104455679,NL
 3104455680,3104456703,RU
 3104456704,3104457727,IL
 3104457728,3104458751,DE
 3104458752,3104459775,IR
 3104459776,3104460799,IT
-3104460800,3104461823,ES
-3104461824,3104462847,CZ
+3104460800,3104462847,ES
 3104462848,3104463871,GB
 3104463872,3104464895,DE
 3104464896,3104465919,NL
@@ -55371,6 +58201,7 @@
 3104478208,3104479231,DE
 3104479232,3104480255,RU
 3104480256,3104483327,NL
+3104483328,3104484351,ES
 3104484352,3104485375,RU
 3104485376,3104486399,FR
 3104486400,3104488447,RU
@@ -55863,7 +58694,24 @@
 3105008640,3105009663,CH
 3105009664,3105010687,PL
 3105010688,3105011711,AT
-3105011712,3105012735,CY
+3105011712,3105012229,CY
+3105012230,3105012230,US
+3105012231,3105012231,CY
+3105012232,3105012235,US
+3105012236,3105012257,CY
+3105012258,3105012258,US
+3105012259,3105012259,CY
+3105012260,3105012267,US
+3105012268,3105012485,CY
+3105012486,3105012486,GB
+3105012487,3105012487,CY
+3105012488,3105012491,GB
+3105012492,3105012543,CY
+3105012544,3105012557,DE
+3105012558,3105012559,US
+3105012560,3105012560,CY
+3105012561,3105012563,DE
+3105012564,3105012735,CY
 3105012736,3105013759,GL
 3105013760,3105014783,SE
 3105014784,3105015807,ES
@@ -56339,7 +59187,8 @@
 3105517568,3105518591,RU
 3105518592,3105519615,RS
 3105519616,3105520639,RU
-3105520640,3105521663,FR
+3105520640,3105521151,LU
+3105521152,3105521663,FR
 3105521664,3105522687,NO
 3105522688,3105523711,LT
 3105523712,3105524735,ES
@@ -56747,11 +59596,7 @@
 3105932288,3105933311,SE
 3105933312,3105933351,GB
 3105933352,3105933359,IT
-3105933360,3105933463,GB
-3105933464,3105933471,IT
-3105933472,3105933871,GB
-3105933872,3105933879,IT
-3105933880,3105934215,GB
+3105933360,3105934215,GB
 3105934216,3105934223,IT
 3105934224,3105934231,GB
 3105934232,3105934239,IT
@@ -56793,7 +59638,9 @@
 3105966080,3105967103,FI
 3105967104,3105968127,GB
 3105968128,3105969151,HU
-3105969152,3105970175,GB
+3105969152,3105969663,GB
+3105969664,3105969695,DE
+3105969696,3105970175,GB
 3105970176,3105971199,FR
 3105971200,3105972223,GB
 3105972224,3105973247,FI
@@ -56938,7 +59785,7 @@
 3106108416,3106110463,RU
 3106110464,3106111487,GB
 3106111488,3106112511,RU
-3106112512,3106113535,CZ
+3106112512,3106113535,DE
 3106113536,3106114559,NL
 3106114560,3106115583,ES
 3106115584,3106116607,DE
@@ -56975,7 +59822,9 @@
 3106146304,3106147327,GB
 3106147328,3106148351,FR
 3106148352,3106149375,AT
-3106149376,3106150399,EU
+3106149376,3106149631,EU
+3106149632,3106149887,DE
+3106149888,3106150399,EU
 3106150400,3106151423,GB
 3106151424,3106152447,NO
 3106152448,3106153471,GB
@@ -57122,7 +59971,8 @@
 3106299904,3106300927,GB
 3106300928,3106301951,NL
 3106301952,3106302975,GB
-3106302976,3106303999,CZ
+3106302976,3106303231,A2
+3106303232,3106303999,CZ
 3106304000,3106305023,GB
 3106305024,3106306047,DE
 3106306048,3106307071,NO
@@ -57173,7 +60023,17 @@
 3106351104,3106352127,ES
 3106352128,3106353151,NL
 3106353152,3106354175,DE
-3106354176,3106355199,NL
+3106354176,3106354316,NL
+3106354317,3106354317,BE
+3106354318,3106354943,NL
+3106354944,3106354951,GB
+3106354952,3106354959,AT
+3106354960,3106355023,NL
+3106355024,3106355031,GB
+3106355032,3106355039,AT
+3106355040,3106355051,NL
+3106355052,3106355103,GB
+3106355104,3106355199,NL
 3106355200,3106356223,DE
 3106356224,3106357247,ES
 3106357248,3106358271,DE
@@ -57260,7 +60120,6 @@
 3106449408,3106450431,AT
 3106450432,3106451455,DE
 3106451456,3106452479,AZ
-3106452480,3106453503,UA
 3106453504,3106454527,SE
 3106454528,3106455551,ME
 3106455552,3106456575,PS
@@ -57420,7 +60279,10 @@
 3106599936,3106601983,CH
 3106601984,3106603007,DE
 3106603008,3106604031,BE
-3106604032,3106606079,RU
+3106604032,3106604543,DE
+3106604544,3106604799,RU
+3106604800,3106605055,DE
+3106605056,3106606079,RU
 3106606080,3106607103,AT
 3106607104,3106608127,IT
 3106608128,3106609151,NL
@@ -57478,7 +60340,8 @@
 3106661376,3106662399,TR
 3106662400,3106663423,IE
 3106663424,3106664447,UA
-3106664448,3106666495,FR
+3106664448,3106665471,FR
+3106665472,3106666495,CH
 3106666496,3106667519,UA
 3106667520,3106668543,ES
 3106668544,3106669567,RU
@@ -57532,7 +60395,9 @@
 3106716672,3106717695,CZ
 3106717696,3106718719,TR
 3106718720,3106719743,CH
-3106719744,3106720767,DE
+3106719744,3106720245,DE
+3106720246,3106720246,US
+3106720247,3106720767,DE
 3106720768,3106722815,AT
 3106722816,3106723839,IT
 3106723840,3106724863,PL
@@ -57545,7 +60410,8 @@
 3106731008,3106732031,NL
 3106732032,3106735167,GB
 3106735168,3106735199,IE
-3106735200,3106736127,GB
+3106735200,3106735231,DE
+3106735232,3106736127,GB
 3106736128,3106737151,IE
 3106737152,3106738175,RO
 3106738176,3106739199,DE
@@ -57571,7 +60437,6 @@
 3106758656,3106759679,GB
 3106759680,3106760703,RU
 3106760704,3106761727,IE
-3106761728,3106762751,GB
 3106762752,3106763775,DE
 3106763776,3106764799,NL
 3106764800,3106765823,SE
@@ -57662,8 +60527,7 @@
 3106850816,3106851839,GB
 3106851840,3106852863,PL
 3106852864,3106853887,GB
-3106853888,3106854015,EU
-3106854016,3106854143,NL
+3106853888,3106854143,NL
 3106854144,3106854911,CH
 3106854912,3106855935,IR
 3106855936,3106856959,UA
@@ -57685,7 +60549,7 @@
 3106873344,3106874367,ES
 3106874368,3106875391,RU
 3106875392,3106876415,NO
-3106876416,3106877439,CZ
+3106876416,3106877439,DE
 3106877440,3106878463,IR
 3106878464,3106879487,RU
 3106879488,3106880511,MK
@@ -57862,8 +60726,8 @@
 3107067904,3107068927,RU
 3107068928,3107069951,HU
 3107069952,3107070975,FR
-3107070976,3107071487,SE
-3107071488,3107071999,IR
+3107070976,3107071231,SE
+3107071232,3107071999,IR
 3107072000,3107073023,SE
 3107073024,3107074047,ES
 3107074048,3107075071,PL
@@ -57879,7 +60743,7 @@
 3107085312,3107086335,NL
 3107086336,3107087359,EE
 3107087360,3107088383,IE
-3107088384,3107089407,NL
+3107088384,3107089407,BR
 3107089408,3107090431,IT
 3107090432,3107091455,FR
 3107091456,3107092479,ES
@@ -57891,7 +60755,9 @@
 3107097600,3107098623,DE
 3107098624,3107099647,ES
 3107099648,3107099903,UA
-3107099904,3107101695,CZ
+3107099904,3107100159,CZ
+3107100160,3107100415,RU
+3107100416,3107101695,CZ
 3107101696,3107102719,RU
 3107102720,3107103743,GB
 3107103744,3107104767,PL
@@ -57972,6 +60838,7 @@
 3107183616,3107184639,IQ
 3107184640,3107185663,SE
 3107185664,3107186687,CZ
+3107186688,3107187711,NO
 3107187712,3107188735,MT
 3107188736,3107189759,CZ
 3107189760,3107190783,NL
@@ -57990,7 +60857,6 @@
 3107204096,3107205119,FR
 3107205120,3107206143,BG
 3107206144,3107207167,NL
-3107207168,3107208191,DE
 3107208192,3107209215,NL
 3107209216,3107210239,IT
 3107210240,3107213311,RU
@@ -58004,7 +60870,9 @@
 3107220480,3107221503,GB
 3107221504,3107222527,IT
 3107222528,3107223551,IQ
-3107223552,3107224575,AT
+3107223552,3107224063,AT
+3107224064,3107224319,DE
+3107224320,3107224575,AT
 3107224576,3107225599,FR
 3107225600,3107226623,AZ
 3107226624,3107227647,RU
@@ -58090,7 +60958,9 @@
 3107316736,3107317759,KG
 3107317760,3107318783,RU
 3107318784,3107318799,IE
-3107318800,3107319807,NL
+3107318800,3107319039,NL
+3107319040,3107319295,GB
+3107319296,3107319807,NL
 3107319808,3107320831,OM
 3107320832,3107321855,SA
 3107321856,3107322879,NL
@@ -58236,7 +61106,9 @@
 3107473408,3107474431,IL
 3107474432,3107475455,ES
 3107475456,3107476479,NL
-3107476480,3107477503,BG
+3107476480,3107476765,BG
+3107476766,3107476766,US
+3107476767,3107477503,BG
 3107477504,3107478527,AE
 3107478528,3107480575,IR
 3107480576,3107481599,DK
@@ -58268,14 +61140,15 @@
 3107496320,3107496447,NL
 3107496448,3107496463,CL
 3107496464,3107496479,ES
-3107496480,3107496511,GB
+3107496480,3107496495,RO
+3107496496,3107496511,IN
 3107496512,3107496703,NL
 3107496704,3107496719,PE
 3107496720,3107496735,PK
 3107496736,3107496751,FJ
 3107496752,3107496783,PA
-3107496784,3107496799,AQ
-3107496800,3107496815,MX
+3107496784,3107496799,BE
+3107496800,3107496815,IL
 3107496816,3107496831,CN
 3107496832,3107496847,BR
 3107496848,3107496863,KP
@@ -58599,8 +61472,7 @@
 3107826688,3107827711,RU
 3107827712,3107828735,FR
 3107828736,3107829759,IT
-3107829760,3107830783,FR
-3107830784,3107831807,GB
+3107829760,3107831807,FR
 3107831808,3107832831,RU
 3107832832,3107833855,NL
 3107833856,3107834879,PS
@@ -58642,7 +61514,8 @@
 3107874816,3107875839,CH
 3107875840,3107876863,CZ
 3107876864,3107877887,RS
-3107877888,3107878911,NL
+3107877888,3107878143,GB
+3107878144,3107878911,NL
 3107878912,3107879935,IL
 3107879936,3107880959,DE
 3107880960,3107881983,HU
@@ -58731,7 +61604,7 @@
 3107971072,3107972095,UZ
 3107972096,3107973119,IT
 3107973120,3107974143,SA
-3107974144,3107976191,IR
+3107974144,3107975167,IR
 3107976192,3107977215,NL
 3107977216,3107978239,AT
 3107978240,3107979263,NL
@@ -58761,7 +61634,8 @@
 3108002816,3108003839,RO
 3108003840,3108004863,DE
 3108004864,3108005887,RU
-3108005888,3108006911,LT
+3108005888,3108006910,US
+3108006911,3108006911,LT
 3108006912,3108007935,NL
 3108007936,3108008959,DE
 3108008960,3108009983,CH
@@ -58842,8 +61716,7 @@
 3108092928,3108093951,SE
 3108093952,3108095999,DE
 3108096000,3108096511,LT
-3108096512,3108096767,RU
-3108096768,3108097023,ES
+3108096512,3108097023,RU
 3108097024,3108098047,TR
 3108098048,3108099071,DE
 3108099072,3108100095,NL
@@ -59017,7 +61890,7 @@
 3108278272,3108279295,RU
 3108279296,3108280319,FR
 3108280320,3108281343,RU
-3108281344,3108282367,CZ
+3108281344,3108282367,DE
 3108282368,3108283391,NL
 3108283392,3108284415,CZ
 3108284416,3108285439,NO
@@ -59180,7 +62053,7 @@
 3108457472,3108459519,RU
 3108459520,3108460543,DE
 3108460544,3108461567,RO
-3108461568,3108462591,GB
+3108461568,3108462591,DE
 3108462592,3108463615,RU
 3108463616,3108464639,GB
 3108464640,3108465663,HU
@@ -59236,7 +62109,7 @@
 3108517888,3108518911,BG
 3108518912,3108519935,SI
 3108519936,3108520959,CH
-3108520960,3108521983,CZ
+3108520960,3108521983,DE
 3108521984,3108523007,AT
 3108523008,3108524031,IT
 3108524032,3108525055,FR
@@ -59523,7 +62396,9 @@
 3108846592,3108847615,BE
 3108847616,3108847639,GB
 3108847640,3108847647,IT
-3108847648,3108848639,GB
+3108847648,3108847959,GB
+3108847960,3108847967,IT
+3108847968,3108848639,GB
 3108848640,3108849663,CH
 3108849664,3108850687,GB
 3108850688,3108851711,PL
@@ -59654,7 +62529,7 @@
 3108969472,3108970495,ES
 3108970496,3108971519,PL
 3108971520,3108972543,ES
-3108972544,3108973567,MD
+3108972544,3108973567,NL
 3108973568,3108974591,DE
 3108974592,3108975615,RU
 3108975616,3108976639,IT
@@ -59774,7 +62649,7 @@
 3109098496,3109099519,HU
 3109099520,3109100543,RU
 3109100544,3109101567,SI
-3109101568,3109102591,CY
+3109101568,3109102591,TR
 3109102592,3109103615,DK
 3109103616,3109104639,IR
 3109104640,3109105663,FR
@@ -59799,7 +62674,33 @@
 3109124096,3109126143,ES
 3109126144,3109127167,LV
 3109127168,3109128191,ES
-3109128192,3109129215,NL
+3109128192,3109128207,NL
+3109128208,3109128215,GB
+3109128216,3109128223,AT
+3109128224,3109128231,DK
+3109128232,3109128239,SE
+3109128240,3109128247,IS
+3109128248,3109128319,NL
+3109128320,3109128383,GB
+3109128384,3109128503,NL
+3109128504,3109128511,IE
+3109128512,3109128719,NL
+3109128720,3109128727,GB
+3109128728,3109128735,AT
+3109128736,3109128743,DK
+3109128744,3109128751,SE
+3109128752,3109128759,IE
+3109128760,3109128760,IT
+3109128761,3109128831,NL
+3109128832,3109128895,BE
+3109128896,3109128975,NL
+3109128976,3109128983,DK
+3109128984,3109128991,SE
+3109128992,3109128999,IT
+3109129000,3109129007,DK
+3109129008,3109129015,SE
+3109129016,3109129023,IE
+3109129024,3109129215,NL
 3109129216,3109130239,LB
 3109130240,3109131263,RU
 3109131264,3109132287,DE
@@ -60100,7 +63001,8 @@
 3109455872,3109456895,FR
 3109456896,3109457919,PS
 3109457920,3109458943,RU
-3109458944,3109459967,SE
+3109458944,3109459711,SE
+3109459712,3109459967,GB
 3109459968,3109460991,TR
 3109460992,3109462015,DE
 3109462016,3109463039,LB
@@ -60272,7 +63174,8 @@
 3109640192,3109641215,IQ
 3109641216,3109642239,NO
 3109642240,3109643263,US
-3109643264,3109644287,UA
+3109643264,3109643775,EU
+3109643776,3109644287,UA
 3109644288,3109646335,RU
 3109646336,3109647359,IR
 3109647360,3109648383,CZ
@@ -60460,7 +63363,9 @@
 3109846016,3109847039,GB
 3109847040,3109848063,IE
 3109848064,3109849087,BG
-3109849088,3109852159,RU
+3109849088,3109850111,UA
+3109850112,3109851135,RU
+3109851136,3109852159,UA
 3109852160,3109853183,NL
 3109853184,3109854207,DE
 3109854208,3109855231,PL
@@ -60481,7 +63386,9 @@
 3109869568,3109870591,CZ
 3109870592,3109871615,NL
 3109871616,3109872639,AZ
-3109872640,3109874687,SI
+3109872640,3109872895,SI
+3109872896,3109873151,SE
+3109873152,3109874687,SI
 3109874688,3109875711,ES
 3109875712,3109876735,DK
 3109876736,3109877759,ES
@@ -60553,7 +63460,9 @@
 3109946368,3109947391,CZ
 3109947392,3109948415,CH
 3109948416,3109949439,SE
-3109949440,3109950463,GB
+3109949440,3109949695,IT
+3109949696,3109950207,GB
+3109950208,3109950463,DE
 3109950464,3109951487,IT
 3109951488,3109952511,DE
 3109952512,3109952767,US
@@ -60561,15 +63470,25 @@
 3109953024,3109953279,CA
 3109953280,3109953280,GB
 3109953281,3109953281,US
-3109953282,3109953319,GB
+3109953282,3109953284,GB
+3109953285,3109953285,IT
+3109953286,3109953288,GB
+3109953289,3109953289,US
+3109953290,3109953319,GB
 3109953320,3109953320,MX
 3109953321,3109953359,GB
 3109953360,3109953360,SG
-3109953361,3109953379,GB
+3109953361,3109953375,GB
+3109953376,3109953376,US
+3109953377,3109953379,GB
 3109953380,3109953380,US
-3109953381,3109953483,GB
+3109953381,3109953471,GB
+3109953472,3109953472,HK
+3109953473,3109953483,GB
 3109953484,3109953484,AU
-3109953485,3109953531,GB
+3109953485,3109953491,GB
+3109953492,3109953492,AU
+3109953493,3109953531,GB
 3109953532,3109953532,CA
 3109953533,3109953535,GB
 3109953536,3109954559,RU
@@ -60788,20 +63707,24 @@
 3110182912,3110183935,GB
 3110183936,3110184959,RU
 3110184960,3110185983,ES
-3110185984,3110189055,DE
+3110185984,3110187007,DE
+3110187008,3110187263,BE
+3110187264,3110189055,DE
 3110189056,3110190079,FR
 3110190080,3110193151,NO
 3110193152,3110194175,RU
 3110194176,3110195199,FR
 3110195200,3110196223,HU
-3110196224,3110197247,NL
+3110196224,3110196479,LT
+3110196480,3110196735,GB
+3110196736,3110197247,NL
 3110197248,3110199295,IT
 3110199296,3110200319,DE
 3110200320,3110201343,NL
 3110201344,3110202367,IT
 3110202368,3110203391,IE
 3110203392,3110204415,DE
-3110204416,3110205439,LU
+3110204416,3110205439,BE
 3110205440,3110206463,EE
 3110206464,3110207487,RU
 3110207488,3110208511,BA
@@ -60826,7 +63749,8 @@
 3110226944,3110231039,RU
 3110231040,3110232063,DE
 3110232064,3110233087,DK
-3110233088,3110235135,NL
+3110233088,3110234111,NL
+3110234112,3110235135,EU
 3110235136,3110236159,GB
 3110236160,3110237183,IR
 3110237184,3110238207,FR
@@ -60854,7 +63778,991 @@
 3110263808,3110265855,JO
 3110265856,3110266879,FI
 3110266880,3110267903,ES
-3110267904,3110268927,DE
+3110267904,3110269951,DE
+3110269952,3110270975,SE
+3110270976,3110271999,PT
+3110272000,3110273023,TR
+3110273024,3110274047,BA
+3110274048,3110277119,RU
+3110277120,3110278143,LB
+3110278144,3110279167,TR
+3110279168,3110279183,PL
+3110279184,3110279199,GB
+3110279200,3110279215,DE
+3110279216,3110279423,GB
+3110279424,3110279439,ES
+3110279440,3110279455,GB
+3110279456,3110279471,NL
+3110279472,3110279679,GB
+3110279680,3110279695,ES
+3110279696,3110279711,GB
+3110279712,3110279727,NL
+3110279728,3110279935,GB
+3110279936,3110279951,PL
+3110279952,3110279967,GB
+3110279968,3110279983,DE
+3110279984,3110280191,GB
+3110280192,3110281215,RU
+3110281216,3110282239,LB
+3110282240,3110283263,SE
+3110284288,3110285311,PS
+3110285312,3110286335,BE
+3110286336,3110288383,DE
+3110288384,3110289407,ES
+3110289408,3110291455,CZ
+3110291456,3110292479,AT
+3110292480,3110293503,GB
+3110293504,3110294527,AT
+3110294528,3110295551,GB
+3110295552,3110296575,RO
+3110296576,3110297599,RU
+3110297600,3110298623,NL
+3110298624,3110299647,RO
+3110299648,3110300671,PL
+3110300672,3110301695,IE
+3110301696,3110302719,FR
+3110302720,3110303743,CZ
+3110303744,3110304767,DK
+3110304768,3110305791,KZ
+3110305792,3110306815,NL
+3110306816,3110307071,NZ
+3110307072,3110307839,BY
+3110307840,3110308863,IE
+3110308864,3110309887,RS
+3110309888,3110310911,DE
+3110310912,3110311935,FR
+3110311936,3110315007,RU
+3110315008,3110316031,GB
+3110316032,3110317055,RU
+3110317056,3110318079,PL
+3110318080,3110319103,CZ
+3110319104,3110320127,US
+3110320128,3110321151,NL
+3110321152,3110322175,SE
+3110322176,3110323199,PL
+3110323200,3110324223,IT
+3110324224,3110325247,GB
+3110325248,3110326271,NL
+3110326272,3110327295,DE
+3110327296,3110328319,IR
+3110328320,3110329343,FR
+3110329344,3110330367,LB
+3110330368,3110331391,IT
+3110331392,3110332415,DE
+3110332416,3110333439,PT
+3110333440,3110334463,GB
+3110334464,3110335487,ES
+3110335488,3110336511,GB
+3110336512,3110337535,GE
+3110337536,3110338559,PT
+3110338560,3110339583,CH
+3110339584,3110340607,FR
+3110340608,3110341631,DE
+3110341632,3110343679,IT
+3110343680,3110344703,IQ
+3110344704,3110345727,RU
+3110345728,3110346751,FR
+3110346752,3110347775,IT
+3110347776,3110348799,NL
+3110348800,3110349823,US
+3110349824,3110350847,IR
+3110350848,3110351871,DE
+3110351872,3110353919,RU
+3110353920,3110354943,GB
+3110354944,3110355967,RU
+3110355968,3110356991,GB
+3110356992,3110358015,ES
+3110358016,3110359039,GE
+3110359040,3110360063,IT
+3110360064,3110360575,RO
+3110360576,3110361087,FI
+3110361088,3110362111,ES
+3110362112,3110363135,CZ
+3110363136,3110364159,KW
+3110364160,3110366207,RU
+3110366208,3110371327,IT
+3110371328,3110372351,NL
+3110372352,3110373375,LU
+3110373376,3110374399,ES
+3110374400,3110375423,NL
+3110375424,3110376447,AT
+3110376448,3110377471,GB
+3110377472,3110378495,SA
+3110378496,3110379519,RU
+3110379520,3110380543,DE
+3110380544,3110381567,IT
+3110381568,3110382591,LB
+3110382592,3110383615,GB
+3110383616,3110384639,IT
+3110384640,3110385663,ES
+3110385664,3110386687,FR
+3110386688,3110387711,GB
+3110387712,3110388735,NL
+3110388736,3110389759,CZ
+3110389760,3110390783,LB
+3110390784,3110391807,NO
+3110391808,3110392831,AE
+3110392832,3110393855,GB
+3110393856,3110394879,LB
+3110394880,3110395903,DE
+3110395904,3110396927,KZ
+3110396928,3110397951,PL
+3110397952,3110398975,NL
+3110398976,3110399999,IT
+3110400000,3110401023,AT
+3110401024,3110402047,MK
+3110402048,3110403071,GB
+3110403072,3110404095,IT
+3110404096,3110405119,NO
+3110405120,3110406143,DE
+3110406144,3110407167,LI
+3110407168,3110408191,GB
+3110408192,3110409215,LB
+3110409216,3110411263,RU
+3110411264,3110412287,FR
+3110412288,3110413311,NO
+3110413312,3110414335,IT
+3110414336,3110415359,NL
+3110415360,3110416383,GB
+3110416384,3110417407,LI
+3110417408,3110418431,DE
+3110418432,3110419455,SE
+3110419456,3110420479,NL
+3110420480,3110421503,FR
+3110421504,3110422527,RU
+3110422528,3110423551,PL
+3110423552,3110425599,GB
+3110425600,3110426623,IE
+3110426624,3110427647,DK
+3110427648,3110428671,DE
+3110428672,3110429695,NL
+3110429696,3110430719,DE
+3110430720,3110431743,RO
+3110431744,3110432767,NL
+3110432768,3110433791,DE
+3110433792,3110434815,CH
+3110434816,3110435839,GB
+3110435840,3110436863,IS
+3110436864,3110437887,PL
+3110437888,3110438911,DE
+3110438912,3110439935,GE
+3110439936,3110440959,SK
+3110440960,3110441983,BE
+3110441984,3110443007,GB
+3110443008,3110444031,DK
+3110444032,3110445055,CH
+3110445056,3110447103,ES
+3110447104,3110448127,RO
+3110448128,3110449151,DE
+3110449152,3110450175,PT
+3110450176,3110451199,FR
+3110451200,3110452223,DE
+3110452224,3110453247,PL
+3110453248,3110454271,GB
+3110454272,3110455295,NL
+3110455296,3110457343,RU
+3110457344,3110458367,FR
+3110458368,3110459391,IT
+3110459392,3110460415,RU
+3110460416,3110461439,CZ
+3110461440,3110462463,GB
+3110462464,3110463487,IR
+3110463488,3110464511,PL
+3110464512,3110465535,RU
+3110465536,3110466559,IE
+3110466560,3110467583,RU
+3110467584,3110468607,DE
+3110468608,3110469631,RU
+3110469632,3110470655,IL
+3110470656,3110472703,RU
+3110472704,3110473727,AT
+3110473728,3110474751,SE
+3110474752,3110475775,CZ
+3110475776,3110476799,NL
+3110476800,3110477823,NO
+3110477824,3110478847,SE
+3110478848,3110479871,TR
+3110479872,3110480895,IT
+3110480896,3110481919,NL
+3110481920,3110482943,RO
+3110482944,3110483967,NO
+3110483968,3110487039,DE
+3110487040,3110488063,NL
+3110488064,3110489087,KZ
+3110489088,3110490111,CZ
+3110490112,3110491135,FR
+3110491136,3110492159,GB
+3110492160,3110493183,UA
+3110493184,3110494207,DE
+3110494208,3110495231,CZ
+3110495232,3110496255,SE
+3110496256,3110497279,DE
+3110497280,3110498303,NO
+3110498304,3110501375,RU
+3110501376,3110502399,RS
+3110502400,3110503423,RU
+3110503424,3110504447,GB
+3110504448,3110505471,RU
+3110505472,3110506495,IT
+3110506496,3110507519,GE
+3110507520,3110508543,GB
+3110508544,3110509567,DE
+3110509568,3110510591,RO
+3110510592,3110511615,FR
+3110511616,3110512639,UA
+3110512640,3110514687,NL
+3110514688,3110515711,FR
+3110515712,3110516735,RU
+3110516736,3110517759,UA
+3110517760,3110518783,PL
+3110518784,3110521855,GB
+3110521856,3110523903,ES
+3110523904,3110524927,SE
+3110524928,3110525951,US
+3110525952,3110526975,GB
+3110526976,3110527999,DE
+3110528000,3110529023,AT
+3110529024,3110530047,FI
+3110530048,3110531071,RS
+3110531072,3110532095,DE
+3110532096,3110534143,GB
+3110534144,3110535167,DE
+3110535168,3110536191,LU
+3110536192,3110537215,GB
+3110537216,3110538239,ES
+3110538240,3110539263,LB
+3110539264,3110540287,NL
+3110540288,3110541311,LB
+3110541312,3110542335,RU
+3110542336,3110543359,HK
+3110543360,3110545407,NL
+3110545408,3110546431,UA
+3110546432,3110547455,DE
+3110547456,3110548479,SE
+3110548480,3110549503,IT
+3110549504,3110550527,NL
+3110550528,3110551551,RU
+3110551552,3110552575,FR
+3110552576,3110553599,RU
+3110553600,3110554623,DE
+3110554624,3110555647,NL
+3110555648,3110556671,IT
+3110556672,3110557695,IR
+3110557696,3110558719,LB
+3110558720,3110559743,DE
+3110559744,3110560767,GB
+3110560768,3110561791,RU
+3110561792,3110562815,IE
+3110562816,3110563839,RU
+3110563840,3110564863,IT
+3110564864,3110565887,GB
+3110565888,3110566911,DK
+3110566912,3110567935,ES
+3110567936,3110568959,IR
+3110568960,3110569983,RU
+3110569984,3110571007,RS
+3110571008,3110572031,FR
+3110572032,3110573055,SK
+3110573056,3110574079,ES
+3110574080,3110575103,PL
+3110575104,3110576127,LU
+3110576128,3110578175,RU
+3110578176,3110579199,KZ
+3110579200,3110580223,NL
+3110580224,3110581247,KZ
+3110581248,3110582271,ES
+3110582272,3110583295,KZ
+3110583296,3110584319,SE
+3110584320,3110585343,DE
+3110585344,3110586367,TR
+3110586368,3110587391,NL
+3110587392,3110588415,ES
+3110588416,3110590463,SE
+3110590464,3110591487,HR
+3110591488,3110592511,GB
+3110592512,3110593535,DE
+3110593536,3110594303,GB
+3110594304,3110594559,SE
+3110594560,3110595583,DE
+3110595584,3110596607,NL
+3110596608,3110597631,SE
+3110597632,3110599679,IR
+3110599680,3110600703,RU
+3110600704,3110601727,GR
+3110601728,3110602751,RU
+3110602752,3110603775,NL
+3110603776,3110604799,RU
+3110604800,3110605823,CH
+3110605824,3110606847,TR
+3110606848,3110607871,IT
+3110607872,3110608895,NL
+3110608896,3110611967,RO
+3110611968,3110612991,GB
+3110612992,3110615039,RO
+3110615040,3110616063,QA
+3110616064,3110617087,ES
+3110617088,3110618111,PL
+3110618112,3110619135,LB
+3110619136,3110620159,DE
+3110620160,3110621183,FR
+3110621184,3110622207,GB
+3110622208,3110623231,CH
+3110623232,3110624255,DE
+3110624256,3110625279,RU
+3110625280,3110626303,GB
+3110626304,3110627327,NL
+3110627328,3110628351,RU
+3110628352,3110629375,LU
+3110629376,3110630399,UA
+3110630400,3110631423,IT
+3110631424,3110632447,GB
+3110632448,3110633471,BG
+3110633472,3110636543,NL
+3110636544,3110637567,DE
+3110637568,3110638591,GR
+3110638592,3110639615,RU
+3110639616,3110640639,ES
+3110640640,3110641663,IQ
+3110641664,3110642687,DE
+3110642688,3110643711,ES
+3110643712,3110644735,RO
+3110644736,3110645759,RU
+3110645760,3110646783,LT
+3110646784,3110647807,RO
+3110647808,3110648831,GB
+3110648832,3110649855,NL
+3110649856,3110650879,IR
+3110650880,3110651903,RO
+3110651904,3110652927,GG
+3110652928,3110653951,DE
+3110653952,3110654975,NO
+3110654976,3110655999,UA
+3110656000,3110657023,GB
+3110657024,3110658047,GI
+3110658048,3110659071,AT
+3110659072,3110661119,IR
+3110661120,3110662143,ES
+3110662144,3110663167,IR
+3110663168,3110664191,LB
+3110664192,3110665215,RU
+3110665216,3110666239,LB
+3110666240,3110667263,DK
+3110667264,3110668287,RO
+3110668288,3110669311,PL
+3110669312,3110671359,ES
+3110671360,3110672383,AT
+3110672384,3110673407,ES
+3110673408,3110674431,FR
+3110674432,3110676479,RO
+3110676480,3110677503,DE
+3110677504,3110679551,RU
+3110679552,3110680575,BE
+3110680576,3110681599,GB
+3110681600,3110682623,SE
+3110682624,3110683647,GB
+3110683648,3110684671,TR
+3110684672,3110685695,GB
+3110685696,3110686719,NL
+3110686720,3110687743,BE
+3110687744,3110688767,RO
+3110688768,3110689791,RU
+3110689792,3110690815,BG
+3110690816,3110691839,GB
+3110691840,3110692863,RU
+3110692864,3110693887,HU
+3110693888,3110694911,UA
+3110694912,3110695935,DE
+3110695936,3110696959,RU
+3110696960,3110697983,IR
+3110697984,3110699007,GB
+3110699008,3110700031,HU
+3110700032,3110701055,CH
+3110701056,3110702079,FR
+3110702080,3110703103,PL
+3110703104,3110704127,CH
+3110704128,3110705151,GE
+3110705152,3110706175,FR
+3110706176,3110707199,BE
+3110707200,3110708223,CZ
+3110708224,3110709247,GB
+3110709248,3110710271,RU
+3110710272,3110711295,CY
+3110711296,3110712319,IL
+3110712320,3110713343,CZ
+3110713344,3110714367,IR
+3110714368,3110715391,RO
+3110715392,3110716415,NL
+3110716416,3110717439,AZ
+3110717440,3110718463,BE
+3110718464,3110719487,NL
+3110719488,3110720511,IT
+3110720512,3110721535,CZ
+3110721536,3110723583,NL
+3110723584,3110724607,RU
+3110724608,3110725631,TJ
+3110725632,3110726655,ES
+3110726656,3110727679,IR
+3110727680,3110728703,IT
+3110728704,3110729727,SE
+3110729728,3110730751,NL
+3110730752,3110731775,DE
+3110731776,3110733823,ES
+3110733824,3110734847,DE
+3110734848,3110735871,IQ
+3110735872,3110736895,GR
+3110736896,3110737919,TR
+3110737920,3110738943,LU
+3110738944,3110739967,IQ
+3110739968,3110740991,IL
+3110740992,3110742015,ES
+3110742016,3110743039,RU
+3110743040,3110744063,ES
+3110744064,3110745087,AT
+3110745088,3110746111,NL
+3110746112,3110747135,IT
+3110747136,3110748159,CZ
+3110748160,3110749183,CH
+3110749184,3110750207,BE
+3110750208,3110751231,NL
+3110751232,3110752255,DE
+3110752256,3110753279,RO
+3110753280,3110754303,DE
+3110754304,3110755327,IE
+3110755328,3110756351,RU
+3110756352,3110757375,HU
+3110757376,3110758399,CY
+3110758400,3110759423,RU
+3110759424,3110760447,AT
+3110760448,3110761471,HU
+3110761472,3110762495,IQ
+3110762496,3110763007,NL
+3110763008,3110763263,RO
+3110763264,3110763519,NL
+3110763520,3110764543,AD
+3110764544,3110765567,RU
+3110765568,3110766591,PL
+3110766592,3110767615,IR
+3110767616,3110768639,RS
+3110768640,3110769663,IR
+3110769664,3110770687,DE
+3110770688,3110771711,NL
+3110771712,3110772735,KZ
+3110772736,3110773759,AT
+3110773760,3110774783,DE
+3110774784,3110775807,RE
+3110775808,3110776831,RU
+3110776832,3110777855,GB
+3110777856,3110778879,SE
+3110778880,3110779903,DE
+3110779904,3110780927,AT
+3110780928,3110781951,PS
+3110781952,3110782975,RU
+3110782976,3110783999,IR
+3110784000,3110785023,RU
+3110785024,3110786047,TR
+3110786048,3110787071,AT
+3110787072,3110788095,FR
+3110788096,3110790143,NL
+3110790144,3110791167,IR
+3110791168,3110792191,DE
+3110792192,3110793215,BE
+3110793216,3110794239,NL
+3110794240,3110795263,DE
+3110795264,3110796287,AT
+3110796288,3110797311,DE
+3110797312,3110798335,ES
+3110798336,3110799359,DE
+3110799360,3110800383,GB
+3110800384,3110801407,DK
+3110801408,3110802431,ES
+3110802432,3110803455,DE
+3110803456,3110804479,NL
+3110804480,3110806527,IR
+3110806528,3110809599,NL
+3110809600,3110810623,LB
+3110810624,3110811647,DE
+3110811648,3110812671,NL
+3110812672,3110813695,IS
+3110813696,3110814719,PL
+3110814720,3110815743,NL
+3110815744,3110816767,RU
+3110816768,3110817791,QA
+3110817792,3110818815,NL
+3110818816,3110819839,FR
+3110819840,3110821887,NL
+3110821888,3110822911,DE
+3110822912,3110823935,NL
+3110823936,3110825983,ES
+3110825984,3110829055,NL
+3110829056,3110831103,RU
+3110831104,3110832127,TR
+3110832128,3110833151,RU
+3110833152,3110834175,PL
+3110834176,3110836223,IT
+3110836224,3110837247,ES
+3110837248,3110838271,RU
+3110838272,3110839295,ES
+3110839296,3110840319,RU
+3110840320,3110841343,DK
+3110841344,3110842367,KZ
+3110842368,3110843391,DK
+3110843392,3110845439,IT
+3110845440,3110846463,NL
+3110846464,3110847487,DE
+3110847488,3110848511,GB
+3110848512,3110849535,DK
+3110849536,3110850559,IT
+3110850560,3110851583,BE
+3110851584,3110852607,NL
+3110852608,3110853631,MK
+3110853632,3110854655,DE
+3110854656,3110855679,NL
+3110855680,3110856703,GB
+3110856704,3110857727,FR
+3110857728,3110858751,IT
+3110858752,3110859775,RU
+3110859776,3110861823,IR
+3110861824,3110862847,UA
+3110862848,3110864895,RU
+3110864896,3110865919,DE
+3110865920,3110866943,GB
+3110866944,3110868991,RU
+3110868992,3110870015,PS
+3110870016,3110871039,CZ
+3110871040,3110872063,FR
+3110872064,3110873087,MD
+3110873088,3110874111,IE
+3110874112,3110875135,GB
+3110875136,3110876159,PL
+3110876160,3110878207,GB
+3110878208,3110879231,CZ
+3110879232,3110880255,LV
+3110880256,3110881279,PL
+3110881280,3110883327,DE
+3110883328,3110884351,IL
+3110884352,3110886399,RU
+3110886400,3110887423,GB
+3110887424,3110888447,IR
+3110888448,3110889471,DK
+3110889472,3110890495,PT
+3110890496,3110891519,DK
+3110891520,3110892543,RO
+3110892544,3110893567,NL
+3110893568,3110894591,CZ
+3110894592,3110895615,TR
+3110895616,3110896639,IE
+3110896640,3110897663,GB
+3110897664,3110898687,MD
+3110898688,3110899711,BG
+3110899712,3110900735,MD
+3110900736,3110901759,TR
+3110901760,3110902783,MD
+3110902784,3110903807,TR
+3110903808,3110904831,RU
+3110904832,3110905855,IR
+3110905856,3110906879,GB
+3110906880,3110907903,DE
+3110907904,3110908927,GB
+3110908928,3110909951,MD
+3110909952,3110910975,DE
+3110910976,3110911999,BG
+3110912000,3110914047,RU
+3110914048,3110915071,AT
+3110915072,3110916095,ES
+3110916096,3110917119,RU
+3110917120,3110918143,UA
+3110918144,3110919167,DE
+3110919168,3110920191,RU
+3110920192,3110921215,NL
+3110921216,3110922239,DE
+3110922240,3110923263,GB
+3110923264,3110924287,FR
+3110924288,3110925311,SA
+3110925312,3110926335,CH
+3110926336,3110927359,LU
+3110927360,3110928383,DK
+3110928384,3110929407,CH
+3110929408,3110930431,IE
+3110930432,3110931455,GB
+3110931456,3110932479,DK
+3110932480,3110933503,IE
+3110933504,3110934527,RU
+3110934528,3110935551,IT
+3110935552,3110936575,TR
+3110936576,3110937599,DE
+3110937600,3110938623,CH
+3110938624,3110941695,GB
+3110941696,3110942719,UA
+3110942720,3110943743,IT
+3110943744,3110944767,IR
+3110944768,3110945791,DK
+3110945792,3110946815,IT
+3110946816,3110947839,IR
+3110947840,3110948863,DK
+3110948864,3110949887,IR
+3110949888,3110950911,SE
+3110950912,3110951935,DK
+3110951936,3110952959,GB
+3110952960,3110953983,NL
+3110953984,3110955007,IS
+3110955008,3110956031,GB
+3110956032,3110957055,DE
+3110957056,3110958079,RU
+3110958080,3110959103,GB
+3110959104,3110960127,JO
+3110960128,3110961151,GB
+3110961152,3110962175,IR
+3110962176,3110963199,DK
+3110963200,3110965247,GB
+3110965248,3110966271,NL
+3110966272,3110967295,IL
+3110967296,3110968319,PT
+3110968320,3110969343,DE
+3110969344,3110970367,NL
+3110970368,3110971391,CH
+3110971392,3110972415,GB
+3110972416,3110973439,FR
+3110973440,3110974463,SA
+3110974464,3110975487,DE
+3110975488,3110977535,IT
+3110977536,3110978559,JO
+3110978560,3110979583,DE
+3110979584,3110980607,FR
+3110980608,3110982655,UA
+3110982656,3110983679,RO
+3110983680,3110984703,PL
+3110984704,3110985727,IT
+3110985728,3110986751,IE
+3110986752,3110987775,GB
+3110987776,3110988799,NL
+3110988800,3110989823,DE
+3110989824,3110990847,CH
+3110990848,3110992895,IR
+3110992896,3110993919,RO
+3110993920,3110994943,GB
+3110994944,3110995967,PL
+3110995968,3110996991,RU
+3110996992,3110998015,DE
+3110998016,3110999039,ES
+3110999040,3111000063,IT
+3111000064,3111001087,RO
+3111001088,3111002111,IR
+3111002112,3111003135,DE
+3111003136,3111004159,GG
+3111004160,3111005183,DE
+3111005184,3111006207,RU
+3111006208,3111007231,PL
+3111007232,3111008255,GB
+3111008256,3111009279,RU
+3111009280,3111010303,BG
+3111010304,3111012351,ES
+3111012352,3111013375,CH
+3111013376,3111014399,ES
+3111014400,3111015423,DK
+3111015424,3111016447,FR
+3111016448,3111017471,CH
+3111017472,3111018495,NL
+3111018496,3111019519,FR
+3111019520,3111020543,CH
+3111020544,3111021567,SY
+3111021568,3111022591,IL
+3111022592,3111023615,NL
+3111023616,3111024639,IT
+3111024640,3111025663,AT
+3111025664,3111026687,DE
+3111026688,3111027711,RU
+3111027712,3111028735,UA
+3111028736,3111029759,AT
+3111029760,3111031807,SK
+3111031808,3111032831,NO
+3111032832,3111033855,DE
+3111033856,3111035903,ES
+3111035904,3111036927,GE
+3111036928,3111037951,RU
+3111037952,3111038975,NL
+3111038976,3111041023,GB
+3111041024,3111042047,CH
+3111042048,3111043071,GB
+3111043072,3111044095,FR
+3111044096,3111045119,CH
+3111045120,3111046143,NL
+3111046144,3111047167,CZ
+3111047168,3111048191,RU
+3111048192,3111049215,ES
+3111049216,3111050239,IR
+3111050240,3111051263,CH
+3111051264,3111052287,ES
+3111052288,3111053311,IR
+3111053312,3111054335,SA
+3111054336,3111055359,IR
+3111055360,3111056383,TR
+3111056384,3111057407,IR
+3111057408,3111058431,GB
+3111058432,3111059455,IR
+3111059456,3111060479,ES
+3111060480,3111061503,LB
+3111061504,3111063551,IR
+3111063552,3111064575,FR
+3111064576,3111065599,GB
+3111065600,3111066623,RU
+3111066624,3111067647,NL
+3111067648,3111068671,DE
+3111068672,3111069695,IS
+3111069696,3111070719,IR
+3111070720,3111071743,FR
+3111071744,3111072767,UA
+3111072768,3111074815,FR
+3111074816,3111075839,DE
+3111075840,3111076863,IR
+3111076864,3111077887,AZ
+3111077888,3111078911,NL
+3111078912,3111079935,IT
+3111079936,3111080959,NL
+3111080960,3111081983,RU
+3111081984,3111083007,HU
+3111083008,3111084031,UA
+3111084032,3111085055,CZ
+3111085056,3111086079,RU
+3111086080,3111087103,KZ
+3111087104,3111088127,CZ
+3111088128,3111089151,IE
+3111089152,3111090175,UA
+3111090176,3111091199,NL
+3111091200,3111092223,AT
+3111092224,3111093247,IR
+3111093248,3111094271,PL
+3111094272,3111095295,IR
+3111095296,3111096319,IE
+3111096320,3111097343,AT
+3111097344,3111098367,ES
+3111098368,3111099391,SE
+3111099392,3111100415,CH
+3111100416,3111101439,LB
+3111101440,3111102463,UA
+3111102464,3111103487,DE
+3111103488,3111104511,DK
+3111104512,3111105535,CH
+3111105536,3111106559,LT
+3111106560,3111107583,ES
+3111107584,3111108607,HR
+3111108608,3111109631,DE
+3111109632,3111110655,BE
+3111110656,3111111679,NL
+3111111680,3111112703,BE
+3111112704,3111113727,HU
+3111113728,3111114751,BG
+3111114752,3111115775,RU
+3111115776,3111116799,DE
+3111116800,3111117823,GB
+3111117824,3111118847,ES
+3111118848,3111119871,TR
+3111119872,3111120895,FR
+3111120896,3111121919,SE
+3111121920,3111122943,TR
+3111122944,3111123967,IT
+3111123968,3111126015,ES
+3111126016,3111127039,IT
+3111127040,3111128063,CH
+3111128064,3111129087,UA
+3111129088,3111130111,FR
+3111130112,3111131135,RS
+3111131136,3111132159,NO
+3111132160,3111133183,CZ
+3111133184,3111135231,IR
+3111135232,3111136255,PL
+3111136256,3111137279,DE
+3111137280,3111138303,LI
+3111138304,3111139327,CH
+3111139328,3111140351,RU
+3111140352,3111141375,IT
+3111141376,3111142399,NL
+3111142400,3111143423,DE
+3111143424,3111144447,CH
+3111144448,3111145471,ES
+3111145472,3111146495,RU
+3111146496,3111149567,IT
+3111149568,3111150591,GB
+3111150592,3111151615,RU
+3111151616,3111152639,OM
+3111152640,3111153663,NL
+3111153664,3111154687,SE
+3111154688,3111155711,PL
+3111155712,3111156735,UA
+3111156736,3111157759,DE
+3111157760,3111158783,IR
+3111158784,3111159807,CH
+3111159808,3111160831,SE
+3111160832,3111161855,RU
+3111161856,3111162879,IS
+3111162880,3111163903,IR
+3111163904,3111164927,DE
+3111164928,3111165951,HU
+3111165952,3111166975,GB
+3111166976,3111167999,CZ
+3111168000,3111169023,IR
+3111169024,3111170047,UA
+3111170048,3111171071,DE
+3111171072,3111172095,PL
+3111172096,3111173119,RO
+3111173120,3111174143,IQ
+3111174144,3111175167,AZ
+3111175168,3111176191,IT
+3111176192,3111177215,YE
+3111177216,3111178239,IS
+3111178240,3111179263,DK
+3111179264,3111180287,IT
+3111180288,3111181311,DE
+3111181312,3111182335,GB
+3111182336,3111183359,RU
+3111183360,3111184383,FR
+3111184384,3111185407,IQ
+3111185408,3111186431,RU
+3111186432,3111189503,GB
+3111189504,3111190527,DE
+3111190528,3111191551,GB
+3111191552,3111192575,DE
+3111192576,3111193599,TR
+3111193600,3111194623,RU
+3111194624,3111195647,GB
+3111195648,3111196671,CH
+3111196672,3111197695,GB
+3111197696,3111198719,RU
+3111198720,3111199743,PL
+3111199744,3111200767,KZ
+3111200768,3111201791,ES
+3111201792,3111202815,SK
+3111202816,3111203839,FR
+3111203840,3111204863,NL
+3111204864,3111205887,IR
+3111205888,3111206911,GB
+3111206912,3111207935,FR
+3111207936,3111208959,GB
+3111208960,3111211007,RU
+3111211008,3111212031,GB
+3111212032,3111214079,NL
+3111214080,3111215103,GB
+3111215104,3111216127,SE
+3111216128,3111217151,AT
+3111217152,3111218175,IR
+3111218176,3111219199,RU
+3111219200,3111220223,IR
+3111220224,3111221247,RU
+3111221248,3111223295,DE
+3111223296,3111224319,GB
+3111224320,3111225343,KZ
+3111225344,3111226367,RU
+3111226368,3111227391,PT
+3111227392,3111228415,DE
+3111228416,3111230463,IR
+3111230464,3111231487,PT
+3111231488,3111232511,FR
+3111232512,3111233535,DE
+3111233536,3111234559,LV
+3111234560,3111235583,NL
+3111235584,3111236607,SE
+3111236608,3111237631,GB
+3111237632,3111238655,ES
+3111238656,3111239679,GB
+3111239680,3111240703,ES
+3111240704,3111241727,NL
+3111241728,3111242751,RU
+3111242752,3111243775,GB
+3111243776,3111244799,RU
+3111244800,3111245823,NL
+3111245824,3111246847,GB
+3111246848,3111247871,TR
+3111247872,3111248895,NL
+3111248896,3111249919,DK
+3111249920,3111250943,IE
+3111250944,3111251967,ES
+3111251968,3111252991,GB
+3111252992,3111254015,RU
+3111254016,3111255039,IE
+3111255040,3111256063,EE
+3111256064,3111257087,IT
+3111257088,3111259135,FR
+3111259136,3111261183,DE
+3111261184,3111262207,TR
+3111262208,3111266303,NL
+3111266304,3111267327,DE
+3111267328,3111268351,DK
+3111268352,3111269375,BE
+3111269376,3111270399,RO
+3111270400,3111271423,NO
+3111271424,3111272447,NL
+3111272448,3111273471,ES
+3111273472,3111274495,SA
+3111274496,3111275519,IR
+3111275520,3111276543,NL
+3111276544,3111277567,IT
+3111277568,3111278591,RO
+3111278592,3111279615,LB
+3111279616,3111280639,PL
+3111280640,3111281663,GB
+3111281664,3111282687,FR
+3111282688,3111283711,SE
+3111283712,3111284735,IT
+3111284736,3111285759,AL
+3111285760,3111286783,IT
+3111286784,3111287807,IL
+3111287808,3111288831,DE
+3111288832,3111289855,FR
+3111289856,3111290879,DE
+3111290880,3111291903,UA
+3111291904,3111292927,NL
+3111292928,3111293951,SI
+3111293952,3111294975,GB
+3111294976,3111295999,US
+3111296000,3111297023,NL
+3111297024,3111298047,IE
+3111298048,3111299071,NL
+3111299072,3111300095,DE
+3111300096,3111301119,ES
+3111301120,3111302143,EE
+3111302144,3111303167,BG
+3111303168,3111304191,NL
+3111304192,3111305215,IR
+3111305216,3111306239,TR
+3111306240,3111307263,NL
+3111307264,3111308287,DE
+3111308288,3111309311,GB
+3111309312,3111310335,CH
+3111310336,3111313407,DE
+3111313408,3111314431,AT
+3111314432,3111315455,GB
+3111315456,3111316479,IT
+3111316480,3111317503,NL
+3111317504,3111318527,SY
+3111318528,3111319551,RU
+3111319552,3111320575,SE
+3111320576,3111321599,LB
+3111321600,3111322623,CZ
+3111322624,3111323647,GE
+3111323648,3111324671,CZ
+3111324672,3111325695,MT
+3111325696,3111326719,FI
+3111326720,3111327743,HU
+3111327744,3111328767,DE
+3111328768,3111329791,RO
+3111329792,3111330815,NL
+3111330816,3111331839,UA
+3111331840,3111332863,TR
+3111332864,3111333887,PL
+3111333888,3111334911,DE
+3111334912,3111335935,ES
+3111335936,3111336959,HR
+3111336960,3111337983,GB
+3111337984,3111339007,RO
+3111339008,3111340031,GB
+3111340032,3111341055,CZ
+3111341056,3111342079,IR
+3111342080,3111343103,DE
+3111343104,3111344127,GB
+3111344128,3111345151,NL
+3111345152,3111346175,RO
+3111346176,3111347199,RU
+3111347200,3111348223,LB
+3111348224,3111349247,DE
 3113710318,3113710318,CA
 3120562176,3120594943,CO
 3120594944,3120599039,AR
@@ -60876,7 +64784,9 @@
 3120693248,3120726015,BO
 3120726016,3120734207,HN
 3120734208,3120735999,RU
-3120736000,3120738303,BZ
+3120736000,3120736255,BZ
+3120736256,3120736511,EC
+3120736512,3120738303,BZ
 3120738304,3120742399,CW
 3120742400,3120754687,PY
 3120754688,3120755711,CR
@@ -61226,7 +65136,7 @@
 3158861056,3158861311,UA
 3158861312,3158861567,IE
 3158861568,3158861823,AE
-3158861824,3158862079,IN
+3158861824,3158862079,DE
 3158862080,3158862335,GB
 3158862336,3158862591,NL
 3158862592,3158862847,FR
@@ -61434,7 +65344,11 @@
 3161948160,3161964543,RO
 3161964544,3161980927,ES
 3161980928,3161989119,SK
-3161989120,3161997311,RU
+3161989120,3161989631,TR
+3161989632,3161990143,NL
+3161990144,3161991167,TR
+3161991168,3161993215,NL
+3161993216,3161997311,RU
 3161997312,3162005503,DK
 3162005504,3162013695,RS
 3162013696,3162021887,IL
@@ -61481,7 +65395,9 @@
 3162316800,3162324991,PL
 3162324992,3162327039,IE
 3162327040,3162329087,CH
-3162329088,3162331135,IR
+3162329088,3162329225,IR
+3162329226,3162329226,IE
+3162329227,3162331135,IR
 3162331136,3162333183,GB
 3162333184,3162341375,IT
 3162341376,3162349567,PL
@@ -61511,7 +65427,7 @@
 3162636288,3162669055,FR
 3162669056,3162681343,RU
 3162681344,3162682367,UA
-3162682368,3162682879,RU
+3162682368,3162682879,MD
 3162682880,3162683135,IE
 3162683136,3162683391,ES
 3162683392,3162685439,RU
@@ -61593,9 +65509,7 @@
 3164947068,3164947071,IT
 3164947072,3164947579,FR
 3164947580,3164947583,IT
-3164947584,3164949135,FR
-3164949136,3164949151,NL
-3164949152,3164950695,FR
+3164947584,3164950695,FR
 3164950696,3164950703,NL
 3164950704,3164951663,FR
 3164951664,3164951671,PL
@@ -61665,7 +65579,9 @@
 3164973424,3164973663,FR
 3164973664,3164973695,GB
 3164973696,3164974335,FR
-3164974336,3164974463,GB
+3164974336,3164974437,GB
+3164974438,3164974438,IT
+3164974439,3164974463,GB
 3164974464,3164974527,FR
 3164974528,3164974559,ES
 3164974560,3164974651,FR
@@ -61684,8 +65600,7 @@
 3165388800,3165417471,MT
 3165417472,3165421567,DE
 3165421568,3165425663,IE
-3165425664,3165429759,GB
-3165429760,3165437951,RO
+3165425664,3165437951,GB
 3165437952,3165439487,AT
 3165439488,3165439743,GB
 3165439744,3165439999,AT
@@ -61702,7 +65617,10 @@
 3165444096,3165444351,BR
 3165444352,3165444607,ZA
 3165444608,3165444863,IT
-3165444864,3165454335,AT
+3165444864,3165445119,NL
+3165445120,3165445375,AT
+3165445376,3165445631,CA
+3165445632,3165454335,AT
 3165454336,3165519871,RO
 3165519872,3165585407,DE
 3165585408,3165650943,CZ
@@ -61759,9 +65677,7 @@
 3167784960,3167797247,IR
 3167797248,3167798271,MD
 3167798272,3167799295,RO
-3167799296,3167800319,MD
-3167800320,3167801343,RO
-3167801344,3167803391,MD
+3167799296,3167803391,MD
 3167803392,3167804159,RO
 3167804160,3167804415,ES
 3167804416,3167805439,GB
@@ -61776,8 +65692,8 @@
 3167843328,3167844351,RO
 3167844352,3167846399,GB
 3167846400,3167866879,IR
-3167866880,3167868927,RO
-3167868928,3167879167,MD
+3167866880,3167870975,RO
+3167870976,3167879167,MD
 3167879168,3167895551,DE
 3167895552,3167899647,IR
 3167899648,3167902719,RO
@@ -61813,7 +65729,9 @@
 3168002048,3168005887,RO
 3168005888,3168006143,NL
 3168006144,3168008191,SE
-3168008192,3168011775,RO
+3168008192,3168011263,RO
+3168011264,3168011519,MD
+3168011520,3168011775,RO
 3168011776,3168012287,IR
 3168012288,3168014335,MD
 3168014336,3168015359,ES
@@ -61826,7 +65744,10 @@
 3168018688,3168020479,RO
 3168020480,3168022527,MD
 3168022528,3168034815,IR
-3168034816,3168039935,RO
+3168034816,3168037887,RO
+3168037888,3168038399,SE
+3168038400,3168038911,RO
+3168038912,3168039935,MD
 3168039936,3168040959,BE
 3168040960,3168050431,RO
 3168050432,3168050687,MD
@@ -61851,7 +65772,8 @@
 3168108544,3168110335,RO
 3168110336,3168110591,GB
 3168110592,3168110847,IT
-3168110848,3168111615,RO
+3168110848,3168111359,RO
+3168111360,3168111615,IT
 3168111616,3168112639,FR
 3168112640,3168116735,IR
 3168116736,3168120831,RO
@@ -61869,13 +65791,24 @@
 3168131840,3168135679,RO
 3168135680,3168136191,CZ
 3168136192,3168137471,RO
-3168137472,3168137983,EU
+3168137472,3168137727,MD
+3168137728,3168137983,EU
 3168137984,3168138239,NL
-3168138240,3168139263,RO
+3168138240,3168139263,MD
 3168139264,3168141311,GB
-3168141312,3168147455,RO
+3168141312,3168143615,RO
+3168143616,3168143871,UA
+3168143872,3168144383,RO
+3168144384,3168144639,SG
+3168144640,3168145151,RO
+3168145152,3168145407,UA
+3168145408,3168147455,RO
 3168147456,3168147967,FR
-3168147968,3168156671,RO
+3168147968,3168154111,RO
+3168154112,3168154367,SG
+3168154368,3168155135,RO
+3168155136,3168155391,IT
+3168155392,3168156671,RO
 3168156672,3168157695,MD
 3168157696,3168161791,IR
 3168161792,3168164351,RO
@@ -61910,14 +65843,23 @@
 3168212736,3168212991,FR
 3168212992,3168215551,RO
 3168215552,3168215807,TH
-3168215808,3168237567,RO
+3168215808,3168223743,RO
+3168223744,3168224255,MD
+3168224256,3168237567,RO
 3168237568,3168239615,PS
 3168239616,3168243711,IR
 3168243712,3168247807,RO
 3168247808,3168264191,IR
-3168264192,3168268287,RO
-3168268288,3168269311,MD
-3168269312,3168272383,RO
+3168264192,3168265727,RO
+3168265728,3168265855,FR
+3168265856,3168265983,RO
+3168265984,3168266239,GR
+3168266240,3168267263,RO
+3168267264,3168269311,MD
+3168269312,3168270591,RO
+3168270592,3168270847,MD
+3168270848,3168271359,RO
+3168271360,3168272383,MD
 3168272384,3168534527,IT
 3168534528,3168796671,GB
 3168796672,3168829439,FR
@@ -61955,8 +65897,8 @@
 3169714176,3169779711,FI
 3169779712,3169845247,UA
 3169845248,3169854463,RO
-3169854464,3169855487,IR
-3169855488,3169863167,RO
+3169854464,3169854719,ES
+3169854720,3169863167,RO
 3169863168,3169863423,MD
 3169863424,3169869823,RO
 3169869824,3169878015,MD
@@ -61965,11 +65907,17 @@
 3169886208,3169894399,GB
 3169894400,3169895423,ES
 3169895424,3169895679,IR
-3169895680,3169899263,RO
+3169895680,3169897471,RO
+3169897472,3169898495,ES
+3169898496,3169899263,RO
 3169899264,3169899391,CN
 3169899392,3169899519,TW
 3169899520,3169899775,IR
-3169899776,3169913855,RO
+3169899776,3169902079,RO
+3169902080,3169902591,SE
+3169902592,3169905663,RO
+3169905664,3169906687,ES
+3169906688,3169913855,RO
 3169913856,3169914111,GB
 3169914112,3169921023,RO
 3169921024,3169923071,GB
@@ -62051,9 +65999,12 @@
 3187826688,3187834879,AR
 3187834880,3187843071,CW
 3187843072,3187845119,AW
-3187845120,3187851263,CW
+3187845120,3187849215,CW
+3187849216,3187849471,CO
+3187849472,3187851263,CW
 3187851264,3187855359,PY
-3187855360,3187857407,PA
+3187855360,3187855871,CY
+3187855872,3187857407,PA
 3187857408,3187859455,CR
 3187859456,3187863551,PA
 3187863552,3187908607,AR
@@ -62070,7 +66021,9 @@
 3187935608,3187935615,HN
 3187935616,3187936047,GT
 3187936048,3187936063,HN
-3187936064,3187936711,GT
+3187936064,3187936583,GT
+3187936584,3187936591,HN
+3187936592,3187936711,GT
 3187936712,3187936719,HN
 3187936720,3187937799,GT
 3187937800,3187937807,HN
@@ -62088,11 +66041,17 @@
 3187943128,3187943135,HN
 3187943136,3187943399,GT
 3187943400,3187943403,HN
-3187943404,3187944671,GT
+3187943404,3187943551,GT
+3187943552,3187943679,HN
+3187943680,3187944383,GT
+3187944384,3187944399,HN
+3187944400,3187944671,GT
 3187944672,3187944679,HN
 3187944680,3187944773,GT
 3187944774,3187944774,HN
-3187944775,3187945971,GT
+3187944775,3187944831,GT
+3187944832,3187944835,HN
+3187944836,3187945971,GT
 3187945972,3187945975,HN
 3187945976,3187946111,GT
 3187946112,3187946239,HN
@@ -62154,10 +66113,11 @@
 3188240384,3188241407,CO
 3188241408,3188242431,EC
 3188242432,3188244479,AR
-3188244480,3188260863,CO
+3188244480,3188248575,CO
+3188248576,3188248703,CL
+3188248704,3188260863,CO
 3188260864,3188269055,AR
-3188269056,3188269311,MX
-3188269312,3188269439,VE
+3188269056,3188269439,MX
 3188269440,3188269567,CO
 3188269568,3188269823,MX
 3188269824,3188270079,VE
@@ -62246,9 +66206,7 @@
 3191108640,3191108959,PE
 3191108960,3191108991,CO
 3191108992,3191109119,PE
-3191109120,3191109631,MX
-3191109632,3191110655,PE
-3191110656,3191111167,MX
+3191109120,3191111167,MX
 3191111168,3191111679,PE
 3191111680,3191128063,PY
 3191128064,3191132159,EC
@@ -62319,8 +66277,8 @@
 3191696384,3191701503,US
 3191701504,3191702527,CL
 3191702528,3191703039,US
-3191703040,3191704063,CO
-3191704064,3191704575,US
+3191703040,3191703551,CO
+3191703552,3191704575,US
 3191704576,3191704831,CO
 3191704832,3191705343,US
 3191705344,3191705599,CO
@@ -62407,7 +66365,9 @@
 3193735168,3193735679,US
 3193735680,3193736191,AR
 3193736192,3193736447,US
-3193736448,3193737215,AR
+3193736448,3193736703,AR
+3193736704,3193736959,US
+3193736960,3193737215,AR
 3193737216,3193739007,US
 3193739008,3193739263,AR
 3193739264,3193740799,US
@@ -62497,7 +66457,8 @@
 3194077184,3194085375,CO
 3194085376,3194093567,VE
 3194093568,3194126335,SR
-3194126336,3194127359,GT
+3194126336,3194127103,GT
+3194127104,3194127359,BR
 3194127360,3194128383,PE
 3194128384,3194129407,NI
 3194129408,3194129663,AR
@@ -62637,7 +66598,8 @@
 3194806272,3194814463,AR
 3194814464,3194818559,PA
 3194818560,3194830847,AR
-3194830848,3194839039,PA
+3194830848,3194831871,BR
+3194831872,3194839039,PA
 3194839040,3194863615,CO
 3194863616,3194871807,HN
 3194871808,3194879999,BO
@@ -62724,7 +66686,9 @@
 3195205632,3195206655,PE
 3195206656,3195207679,CL
 3195207680,3195211775,GT
-3195211776,3195215871,BZ
+3195211776,3195214988,BZ
+3195214989,3195214989,RU
+3195214990,3195215871,BZ
 3195215872,3195224063,AR
 3195224064,3195232255,PA
 3195232256,3195234559,CR
@@ -62789,7 +66753,9 @@
 3195768832,3195772927,AR
 3195772928,3195781119,VE
 3195781120,3195785215,PA
-3195785216,3195789311,HN
+3195785216,3195786991,HN
+3195786992,3195787007,CA
+3195787008,3195789311,HN
 3195789312,3195793407,PA
 3195793408,3195801599,AR
 3195801600,3195803647,HN
@@ -62826,7 +66792,9 @@
 3196583936,3196690687,AR
 3196690688,3196690943,UY
 3196690944,3196846079,AR
-3196846080,3196977151,PA
+3196846080,3196874431,PA
+3196874432,3196874447,PG
+3196874448,3196977151,PA
 3196977152,3197042687,VE
 3197042688,3197075455,CO
 3197075456,3197108223,GT
@@ -62876,7 +66844,9 @@
 3199782912,3199784959,AR
 3199784960,3199785983,EC
 3199785984,3199795199,AR
-3199795200,3199819775,CW
+3199795200,3199815679,CW
+3199815680,3199817727,SX
+3199817728,3199819775,CW
 3199819776,3199820799,CR
 3199820800,3199822847,AR
 3199822848,3199827967,HN
@@ -62983,9 +66953,9 @@
 3203566592,3203566847,PA
 3203566848,3203568639,CO
 3203568640,3203569663,SV
-3203569664,3203570609,CO
-3203570610,3203570610,CR
-3203570611,3203661823,CO
+3203569664,3203570431,CO
+3203570432,3203570687,CR
+3203570688,3203661823,CO
 3203661824,3203923967,AR
 3203923968,3204448255,CO
 3204448256,3208642559,BR
@@ -63023,7 +66993,9 @@
 3210744080,3210744319,CL
 3210744320,3210744575,US
 3210744576,3210744591,BE
-3210744592,3210745343,CL
+3210744592,3210744831,BR
+3210744832,3210745087,CL
+3210745088,3210745343,US
 3210745344,3210745359,RU
 3210745360,3210745375,US
 3210745376,3210745599,CL
@@ -63031,15 +67003,17 @@
 3210745856,3210745871,IT
 3210745872,3210746367,BR
 3210746368,3210746383,SE
-3210746384,3210746879,CL
+3210746384,3210746623,CL
+3210746624,3210746879,US
 3210746880,3210746895,CH
 3210746896,3210747135,CL
 3210747136,3210747903,US
 3210747904,3210748159,BR
 3210748160,3210748175,JP
 3210748176,3210748415,BR
-3210748416,3210749951,CL
-3210749952,3210752255,US
+3210748416,3210748927,US
+3210748928,3210749439,CL
+3210749440,3210752255,US
 3210752256,3210752511,CL
 3210752512,3210755839,US
 3210755840,3210755855,MY
@@ -63050,27 +67024,35 @@
 3210756864,3210757119,RU
 3210757120,3210758911,US
 3210758912,3210759167,GH
-3210759168,3210759423,US
-3210759424,3210762495,CL
-3210762496,3210762751,US
-3210762752,3210763007,CL
-3210763008,3210764031,US
+3210759168,3210764031,US
 3210764032,3210764047,IE
 3210764048,3210764063,US
 3210764064,3210764287,CL
-3210764288,3210764543,US
-3210764544,3210765055,CL
+3210764288,3210764799,US
+3210764800,3210765055,CL
 3210765056,3210765071,SE
 3210765072,3210765311,BR
-3210765312,3210768383,CL
+3210765312,3210765567,CL
+3210765568,3210766079,US
+3210766080,3210766335,CL
+3210766336,3210766591,US
+3210766592,3210766847,CL
+3210766848,3210767103,US
+3210767104,3210767359,CL
+3210767360,3210768127,US
+3210768128,3210768383,CL
 3210768384,3210768639,NL
 3210768640,3210769151,CL
 3210769152,3210769407,NL
-3210769408,3210769919,CL
-3210769920,3210770175,US
-3210770176,3210771199,CL
+3210769408,3210769663,CL
+3210769664,3210770431,US
+3210770432,3210770687,CL
+3210770688,3210770943,US
+3210770944,3210771199,CL
 3210771200,3210771215,TH
-3210771216,3210772991,CL
+3210771216,3210771711,CL
+3210771712,3210771967,US
+3210771968,3210772991,CL
 3210772992,3210773247,US
 3210773248,3210773503,BR
 3210773504,3210773519,PL
@@ -63083,15 +67065,22 @@
 3210775040,3210775295,US
 3210775296,3210775311,CH
 3210775312,3210775551,BR
-3210775552,3210776319,CL
+3210775552,3210775807,US
+3210775808,3210776319,CL
 3210776320,3210776575,US
 3210776576,3210776831,CL
 3210776832,3210777087,US
-3210777088,3210778367,CL
+3210777088,3210777599,CL
+3210777600,3210777855,US
+3210777856,3210778367,CL
 3210778368,3210778623,US
-3210778624,3210779903,CL
-3210779904,3210780159,US
-3210780160,3210782719,CL
+3210778624,3210779135,CL
+3210779136,3210779391,US
+3210779392,3210779647,CL
+3210779648,3210780927,US
+3210780928,3210781183,CL
+3210781184,3210781439,US
+3210781440,3210782719,CL
 3210782720,3210782975,US
 3210782976,3210782991,TR
 3210782992,3210783487,CL
@@ -63100,7 +67089,9 @@
 3210784000,3210784015,JP
 3210784016,3210784511,CL
 3210784512,3210784527,BE
-3210784528,3210785791,CL
+3210784528,3210785279,CL
+3210785280,3210785535,US
+3210785536,3210785791,CL
 3210785792,3210786047,BR
 3210786048,3210786063,AU
 3210786064,3210786303,CL
@@ -63115,28 +67106,26 @@
 3210789376,3210790143,CL
 3210790144,3210790399,US
 3210790400,3210790655,CL
-3210790656,3210790911,US
-3210790912,3210791679,CL
+3210790656,3210791423,US
+3210791424,3210791679,CL
 3210791680,3210791935,US
 3210791936,3210792447,CL
 3210792448,3210792703,US
-3210792704,3210794239,CL
-3210794240,3210794751,US
+3210792704,3210793471,CL
+3210793472,3210793727,US
+3210793728,3210793983,CL
+3210793984,3210794751,US
 3210794752,3210796287,CL
 3210796288,3210797055,US
 3210797056,3210797311,CL
-3210797312,3210797567,US
-3210797568,3210797823,CL
-3210797824,3210798079,US
+3210797312,3210798079,US
 3210798080,3210798847,CL
 3210798848,3210799103,ES
 3210799104,3210799359,US
 3210799360,3210799615,CL
 3210799616,3210800639,US
 3210800640,3210800895,CL
-3210800896,3210801151,US
-3210801152,3210801663,CL
-3210801664,3210802431,US
+3210800896,3210802431,US
 3210802432,3210802687,CL
 3210802688,3210802943,US
 3210802944,3210803071,CL
@@ -63183,28 +67172,28 @@
 3211072058,3211072511,US
 3211072512,3211073023,NL
 3211073024,3211073279,GB
-3211073280,3211073791,US
+3211073280,3211073535,FR
+3211073536,3211073791,US
 3211073792,3211074047,LT
 3211074048,3211074303,NL
 3211074304,3211074559,ES
 3211074560,3211074815,NL
-3211074816,3211075327,DK
+3211074816,3211075071,US
+3211075072,3211075327,DK
 3211075328,3211075583,NL
 3211075584,3211075839,US
 3211075840,3211076095,CL
 3211076096,3211076607,LT
-3211076608,3211078655,US
-3211078656,3211079167,CL
-3211079168,3211079423,NL
-3211079424,3211079679,CL
+3211076608,3211079679,US
 3211079680,3211079935,GB
 3211079936,3211080191,NG
-3211080192,3211080703,CL
+3211080192,3211080447,CL
+3211080448,3211080703,US
 3211080704,3211080959,GB
 3211080960,3211081215,CL
 3211081216,3211081727,CH
-3211081728,3211082239,US
-3211082240,3211082751,GB
+3211081728,3211082495,US
+3211082496,3211082751,GB
 3211082752,3211083007,SG
 3211083008,3211083519,US
 3211083520,3211083775,HK
@@ -63215,10 +67204,10 @@
 3211083872,3211084031,CL
 3211084032,3211084287,DE
 3211084288,3211084303,NL
-3211084304,3211084351,CL
+3211084304,3211084351,DE
 3211084352,3211084367,GB
-3211084368,3211084383,DE
-3211084384,3211084559,CL
+3211084368,3211084543,DE
+3211084544,3211084559,CL
 3211084560,3211084575,DE
 3211084576,3211084671,CL
 3211084672,3211084799,BY
@@ -63256,10 +67245,7 @@
 3211087120,3211087135,DE
 3211087136,3211087359,CL
 3211087360,3211087375,GB
-3211087376,3211087391,DE
-3211087392,3211087631,CL
-3211087632,3211087647,DE
-3211087648,3211087871,CL
+3211087376,3211087871,DE
 3211087872,3211087887,ES
 3211087888,3211087903,DE
 3211087904,3211087999,CL
@@ -63369,35 +67355,26 @@
 3211099776,3211099903,GB
 3211099904,3211099919,CL
 3211099920,3211099935,DE
-3211099936,3211101183,CL
-3211101184,3211101951,US
+3211099936,3211100159,CL
+3211100160,3211101951,US
 3211101952,3211102207,AR
 3211102208,3211104767,AU
-3211104768,3211105791,CL
+3211104768,3211105791,US
 3211105792,3211106303,ES
-3211106304,3211108351,US
-3211108352,3211113471,CL
+3211106304,3211112959,US
+3211112960,3211113471,CL
 3211113472,3211113727,GB
 3211113728,3211113983,LT
-3211113984,3211114495,CL
-3211114496,3211114751,IT
-3211114752,3211115007,US
-3211115008,3211115263,NO
-3211115264,3211115519,BE
-3211115520,3211115775,DK
-3211115776,3211116287,RU
-3211116288,3211116543,US
-3211116544,3211116799,CL
-3211116800,3211117055,US
-3211117056,3211117567,CL
-3211117568,3211122687,US
-3211122688,3211124735,CL
-3211124736,3211128831,US
-3211128832,3211129343,CL
+3211113984,3211114239,US
+3211114240,3211114495,CL
+3211114496,3211116031,US
+3211116032,3211116287,RU
+3211116288,3211129087,US
+3211129088,3211129343,CL
 3211129344,3211129599,SG
 3211129600,3211129855,NL
-3211129856,3211130367,CL
-3211130368,3211132927,US
+3211129856,3211130111,CL
+3211130112,3211132927,US
 3211132928,3211137023,CO
 3211137024,3211141119,AR
 3211141120,3211142143,CL
@@ -63822,7 +67799,7 @@
 3223473232,3223474175,CA
 3223474176,3223477247,US
 3223477248,3223478271,CA
-3223480320,3223481087,US
+3223478272,3223481087,US
 3223481088,3223481343,SE
 3223481344,3223483391,US
 3223483392,3223483647,NL
@@ -63899,7 +67876,9 @@
 3223610880,3223611135,NO
 3223611136,3223611647,SE
 3223611648,3223611903,GB
-3223611904,3223615999,SE
+3223611904,3223612927,SE
+3223612928,3223613183,FR
+3223613184,3223615999,SE
 3223616000,3223616767,GB
 3223616768,3223617535,SE
 3223617536,3223617791,NO
@@ -63910,7 +67889,8 @@
 3223627776,3223628031,DE
 3223628032,3223628287,SE
 3223628288,3223628543,ES
-3223628544,3223630591,SE
+3223628544,3223630079,SE
+3223630080,3223630591,FR
 3223630592,3223630847,GB
 3223630848,3223634431,SE
 3223634432,3223634687,US
@@ -63924,7 +67904,8 @@
 3223640832,3223641087,GB
 3223641088,3223644415,SE
 3223644416,3223644671,DE
-3223644672,3223646207,SE
+3223644672,3223644927,FR
+3223644928,3223646207,SE
 3223646208,3223646463,IT
 3223646464,3223646975,SE
 3223646976,3223647231,IT
@@ -63956,7 +67937,7 @@
 3223902464,3223902719,CA
 3223902720,3223905279,US
 3223905280,3223905535,FI
-3223905536,3223905791,US
+3223905536,3223906303,US
 3223906304,3223909375,CA
 3223909376,3223911935,US
 3223911936,3223912191,CA
@@ -64028,9 +68009,7 @@
 3224030720,3224030975,CA
 3224030976,3224038655,US
 3224038656,3224038911,AU
-3224038912,3224042751,US
-3224042752,3224043007,DE
-3224043008,3224084991,US
+3224038912,3224084991,US
 3224084992,3224087551,SE
 3224087552,3224088063,US
 3224088064,3224088319,AU
@@ -64485,7 +68464,7 @@
 3225747712,3225747967,CA
 3225747968,3225757695,US
 3225757696,3225758719,CA
-3225759232,3225763839,US
+3225758720,3225763839,US
 3225763840,3225764095,BE
 3225764096,3225764863,US
 3225764864,3225765887,CA
@@ -64540,13 +68519,24 @@
 3225882368,3225882623,DE
 3225882624,3225882879,SE
 3225882880,3225883391,DE
-3225883392,3225885183,SE
+3225883392,3225884927,SE
+3225884928,3225885183,NL
 3225885184,3225885695,AT
-3225885696,3225887999,SE
+3225885696,3225886719,SE
+3225886720,3225886975,NO
+3225886976,3225887231,SE
+3225887232,3225887487,DK
+3225887488,3225887999,SE
 3225888000,3225888255,GB
-3225888256,3225894399,SE
+3225888256,3225892351,SE
+3225892352,3225892863,FR
+3225892864,3225894399,SE
 3225894400,3225895423,GB
-3225895424,3225905407,SE
+3225895424,3225902335,SE
+3225902336,3225902591,NL
+3225902592,3225902847,SE
+3225902848,3225903103,NL
+3225903104,3225905407,SE
 3225905408,3225905663,IT
 3225905664,3225913855,SE
 3225913856,3225914111,DE
@@ -64622,7 +68612,9 @@
 3226141696,3226141951,US
 3226141952,3226143487,CA
 3226143488,3226143743,US
-3226143744,3226156543,CA
+3226143744,3226146559,CA
+3226146560,3226146815,US
+3226146816,3226156543,CA
 3226156544,3226156799,US
 3226156800,3226157567,CA
 3226157568,3226157823,US
@@ -64652,8 +68644,8 @@
 3226237696,3226240255,DE
 3226240256,3226240511,US
 3226240512,3226241535,DE
-3226241536,3226241791,AT
-3226241792,3226248447,DE
+3226241536,3226241791,NL
+3226241792,3226248191,DE
 3226248448,3226248703,IE
 3226248704,3226250495,DE
 3226250496,3226251263,US
@@ -64784,7 +68776,7 @@
 3226658304,3226658559,AU
 3226658560,3226661119,US
 3226661120,3226661375,NL
-3226661888,3226664959,US
+3226661376,3226664959,US
 3226664960,3226690815,FI
 3226690816,3226691071,CA
 3226691072,3226691327,NL
@@ -64810,7 +68802,7 @@
 3226716672,3226716927,GB
 3226716928,3226718207,US
 3226720768,3226721279,JP
-3226721280,3226721791,US
+3226721280,3226722047,US
 3226722048,3226722303,NL
 3226722304,3226722559,AU
 3226722560,3226723583,US
@@ -65138,7 +69130,9 @@
 3227461960,3227461963,US
 3227461964,3227464447,CA
 3227464448,3227464575,US
-3227464576,3227465147,CA
+3227464576,3227464663,CA
+3227464664,3227464667,US
+3227464668,3227465147,CA
 3227465148,3227465151,US
 3227465152,3227466135,CA
 3227466136,3227466143,US
@@ -65220,7 +69214,9 @@
 3227756506,3227756506,US
 3227756507,3227762655,CA
 3227762656,3227762671,US
-3227762672,3227765503,CA
+3227762672,3227765480,CA
+3227765481,3227765482,US
+3227765483,3227765503,CA
 3227765504,3227765759,US
 3227765760,3227777759,CA
 3227777760,3227777763,US
@@ -65363,7 +69359,7 @@
 3227932672,3227932927,US
 3227932928,3227933183,DE
 3227933184,3227933695,US
-3227933696,3227933951,AU
+3227933696,3227933951,NZ
 3227933952,3227934463,US
 3227934464,3227934719,CH
 3227934720,3227947519,US
@@ -65454,7 +69450,9 @@
 3228100608,3228101119,AU
 3228101120,3228102143,US
 3228102144,3228102399,NL
-3228102400,3228103935,US
+3228102400,3228103423,US
+3228103424,3228103679,CA
+3228103680,3228103935,US
 3228103936,3228104191,FR
 3228104192,3228104703,AU
 3228104704,3228104959,DK
@@ -65490,6 +69488,7 @@
 3228264448,3228264703,NI
 3228264704,3228265983,US
 3228265984,3228266239,IE
+3228266240,3228266495,PR
 3228266496,3228267007,AU
 3228267008,3228267263,NL
 3228267264,3228269055,US
@@ -65570,10 +69569,11 @@
 3228368896,3228380415,DE
 3228380416,3228380671,US
 3228380672,3228380927,DE
-3228381184,3228388095,DE
+3228381184,3228387839,DE
 3228388096,3228388351,US
-3228388352,3228393727,DE
-3228393984,3228394239,DE
+3228388352,3228392447,DE
+3228392448,3228392959,US
+3228392960,3228393727,DE
 3228394240,3228394495,US
 3228394752,3228395263,DE
 3228395264,3228395775,US
@@ -65589,11 +69589,12 @@
 3228406016,3228406271,US
 3228406272,3228406527,IN
 3228406528,3228407039,FR
-3228407040,3228424703,DE
+3228407296,3228424447,DE
 3228424704,3228424959,US
-3228425216,3228430847,DE
+3228425216,3228430335,DE
+3228430592,3228430847,DE
 3228430848,3228431103,MU
-3228431104,3228434431,DE
+3228431872,3228434431,DE
 3228434432,3228456191,US
 3228456192,3228456447,CA
 3228456448,3228457471,US
@@ -65689,7 +69690,9 @@
 3229160960,3229161471,DE
 3229161472,3229161727,SE
 3229161728,3229161983,GB
-3229161984,3229164287,SE
+3229161984,3229163263,SE
+3229163264,3229163519,ES
+3229163520,3229164287,SE
 3229164288,3229164543,DK
 3229164544,3229165055,GB
 3229165056,3229165311,NO
@@ -65697,15 +69700,23 @@
 3229167104,3229167615,IT
 3229167616,3229171711,SE
 3229171712,3229172223,GB
-3229172224,3229182463,SE
+3229172224,3229173503,SE
+3229173504,3229173759,IT
+3229173760,3229182463,SE
 3229182464,3229182975,GB
 3229182976,3229183999,SE
 3229184000,3229184511,GB
-3229184512,3229186815,SE
+3229184512,3229186559,SE
+3229186560,3229186815,IT
 3229186816,3229187327,ES
-3229187328,3229187583,SE
+3229187328,3229187583,IT
 3229187584,3229187839,DK
-3229187840,3229195263,SE
+3229187840,3229192959,SE
+3229192960,3229193727,FR
+3229193728,3229194239,SE
+3229194240,3229194495,FR
+3229194496,3229195007,SE
+3229195008,3229195263,NL
 3229195264,3229196287,DE
 3229196288,3229196799,SE
 3229196800,3229197311,NL
@@ -65720,12 +69731,21 @@
 3229200896,3229201151,DE
 3229201152,3229201663,SE
 3229201664,3229201919,DK
-3229201920,3229202943,SE
-3229202944,3229203199,NL
+3229201920,3229202431,SE
+3229202432,3229202687,ES
+3229202688,3229203199,NL
 3229203200,3229203967,GB
-3229203968,3229205503,SE
+3229203968,3229204223,SE
+3229204224,3229204479,IT
+3229204480,3229205503,SE
 3229205504,3229206015,GB
-3229206016,3229220863,SE
+3229206016,3229211647,SE
+3229211648,3229211903,IT
+3229211904,3229212927,SE
+3229212928,3229213183,DE
+3229213184,3229219583,SE
+3229219584,3229219839,DE
+3229219840,3229220863,SE
 3229220864,3229221119,US
 3229221120,3229245439,GB
 3229245440,3229246463,US
@@ -65783,7 +69803,8 @@
 3229415168,3229415679,NL
 3229415680,3229415935,CA
 3229415936,3229483007,DE
-3229483008,3229499647,FI
+3229483008,3229483263,US
+3229483264,3229499647,FI
 3229499648,3229614847,US
 3229614848,3229615103,GB
 3229615104,3229679103,US
@@ -65872,11 +69893,11 @@
 3229939456,3229940735,KR
 3229940736,3229940991,CH
 3229940992,3229941247,AU
-3229941248,3229941503,US
+3229941248,3229941759,US
 3229941760,3229942271,CA
 3229942272,3229944319,US
 3229944320,3229944575,AU
-3229944576,3229945087,US
+3229944576,3229945343,US
 3229945344,3229945599,AU
 3229945600,3229945855,NL
 3229945856,3229947135,US
@@ -65966,7 +69987,7 @@
 3230120192,3230120447,NL
 3230120448,3230120703,US
 3230120704,3230120959,PT
-3230120960,3230125567,US
+3230120960,3230125823,US
 3230125824,3230126335,AU
 3230126336,3230126591,US
 3230126592,3230126847,AU
@@ -65982,7 +70003,7 @@
 3230132992,3230137599,US
 3230137600,3230137855,NL
 3230137856,3230138111,PL
-3230138368,3230140159,US
+3230138112,3230140159,US
 3230140160,3230140415,MT
 3230140416,3230140671,US
 3230140672,3230140927,FI
@@ -66005,6 +70026,7 @@
 3230151168,3230151423,US
 3230151424,3230151679,NL
 3230151680,3230151935,PT
+3230151936,3230152191,CA
 3230152192,3230152447,FR
 3230152448,3230153215,BF
 3230153216,3230153471,FR
@@ -66013,12 +70035,12 @@
 3230153984,3230154239,NL
 3230154240,3230156543,US
 3230156544,3230164735,FI
-3230164736,3230167295,US
+3230164736,3230167551,US
 3230167552,3230168063,CA
 3230168064,3230177791,US
 3230177792,3230178303,GB
 3230178304,3230178559,CH
-3230178816,3230210047,US
+3230178560,3230210047,US
 3230210048,3230210303,CA
 3230210304,3230211839,US
 3230211840,3230212095,CN
@@ -66081,7 +70103,7 @@
 3230267136,3230267903,CA
 3230267904,3230269695,US
 3230269696,3230271743,GB
-3230272000,3230291455,US
+3230271744,3230291455,US
 3230291456,3230291711,NL
 3230291712,3230295039,US
 3230295040,3230295295,AU
@@ -66097,7 +70119,7 @@
 3230316800,3230317311,CA
 3230317312,3230317567,US
 3230317568,3230317823,AU
-3230318080,3230318591,US
+3230317824,3230318591,US
 3230318592,3230318847,NL
 3230318848,3230321663,US
 3230321664,3230321919,PT
@@ -66109,18 +70131,41 @@
 3230332928,3230333183,GB
 3230333184,3230333695,US
 3230333696,3230333951,AU
-3230333952,3230334975,US
-3230334976,3230354943,CA
+3230333952,3230335231,US
+3230335232,3230335743,CA
+3230335744,3230335999,US
+3230336000,3230336255,CA
+3230336256,3230336511,US
+3230336512,3230339583,CA
+3230339584,3230339839,US
+3230339840,3230340095,CA
+3230340096,3230340351,US
+3230340352,3230350847,CA
+3230350848,3230351103,US
+3230351104,3230354943,CA
 3230354944,3230355199,FR
 3230355200,3230365183,CA
 3230365184,3230365439,US
-3230365440,3230368767,CA
-3230368768,3230370303,US
+3230365440,3230367743,CA
+3230367744,3230367999,US
+3230368000,3230368511,CA
+3230368512,3230370303,US
 3230370304,3230370559,CA
-3230370816,3230400511,CA
+3230370560,3230370815,US
+3230370816,3230372607,CA
+3230372608,3230372863,US
+3230372864,3230383359,CA
+3230383360,3230383615,US
+3230383616,3230384127,CA
+3230384128,3230384383,MF
+3230384384,3230387455,CA
+3230387456,3230387711,US
+3230387712,3230400255,CA
+3230400256,3230400767,US
 3230681088,3230683135,FR
 3230785536,3230823679,US
 3230823680,3230823935,NL
+3230823936,3230824191,US
 3230824192,3230824447,NL
 3230824448,3230825215,US
 3230825216,3230825471,GB
@@ -66147,10 +70192,11 @@
 3230840576,3230840831,US
 3230840832,3230841087,AU
 3230841088,3230841343,NL
+3230841344,3230841599,US
 3230841600,3230841855,NL
 3230841856,3230842111,US
 3230842112,3230842367,AU
-3230842624,3230843135,US
+3230842368,3230843135,US
 3230843136,3230843391,NL
 3230843392,3230844927,US
 3230844928,3230845183,AU
@@ -66171,14 +70217,13 @@
 3230855680,3230855935,NL
 3230855936,3230857983,US
 3230857984,3230858751,AU
-3230858752,3230859007,US
-3230859264,3230865151,US
+3230858752,3230865151,US
 3230865152,3230865407,GB
 3230865408,3230867967,US
 3230867968,3230868223,NL
 3230868224,3230868479,US
 3230868480,3230868735,NL
-3230868992,3230870015,US
+3230868736,3230870015,US
 3230870016,3230870271,NL
 3230870272,3230878719,US
 3230878720,3230879487,PT
@@ -66205,6 +70250,7 @@
 3230915584,3230917631,US
 3230917632,3230917887,NL
 3230917888,3230918399,US
+3230918400,3230918655,LC
 3230918656,3230919423,US
 3230919424,3230919679,AU
 3230919680,3230922239,US
@@ -66214,18 +70260,16 @@
 3230923520,3230923775,EU
 3230923776,3230924031,US
 3230924032,3230924287,AU
-3230924288,3230924543,US
-3230924800,3230933247,US
+3230924288,3230933247,US
 3230933248,3230948607,SE
 3230948608,3230951167,US
 3230951168,3230951423,NL
-3230951424,3230953471,US
-3230953472,3230954495,CA
+3230951424,3230953215,US
+3230953216,3230954495,CA
 3230954496,3230967295,AU
 3230967296,3230967551,RU
 3230967552,3230967807,ES
-3230967808,3230969087,US
-3230969344,3230969599,US
+3230967808,3230969599,US
 3230969600,3230969855,MX
 3230969856,3230970111,US
 3230970112,3230972671,GB
@@ -66239,23 +70283,22 @@
 3230976256,3230980095,ES
 3230980096,3230980351,GB
 3230980352,3230980607,CA
-3230980608,3230980863,US
+3230980608,3230981119,US
 3230981120,3230981375,NL
 3230981376,3230981631,AU
 3230981632,3230981887,US
 3230981888,3230983935,AU
-3230983936,3230990335,US
-3230990592,3230991103,US
+3230983936,3230991103,US
 3230991104,3230991359,PL
 3230991360,3230991615,US
 3230991616,3230991871,FI
 3230991872,3230994175,US
 3230994176,3230994431,NL
-3230994432,3230994687,US
-3230994944,3230995199,US
+3230994432,3230995199,US
 3230995200,3230995455,NL
 3230995456,3230995711,AU
 3230995712,3230996223,US
+3230996224,3230996479,CA
 3230996480,3230997247,US
 3230997248,3230997503,NL
 3230997504,3230997759,US
@@ -66263,31 +70306,31 @@
 3230999040,3230999295,US
 3230999296,3230999551,NL
 3230999552,3230999807,AU
-3230999808,3231000319,US
-3231000576,3231000831,US
+3230999808,3231000831,US
 3231000832,3231001087,FR
 3231001088,3231003903,US
 3231003904,3231004159,CA
 3231004160,3231004415,AU
-3231004672,3231004927,US
+3231004416,3231004927,US
 3231004928,3231005183,GB
+3231005184,3231005439,US
 3231005440,3231005695,FR
 3231005696,3231005951,GB
-3231005952,3231009791,US
+3231005952,3231010047,US
 3231010048,3231010303,FR
 3231010304,3231010815,NO
 3231010816,3231011071,CA
-3231011328,3231012863,US
-3231013120,3231013375,US
+3231011328,3231013375,US
 3231013376,3231013887,CA
-3231013888,3231014911,US
-3231015168,3231015423,US
+3231013888,3231015423,US
 3231015424,3231015679,CA
 3231015680,3231015935,US
 3231015936,3231016191,NO
 3231016192,3231016447,US
 3231016448,3231016703,NO
-3231016704,3231018495,US
+3231016704,3231016959,US
+3231016960,3231017215,CA
+3231017216,3231018495,US
 3231018496,3231018751,NL
 3231018752,3231019007,GB
 3231019008,3231020287,US
@@ -66304,12 +70347,11 @@
 3231042048,3231042303,GU
 3231042304,3231043839,US
 3231043840,3231044095,AU
-3231044352,3231048447,US
+3231044096,3231048447,US
 3231048448,3231048703,NL
 3231048704,3231049727,US
 3231049728,3231049983,AT
-3231049984,3231050239,US
-3231050496,3231051263,US
+3231049984,3231051263,US
 3231051264,3231051519,GB
 3231051520,3231051775,AU
 3231051776,3231057151,US
@@ -66318,13 +70360,16 @@
 3231057920,3231058175,EU
 3231058176,3231060991,US
 3231060992,3231061247,EU
-3231061248,3231070463,US
-3231070720,3231075327,SE
+3231061248,3231070719,US
+3231070720,3231074559,SE
+3231074560,3231075071,US
+3231075072,3231075327,SE
 3231075328,3231075583,NL
+3231075584,3231075839,US
 3231075840,3231077119,SE
 3231077120,3231077375,PL
 3231077376,3231077631,SE
-3231078144,3231078655,US
+3231077632,3231078655,US
 3231078656,3231078911,NL
 3231078912,3231079423,CA
 3231079424,3231079679,NL
@@ -66344,13 +70389,13 @@
 3231088384,3231088895,US
 3231088896,3231091711,AU
 3231091712,3231091967,NL
-3231091968,3231092223,US
-3231092480,3231092735,US
+3231091968,3231092735,US
 3231092736,3231092991,AU
 3231092992,3231093247,US
 3231093248,3231093503,NL
 3231093504,3231101183,US
 3231101184,3231103231,GB
+3231103232,3231103487,CA
 3231103488,3231103999,US
 3231104000,3231104255,NO
 3231104256,3231104767,DE
@@ -66366,11 +70411,10 @@
 3231107840,3231108095,AT
 3231108096,3231108351,GB
 3231108352,3231108607,RU
-3231108608,3231108863,US
+3231108608,3231109119,US
 3231109120,3231109375,GB
 3231109376,3231109631,NO
-3231109632,3231109887,US
-3231110144,3231111679,US
+3231109632,3231111679,US
 3231111680,3231112191,NZ
 3231112448,3231112959,US
 3231112960,3231113215,NO
@@ -66378,8 +70422,7 @@
 3231113984,3231115775,GB
 3231115776,3231116799,AU
 3231116800,3231117055,HU
-3231117056,3231118335,US
-3231118592,3231118847,US
+3231117056,3231118847,US
 3231118848,3231119103,AU
 3231119104,3231119359,US
 3231119360,3231119615,GB
@@ -66387,7 +70430,7 @@
 3231120384,3231120639,NO
 3231120640,3231120895,US
 3231120896,3231121151,NO
-3231121408,3231149311,US
+3231121152,3231149311,US
 3231149312,3231149567,CA
 3231149568,3231154431,US
 3231154432,3231154687,AU
@@ -66421,19 +70464,23 @@
 3231203328,3231204351,US
 3231204352,3231204607,FI
 3231204608,3231204863,AU
-3231204864,3231207935,US
+3231204864,3231207167,US
+3231207168,3231207423,CA
+3231207424,3231207935,US
 3231207936,3231208191,DE
 3231208192,3231208959,US
 3231208960,3231209471,AU
-3231209472,3231211775,US
+3231209472,3231210239,US
+3231210240,3231210495,CA
+3231210496,3231211775,US
 3231211776,3231212031,CA
 3231212032,3231212287,CH
 3231212288,3231214335,US
 3231214336,3231214591,CA
-3231214592,3231215103,US
+3231214592,3231215359,US
 3231215360,3231215615,NO
 3231215616,3231215871,GB
-3231215872,3231217151,US
+3231215872,3231217407,US
 3231217408,3231217663,AU
 3231217664,3231218175,US
 3231218176,3231218431,GB
@@ -66449,6 +70496,8 @@
 3231225600,3231225855,DE
 3231225856,3231226879,US
 3231226880,3231227135,GB
+3231227136,3231227391,US
+3231227392,3231227647,CA
 3231227648,3231228927,US
 3231228928,3231229183,PR
 3231229184,3231229439,CA
@@ -66464,7 +70513,10 @@
 3231237376,3231237631,AU
 3231237632,3231241215,US
 3231241216,3231241471,AU
-3231241984,3231248639,US
+3231241472,3231241727,CA
+3231241728,3231244287,US
+3231244288,3231244543,CA
+3231244544,3231248639,US
 3231248640,3231248895,NL
 3231248896,3231249407,US
 3231249408,3231249663,GB
@@ -66473,13 +70525,13 @@
 3231250688,3231251711,US
 3231251712,3231251967,GB
 3231251968,3231252223,AT
-3231252736,3231252991,US
+3231252224,3231252991,US
 3231252992,3231253503,NL
 3231253504,3231254783,US
 3231254784,3231255039,AU
 3231255040,3231255551,US
 3231255808,3231256063,PT
-3231256320,3231257087,US
+3231256064,3231257087,US
 3231257088,3231257599,HU
 3231257600,3231275007,US
 3231275008,3231275263,BR
@@ -66490,7 +70542,7 @@
 3231276800,3231281919,JP
 3231281920,3231282175,US
 3231282176,3231282431,HU
-3231282688,3231282943,US
+3231282432,3231282943,US
 3231282944,3231283199,CL
 3231283200,3231283455,BR
 3231283456,3231284991,US
@@ -66509,7 +70561,9 @@
 3231296256,3231296511,NL
 3231296512,3231296767,US
 3231296768,3231299327,AT
-3231299328,3231300607,US
+3231299328,3231300095,US
+3231300096,3231300351,CA
+3231300352,3231300607,US
 3231300608,3231301119,NL
 3231301120,3231302143,US
 3231302144,3231302399,NL
@@ -66523,7 +70577,9 @@
 3231308800,3231309055,CA
 3231309824,3231316735,US
 3231316736,3231316991,AU
-3231316992,3231322111,US
+3231316992,3231321343,US
+3231321344,3231321599,CA
+3231321600,3231322111,US
 3231322112,3231324671,SG
 3231324672,3231325183,US
 3231325184,3231326207,CA
@@ -66532,8 +70588,11 @@
 3231358976,3231369215,US
 3231369216,3231369471,TW
 3231369472,3231383551,US
-3231383552,3231385599,NO
-3231385600,3231423999,US
+3231383552,3231383807,CA
+3231383808,3231385343,NO
+3231385344,3231401215,US
+3231401216,3231401471,CA
+3231401472,3231423999,US
 3231424000,3231424511,PR
 3231424512,3231477759,US
 3231477760,3231478015,CA
@@ -66542,18 +70601,18 @@
 3231483136,3231484927,US
 3231484928,3231487999,JP
 3231488512,3231488767,JP
+3231489280,3231489535,US
 3231489536,3231489791,JP
 3231489792,3231490047,AU
 3231490048,3231490559,US
 3231490560,3231490815,GB
-3231490816,3231491071,US
+3231490816,3231491327,US
 3231491328,3231491583,AU
 3231491584,3231491839,US
 3231491840,3231492095,GB
 3231492096,3231493631,US
 3231493632,3231493887,CH
-3231493888,3231499263,US
-3231499520,3231500031,US
+3231493888,3231500031,US
 3231500032,3231500287,BM
 3231500288,3231502079,US
 3231502080,3231502591,AU
@@ -66563,20 +70622,19 @@
 3231503616,3231503871,IT
 3231503872,3231504383,US
 3231504640,3231504895,NL
-3231505152,3231505407,US
+3231504896,3231505407,US
 3231505408,3231505663,AU
 3231505664,3231506687,US
 3231506688,3231506943,AU
 3231506944,3231507199,US
 3231507200,3231507455,BE
-3231507456,3231510015,US
+3231507456,3231510271,US
 3231510272,3231510527,NL
 3231510528,3231512575,US
 3231512576,3231512831,LU
 3231512832,3231513087,AU
-3231513088,3231513343,US
-3231513600,3231514623,US
-3231514624,3231515647,NO
+3231513088,3231514879,US
+3231514880,3231515647,NO
 3231515648,3231516671,US
 3231516672,3231519231,SE
 3231519232,3231526911,US
@@ -66640,8 +70698,8 @@
 3231635456,3231641855,US
 3231641856,3231642111,SG
 3231642112,3231649791,US
-3231649792,3231653887,SG
-3231653888,3231663615,US
+3231649792,3231653631,SG
+3231653632,3231663615,US
 3231663616,3231663871,NL
 3231663872,3231664127,CA
 3231664128,3231664383,US
@@ -66652,7 +70710,7 @@
 3231667200,3231667711,NL
 3231667712,3231668735,US
 3231668736,3231668991,BE
-3231669248,3231669503,US
+3231668992,3231669759,US
 3231669760,3231670015,CA
 3231670016,3231670271,NL
 3231670272,3231671039,US
@@ -66666,8 +70724,9 @@
 3231674368,3231675391,US
 3231675392,3231675903,BR
 3231675904,3231676159,NL
-3231676416,3231677439,NL
-3231677440,3231694847,US
+3231676160,3231676671,US
+3231676672,3231677183,NL
+3231677184,3231694847,US
 3231694848,3231711231,CA
 3231711232,3231713023,US
 3231713024,3231713279,CA
@@ -66692,17 +70751,19 @@
 3231720704,3231720959,NL
 3231720960,3231722751,US
 3231722752,3231723007,BR
-3231723008,3231723519,US
-3231723776,3231724031,US
+3231723008,3231724031,US
 3231724032,3231724287,BR
 3231724288,3231727871,US
 3231727872,3231728127,NL
+3231728128,3231728383,US
 3231728384,3231728639,NL
 3231728640,3231729407,US
 3231729408,3231729663,AU
 3231729664,3231735551,US
 3231735552,3231736063,CH
-3231736064,3231738367,US
+3231736064,3231737343,US
+3231737344,3231737599,CA
+3231737600,3231738367,US
 3231738368,3231738623,NL
 3231738624,3231739135,US
 3231739136,3231739647,NL
@@ -66747,10 +70808,13 @@
 3231770368,3231770879,AT
 3231770880,3231771135,RU
 3231771136,3231773951,US
-3231773952,3231775743,PT
+3231773952,3231775231,PT
+3231775232,3231775487,KY
+3231775488,3231775743,PT
 3231775744,3231775999,NL
 3231776000,3231776511,US
-3231776768,3231793151,US
+3231776512,3231777023,CA
+3231777024,3231793151,US
 3231793152,3231793663,NL
 3231793664,3231800319,US
 3231800320,3231801343,CN
@@ -66814,7 +70878,7 @@
 3231906048,3231907839,RU
 3231907840,3231912959,US
 3231912960,3231913215,AP
-3231913472,3231916031,US
+3231913216,3231916031,US
 3231916032,3231948799,FI
 3231948800,3231973375,US
 3231973376,3232038911,AT
@@ -66825,18 +70889,25 @@
 3232047360,3232048639,GB
 3232048640,3232049151,SE
 3232049152,3232049407,GB
-3232049408,3232051967,SE
+3232049408,3232051199,SE
+3232051200,3232051455,AT
+3232051456,3232051967,SE
 3232051968,3232052991,GB
 3232052992,3232053247,US
 3232053248,3232056063,SE
 3232056064,3232056319,IT
 3232056320,3232060415,SE
 3232060416,3232060671,IE
-3232060672,3232065791,SE
+3232060672,3232060927,IT
+3232060928,3232065791,SE
 3232065792,3232066303,GB
 3232066304,3232066559,SE
 3232066560,3232066815,NO
-3232066816,3232070399,SE
+3232066816,3232067839,SE
+3232067840,3232068095,PL
+3232068096,3232069887,SE
+3232069888,3232070143,CH
+3232070144,3232070399,SE
 3232070400,3232070655,ES
 3232070656,3232079871,SE
 3232079872,3232080895,GB
@@ -66894,29 +70965,32 @@
 3232309248,3232311807,SG
 3232311808,3232407039,US
 3232407040,3232407551,SG
-3232407552,3232432127,US
-3232432128,3232433663,EU
-3232433920,3232440319,US
+3232407552,3232432383,US
+3232432384,3232433663,EU
+3232433664,3232440319,US
 3232440320,3232448511,CA
 3232448512,3232461311,US
 3232461312,3232461823,CA
 3232461824,3232462847,US
 3232462848,3232464895,BB
 3232464896,3232483327,GB
-3232483328,3232555007,US
-3232555264,3232555775,US
+3232483328,3232555775,US
 3232555776,3232557055,JP
 3232557056,3232557311,AU
-3232557568,3232560127,JP
+3232557312,3232557567,US
+3232557568,3232559103,JP
+3232559104,3232559359,US
+3232559360,3232560127,JP
 3232560896,3232561663,US
 3232561664,3232561919,CA
 3232561920,3232562431,US
 3232562432,3232562687,NL
 3232562688,3232562943,CA
-3232563200,3232564479,GB
-3232564736,3232567295,US
+3232562944,3232563455,US
+3232563456,3232564479,GB
+3232564480,3232567295,US
 3232567296,3232569599,NZ
-3232569856,3232570367,US
+3232569600,3232570367,US
 3232570368,3232571391,CA
 3232571392,3232595967,US
 3232595968,3232598015,GB
@@ -66924,7 +70998,7 @@
 3232629760,3232630783,CA
 3232630784,3232645119,US
 3232645120,3232646399,AT
-3232646656,3232661503,US
+3232646400,3232661503,US
 3232661504,3232694271,JP
 3232694272,3232695807,US
 3232695808,3232696319,CA
@@ -66941,15 +71015,21 @@
 3232727040,3232759807,US
 3232759808,3232765951,SE
 3232765952,3232766207,NO
-3232766208,3232774911,SE
+3232766208,3232766463,SE
+3232766464,3232766719,NO
+3232766720,3232767231,DE
+3232767232,3232774911,SE
 3232774912,3232775167,IE
-3232775168,3232794879,SE
+3232775168,3232792319,SE
+3232792320,3232792575,DK
+3232792576,3232794879,SE
 3232794880,3232795135,DE
 3232795136,3232802559,SE
 3232802560,3232802815,DK
 3232802816,3232803071,SE
 3232803072,3232803327,IE
-3232803328,3232804607,SE
+3232803328,3232804351,SE
+3232804352,3232804607,DK
 3232804608,3232804863,IT
 3232804864,3232812031,SE
 3232812032,3232812543,GB
@@ -66962,30 +71042,26 @@
 3233288192,3233292287,CA
 3233292288,3233431551,US
 3233431552,3233447935,CA
-3233447936,3233449095,US
-3233449096,3233449103,GB
-3233449104,3233449207,US
-3233449208,3233449215,GB
-3233449216,3233449359,US
-3233449360,3233449367,GB
-3233449368,3233450199,US
-3233450200,3233450207,GB
-3233450208,3233451519,US
+3233447936,3233451519,US
 3233451520,3233451775,GB
 3233451776,3233453567,US
-3233453568,3233453823,IT
-3233453824,3233456127,US
-3233456128,3233456383,LV
-3233456384,3233456639,UA
+3233453568,3233453631,IT
+3233453632,3233456191,US
+3233456192,3233456255,LV
+3233456256,3233456383,US
+3233456384,3233456447,UA
+3233456448,3233456639,US
 3233456640,3233457151,CA
 3233457152,3233458687,US
 3233458688,3233458943,HU
-3233458944,3233459199,BG
-3233459200,3233484799,US
+3233458944,3233459007,BG
+3233459008,3233484799,US
 3233484800,3233487359,ES
 3233487360,3233487871,US
 3233487872,3233488895,CA
-3233488896,3233548799,US
+3233488896,3233546751,US
+3233546752,3233547007,CA
+3233547008,3233548799,US
 3233548800,3233549055,NL
 3233549056,3233549311,BR
 3233549312,3233557247,US
@@ -67000,10 +71076,12 @@
 3233564416,3233564671,AU
 3233564672,3233564927,US
 3233564928,3233566719,JP
-3233567744,3233568767,JP
-3233568768,3233569791,AU
+3233567744,3233567999,US
+3233568000,3233568767,JP
+3233568768,3233569023,CA
+3233569024,3233569535,AU
 3233569792,3233570047,JP
-3233570048,3233570559,US
+3233570048,3233570815,US
 3233570816,3233571071,GB
 3233571072,3233572095,US
 3233572096,3233572351,AU
@@ -67015,9 +71093,9 @@
 3233575680,3233575935,AU
 3233575936,3233576191,RU
 3233576192,3233576447,GB
-3233576448,3233576959,US
-3233576960,3233577983,NL
-3233577984,3233578239,US
+3233576448,3233577215,US
+3233577216,3233577727,NL
+3233577728,3233578239,US
 3233578240,3233578495,NL
 3233578496,3233578751,US
 3233578752,3233579007,NL
@@ -67031,7 +71109,7 @@
 3233583360,3233583615,NL
 3233583616,3233584895,US
 3233584896,3233585151,AU
-3233585152,3233586175,US
+3233585152,3233586431,US
 3233586432,3233586943,GB
 3233586944,3233588223,US
 3233588224,3233589247,GA
@@ -67053,20 +71131,21 @@
 3233607168,3233607935,US
 3233607936,3233608191,AU
 3233608192,3233609727,HU
-3233609728,3233611775,US
+3233609728,3233612031,US
 3233612032,3233612287,NL
-3233612544,3233613823,US
+3233612288,3233613823,US
 3233613824,3233614847,GB
-3233615104,3233615359,US
+3233614848,3233615359,US
 3233615360,3233615615,NL
-3233615616,3233617151,US
+3233615616,3233617407,US
 3233617408,3233617663,CA
 3233617664,3233617919,NL
 3233617920,3233618175,AU
-3233618432,3233620479,US
+3233618176,3233620479,US
 3233620480,3233620735,AU
 3233620736,3233620991,US
 3233620992,3233622015,CA
+3233622016,3233622271,US
 3233622272,3233622527,NL
 3233622528,3233624831,US
 3233624832,3233625343,NL
@@ -67096,6 +71175,7 @@
 3233649664,3233649919,AU
 3233649920,3233650431,US
 3233650432,3233650687,NL
+3233650688,3233651199,US
 3233651200,3233651455,NL
 3233651456,3233651967,US
 3233651968,3233652223,NL
@@ -67106,16 +71186,18 @@
 3233654272,3233655551,GB
 3233655552,3233663487,US
 3233663488,3233663999,NL
-3233664000,3233665023,US
+3233664000,3233664255,CA
+3233664256,3233665023,US
 3233665024,3233666047,AU
 3233666048,3233668863,US
 3233668864,3233669119,AU
 3233669120,3233670399,US
 3233670400,3233670655,AU
-3233671168,3233675263,US
-3233675520,3233676031,US
+3233671168,3233676031,US
 3233676032,3233676287,NL
-3233676288,3233684991,US
+3233676288,3233677311,US
+3233677312,3233677567,CA
+3233677568,3233684991,US
 3233684992,3233685247,MX
 3233685248,3233685503,BR
 3233685504,3233688575,US
@@ -67133,7 +71215,7 @@
 3233694976,3233695231,FR
 3233695232,3233696511,US
 3233696512,3233696767,CA
-3233696768,3233701375,US
+3233696768,3233701631,US
 3233701632,3233701887,NL
 3233701888,3233704959,US
 3233704960,3233705215,NZ
@@ -67229,19 +71311,19 @@
 3233936640,3233936895,EU
 3233936896,3233939455,US
 3233939456,3234004991,FI
+3234004992,3234005247,US
 3234005248,3234005503,GB
 3234005504,3234005759,AU
+3234005760,3234006015,CA
 3234006016,3234007039,US
 3234007040,3234007295,NL
 3234007296,3234007551,US
 3234007552,3234007807,AU
 3234007808,3234008063,US
 3234008064,3234008831,NZ
-3234008832,3234013183,US
-3234013440,3234013695,US
+3234008832,3234013695,US
 3234013696,3234013951,AU
-3234013952,3234014207,US
-3234014464,3234014975,US
+3234013952,3234014975,US
 3234014976,3234015487,AU
 3234015488,3234015743,US
 3234015744,3234015999,IE
@@ -67256,7 +71338,7 @@
 3234031360,3234031871,US
 3234031872,3234032127,GB
 3234032128,3234032383,NL
-3234032384,3234032895,US
+3234032384,3234033151,US
 3234033152,3234033407,NL
 3234033408,3234033663,US
 3234033664,3234033919,AU
@@ -67278,15 +71360,21 @@
 3234054912,3234055167,NL
 3234055168,3234055423,US
 3234055424,3234055679,AU
-3234055680,3234061055,US
+3234055680,3234056959,US
+3234056960,3234057215,CA
+3234057216,3234061055,US
 3234061056,3234061311,AU
 3234061312,3234064639,US
 3234064640,3234064895,AU
 3234064896,3234065407,US
 3234065408,3234065663,NL
 3234065664,3234065919,BR
-3234065920,3234070527,US
-3234070528,3234110463,FR
+3234065920,3234069247,US
+3234069248,3234069503,CA
+3234069504,3234070271,US
+3234070272,3234070527,CA
+3234070528,3234070783,US
+3234070784,3234110463,FR
 3234110464,3234128455,US
 3234128456,3234128463,GB
 3234128464,3234130695,US
@@ -67296,7 +71384,9 @@
 3234131192,3234136063,US
 3234136064,3234150911,CA
 3234150912,3234151423,US
-3234151424,3234159615,CA
+3234151424,3234158847,CA
+3234158848,3234159103,US
+3234159104,3234159615,CA
 3234159616,3234160127,US
 3234160128,3234164991,CA
 3234164992,3234165247,US
@@ -67308,10 +71398,14 @@
 3234176000,3234177279,US
 3234177280,3234187007,CA
 3234187008,3234187519,US
-3234187520,3234192383,CA
+3234187520,3234189055,CA
+3234189056,3234189311,US
+3234189312,3234192383,CA
 3234192384,3234193663,US
-3234193664,3234201599,CA
-3234201600,3234203647,US
+3234193664,3234198783,CA
+3234198784,3234199039,US
+3234199040,3234201343,CA
+3234201344,3234203647,US
 3234203648,3234205183,BR
 3234205184,3234205439,AR
 3234205440,3234205695,BR
@@ -67322,14 +71416,16 @@
 3234227712,3234228223,US
 3234228224,3234228351,CA
 3234228352,3234230015,US
-3234230016,3234230271,ES
-3234230272,3234232319,US
+3234230016,3234230207,ES
+3234230208,3234232319,US
 3234232320,3234232575,EG
 3234232576,3234238975,US
 3234238976,3234239231,MY
 3234239232,3234240255,US
 3234240256,3234240511,EU
-3234240512,3234270207,US
+3234240512,3234267135,US
+3234267136,3234267391,CA
+3234267392,3234270207,US
 3234270208,3234271231,CA
 3234271232,3234275327,PT
 3234275328,3234279423,AU
@@ -67345,7 +71441,11 @@
 3234340096,3234340351,IN
 3234340352,3234349055,US
 3234349056,3234353151,NZ
-3234353152,3234549759,US
+3234353152,3234529279,US
+3234529280,3234529535,PR
+3234529536,3234538751,US
+3234538752,3234539007,TC
+3234539520,3234549759,US
 3234549760,3234550015,RU
 3234553856,3234554367,US
 3234554624,3234554879,AU
@@ -67374,47 +71474,47 @@
 3234583808,3234584063,AU
 3234584064,3234584575,US
 3234584576,3234584831,AU
-3234584832,3234585343,US
-3234585600,3234587391,US
+3234584832,3234587391,US
 3234587392,3234587647,NL
 3234587648,3234588671,US
 3234588672,3234588927,AU
 3234588928,3234589439,US
 3234589440,3234589695,AU
-3234589696,3234592511,US
+3234589696,3234590463,US
+3234590464,3234590719,CA
+3234590720,3234592511,US
 3234592512,3234592767,AU
-3234592768,3234725887,US
+3234592768,3234726143,US
 3234726144,3234726399,CA
 3234726400,3234726911,US
 3234726912,3234727935,CA
 3234727936,3234733055,US
 3234733056,3234733311,CA
-3234733312,3234739455,US
+3234733312,3234739711,US
 3234739712,3234740223,CA
 3234740224,3234745599,US
 3234745600,3234746879,GB
 3234746880,3234747903,US
 3234747904,3234748159,NL
-3234748160,3234749439,US
-3234749440,3234750463,CA
+3234748160,3234749695,US
+3234749696,3234750207,CA
 3234750464,3234751999,US
 3234752000,3234752255,AU
 3234752256,3234753535,US
 3234753536,3234753791,AU
-3234753792,3234754047,US
-3234754560,3234755839,US
+3234753792,3234755839,US
 3234755840,3234756095,AU
 3234756096,3234762751,US
 3234762752,3234764799,CA
 3234764800,3234766335,NZ
 3234766336,3234772223,US
 3234772224,3234772479,CA
-3234772480,3234772735,US
-3234772992,3234781439,US
+3234772480,3234781439,US
 3234781440,3234781951,CA
 3234781952,3234782719,US
 3234782720,3234783999,IL
 3234784000,3234794495,US
+3234794496,3234794751,CA
 3234794752,3234795007,US
 3234795008,3234795263,NL
 3234795264,3234799359,US
@@ -67427,7 +71527,7 @@
 3234801664,3234802431,EC
 3234802432,3234803711,US
 3234803712,3234803967,PR
-3234804224,3234806783,US
+3234803968,3234806783,US
 3234806784,3234807295,CA
 3234807552,3234807807,US
 3234807808,3234808063,AU
@@ -67440,8 +71540,7 @@
 3234816000,3234816767,AU
 3234816768,3234820351,US
 3234820352,3234820607,AU
-3234820608,3234820863,US
-3234821120,3234821887,US
+3234820608,3234821887,US
 3234821888,3234822655,AU
 3234822656,3234826751,US
 3234826752,3234827007,CA
@@ -67473,17 +71572,19 @@
 3234853888,3234854143,EC
 3234854144,3234854911,US
 3234854912,3234855167,AU
-3234855168,3234855935,US
-3234856192,3234856447,US
+3234855168,3234856447,US
 3234856448,3234856703,AU
-3234856960,3234861055,CA
-3234861056,3234988031,US
-3234988032,3234991103,CA
-3234991104,3235004415,US
+3234856704,3234857215,US
+3234857216,3234861055,CA
+3234861056,3234988287,US
+3234988288,3234990847,CA
+3234990848,3235004415,US
 3235004416,3235021823,CA
 3235021824,3235026943,US
 3235026944,3235027967,CA
-3235027968,3235045375,US
+3235027968,3235044375,US
+3235044376,3235044383,GB
+3235044384,3235045375,US
 3235045376,3235045887,CA
 3235045888,3235065343,US
 3235065344,3235065855,CA
@@ -67500,10 +71601,16 @@
 3235389440,3235389951,VE
 3235389952,3235512319,US
 3235512320,3235577855,JP
-3235577856,3235643391,CA
-3235643392,3235774463,US
-3235774464,3235776767,CA
-3235777024,3235800319,US
+3235577856,3235643135,CA
+3235643136,3235745791,US
+3235745792,3235745792,DE
+3235745793,3235747839,US
+3235747840,3235748095,GB
+3235748096,3235748351,US
+3235748352,3235748607,GB
+3235748608,3235774719,US
+3235774720,3235776767,CA
+3235776768,3235800575,US
 3235800576,3235801087,CA
 3235801088,3235807231,US
 3235807232,3235839999,CA
@@ -67581,7 +71688,8 @@
 3236044800,3236052991,CA
 3236052992,3236069375,US
 3236069376,3236102143,CA
-3236102144,3236106239,PH
+3236102144,3236102399,US
+3236102400,3236106239,PH
 3236106240,3236140031,US
 3236140032,3236142079,CA
 3236142080,3236142335,US
@@ -67592,13 +71700,13 @@
 3236143007,3236143103,CA
 3236143104,3236163519,US
 3236163520,3236163583,IE
-3236163584,3236167679,US
-3236167680,3236175871,CA
+3236163584,3236167935,US
+3236167936,3236175871,CA
 3236175872,3236200447,US
 3236200448,3236233215,MY
 3236233216,3236237567,US
 3236237568,3236237936,EU
-3236237937,3236238591,US
+3236237937,3236239359,US
 3236239360,3236241407,CA
 3236241408,3236291071,US
 3236291072,3236291327,GB
@@ -67608,21 +71716,24 @@
 3236312320,3236312575,GH
 3236312576,3236312831,GR
 3236312832,3236313087,QA
-3236313088,3236368127,US
+3236313088,3236365567,US
+3236365568,3236365823,CA
+3236365824,3236368127,US
 3236368128,3236368383,AU
 3236368384,3236372991,US
 3236372992,3236373247,AU
-3236373504,3236379391,US
+3236373248,3236373503,US
+3236373504,3236373759,BS
+3236373760,3236379391,US
 3236379392,3236379647,AU
-3236379648,3236380927,US
+3236379648,3236381183,US
 3236381184,3236381439,CA
 3236381440,3236381695,NL
 3236381696,3236383999,US
 3236384000,3236384255,AU
 3236384256,3236385279,US
 3236385280,3236385535,NL
-3236385536,3236385791,US
-3236386304,3236387071,US
+3236385536,3236387071,US
 3236387072,3236387327,CA
 3236387328,3236387839,US
 3236387840,3236389375,PR
@@ -67634,7 +71745,7 @@
 3236395008,3236395519,BR
 3236395520,3236396799,US
 3236396800,3236397055,AU
-3236397056,3236398591,US
+3236397056,3236398847,US
 3236398848,3236399359,AU
 3236399616,3236400127,US
 3236400128,3236400383,CL
@@ -67648,14 +71759,15 @@
 3236409088,3236409599,BR
 3236409600,3236411135,US
 3236411136,3236411391,AU
-3236411392,3236413695,US
+3236411392,3236412415,US
+3236412416,3236412671,CA
+3236412672,3236413695,US
 3236413696,3236413951,AU
 3236413952,3236416255,US
 3236416256,3236416511,AU
 3236416512,3236418303,US
 3236418304,3236418815,AU
-3236418816,3236419071,US
-3236419328,3236419583,US
+3236418816,3236419583,US
 3236419584,3236419839,AU
 3236419840,3236420095,US
 3236420096,3236420351,AU
@@ -67664,16 +71776,18 @@
 3236425216,3236427519,US
 3236427520,3236427775,CA
 3236427776,3236428031,AU
-3236428800,3236429311,US
+3236428032,3236429311,US
 3236429312,3236429567,MU
-3236429824,3236438015,US
+3236429568,3236438015,US
 3236446208,3236447487,US
 3236447488,3236447743,AP
 3236447744,3236450047,US
 3236450048,3236450303,EU
 3236450304,3236462591,US
 3236462592,3236470783,AU
-3236470784,3236566783,US
+3236470784,3236560895,US
+3236560896,3236561151,CA
+3236561152,3236566783,US
 3236566784,3236567039,CA
 3236567040,3236575743,US
 3236575744,3236575999,AU
@@ -67684,8 +71798,9 @@
 3236604928,3236610047,US
 3236610560,3236611071,US
 3236611072,3236612095,CA
-3236612096,3236617471,US
-3236617728,3236617983,US
+3236612096,3236613119,US
+3236613120,3236613375,CA
+3236613376,3236617983,US
 3236617984,3236619775,CA
 3236619776,3236620031,US
 3236620032,3236620287,AU
@@ -67693,11 +71808,11 @@
 3236623616,3236623871,AU
 3236623872,3236625919,US
 3236625920,3236626175,CA
-3236626432,3236638719,US
+3236626176,3236638719,US
 3236638720,3236642815,BB
 3236642816,3236659199,US
 3236659200,3236691967,CA
-3236691968,3236694271,US
+3236691968,3236695039,US
 3236695040,3236696063,CA
 3236696064,3236757503,US
 3236757504,3236765695,CA
@@ -67727,9 +71842,9 @@
 3236787968,3236788223,JP
 3236788224,3236788479,US
 3236788480,3236789503,GB
-3236789504,3236823039,US
-3236823040,3236826111,CH
-3236826112,3236827135,CA
+3236789504,3236823295,US
+3236823296,3236825855,CH
+3236825856,3236827135,CA
 3236827136,3236828415,US
 3236828416,3236828671,A1
 3236828672,3236958207,US
@@ -67747,12 +71862,16 @@
 3237050368,3237051903,US
 3237051904,3237052159,TR
 3237052160,3237052287,CA
-3237052288,3237154815,US
+3237052288,3237125295,US
+3237125296,3237125311,CR
+3237125312,3237154815,US
 3237154816,3237155839,ES
 3237155840,3237156863,AU
 3237156864,3237182463,US
 3237182464,3237183487,NL
-3237183488,3237216255,US
+3237183488,3237205247,US
+3237205504,3237206015,CA
+3237206016,3237216255,US
 3237216256,3237281791,JP
 3237281792,3237284607,US
 3237284608,3237284863,AU
@@ -67783,19 +71902,19 @@
 3237320704,3237320959,UA
 3237320960,3237321471,US
 3237321472,3237321727,AU
-3237321728,3237321983,US
-3237322752,3237325055,US
+3237321728,3237322751,US
+3237322752,3237323263,CA
+3237323264,3237325055,US
 3237325056,3237325311,NL
 3237325312,3237325823,US
 3237325824,3237326079,CA
-3237326080,3237328127,US
-3237328384,3237328639,US
+3237326080,3237328639,US
 3237328640,3237328895,CA
 3237328896,3237329151,US
 3237329152,3237329407,NZ
 3237329664,3237330943,US
 3237330944,3237331199,AU
-3237331456,3237331711,US
+3237331200,3237331711,US
 3237331968,3237332223,AU
 3237332224,3237335039,US
 3237335040,3237335295,AU
@@ -67812,7 +71931,9 @@
 3237346304,3237366015,US
 3237366016,3237366271,AU
 3237366272,3237412863,US
-3237412864,3237415935,GB
+3237412864,3237413119,CA
+3237413120,3237415679,GB
+3237415680,3237415935,US
 3237415936,3237416959,CA
 3237416960,3237478399,US
 3237478400,3237511167,LK
@@ -67832,15 +71953,19 @@
 3237576704,3237609471,CA
 3237609472,3237613567,US
 3237613568,3237614591,CA
-3237615104,3237615615,US
+3237614592,3237615615,US
 3237615616,3237616895,CA
-3237617152,3237622015,US
+3237616896,3237622015,US
 3237622016,3237622271,AP
 3237622272,3237634601,US
 3237634602,3237634603,EU
 3237634604,3237647103,US
 3237647104,3237647359,AU
-3237647360,3237681663,US
+3237647360,3237655039,US
+3237655040,3237655551,IN
+3237655552,3237675007,US
+3237675008,3237675263,CA
+3237675264,3237681663,US
 3237681664,3237682943,CA
 3237682944,3237684991,US
 3237684992,3237685247,CL
@@ -67860,6 +71985,8 @@
 3237724928,3237725183,AU
 3237725184,3237725439,CA
 3237725440,3237725695,US
+3237725696,3237726207,CA
+3237726208,3237726463,US
 3237726464,3237726719,AU
 3237726720,3237726975,GH
 3237726976,3237727231,US
@@ -67873,12 +72000,14 @@
 3237781504,3237785599,CA
 3237785600,3237797887,US
 3237797888,3237801983,CA
-3237801984,3237857535,US
+3237801984,3237858303,US
 3237858304,3237863423,CA
 3237863424,3237867519,US
 3237867520,3237867775,HK
 3237867776,3237868031,GB
-3237868032,3237869311,US
+3237868032,3237868159,US
+3237868160,3237868287,AU
+3237868288,3237869311,US
 3237869312,3237869439,KR
 3237869440,3237869567,JP
 3237869568,3237869823,AU
@@ -67889,7 +72018,7 @@
 3237870592,3237870847,DE
 3237870848,3237870975,KR
 3237870976,3237871103,JP
-3237871104,3237871231,PH
+3237871104,3237871231,TH
 3237871232,3237871359,TW
 3237871360,3237871487,SG
 3237871488,3237871615,MY
@@ -68001,36 +72130,33 @@
 3238541568,3238541823,PL
 3238541824,3238542591,CH
 3238542592,3238542847,PL
-3238542848,3238543103,CH
 3238543360,3238545407,CH
 3238545920,3238546431,RU
 3238546432,3238546943,CH
 3238546944,3238547455,UA
-3238548480,3238548991,CH
 3238548992,3238549503,CZ
-3238549504,3238559231,CH
+3238549504,3238557695,CH
 3238559232,3238559487,SE
-3238559744,3238562559,CH
+3238559744,3238562303,CH
 3238562560,3238562815,IR
 3238562816,3238573567,CH
 3238573568,3238574079,PL
-3238574080,3238574591,CH
 3238575104,3238575615,DE
 3238575616,3238578431,CH
 3238578432,3238578687,UA
-3238578688,3238578943,CH
 3238578944,3238579199,RU
 3238579200,3238579455,CH
-3238580224,3238589951,CH
+3238580224,3238588415,CH
+3238589696,3238589951,CH
 3238589952,3238590207,LT
-3238590208,3238590719,CH
+3238590464,3238590719,CH
 3238590976,3238591231,SA
 3238591232,3238592511,CH
 3238592512,3238594559,GB
 3238594560,3238595583,BE
 3238595584,3238595839,SI
 3238595840,3238596095,EU
-3238596096,3238596607,GB
+3238596096,3238596351,GB
 3238596608,3238596863,BG
 3238596864,3238597119,RU
 3238597120,3238597375,DE
@@ -68193,7 +72319,6 @@
 3239120896,3239121663,DE
 3239121664,3239121919,FR
 3239121920,3239123967,DE
-3239124992,3239127039,DE
 3239127296,3239127551,PL
 3239127552,3239127807,IL
 3239127808,3239128063,RU
@@ -68376,7 +72501,6 @@
 3239506432,3239506687,RU
 3239506688,3239506943,GB
 3239507200,3239507455,GB
-3239507456,3239507967,DE
 3239507968,3239508223,BG
 3239508224,3239508479,SA
 3239508480,3239508735,NO
@@ -68555,7 +72679,8 @@
 3239740416,3239740671,DK
 3239740928,3239741183,UA
 3239741184,3239741439,RU
-3239741440,3239759871,DE
+3239741440,3239744511,DE
+3239747584,3239759871,DE
 3239760128,3239760383,UA
 3239761408,3239761663,RU
 3239761920,3239762175,BG
@@ -68705,14 +72830,13 @@
 3239899136,3239901695,DE
 3239901696,3239901951,BG
 3239901952,3239902207,DE
-3239902464,3239902719,RU
 3239902720,3239902975,EE
 3239903232,3239904255,DE
 3239904512,3239904767,GB
 3239905536,3239905791,DE
 3239907328,3239907583,UA
 3239908096,3239908351,RU
-3239908352,3239910399,DE
+3239908864,3239910399,DE
 3239912960,3239913215,DE
 3239913216,3239913471,LT
 3239914240,3239914495,DE
@@ -68749,7 +72873,6 @@
 3239968512,3239968767,PL
 3239968768,3239969023,NO
 3239969536,3239970047,DE
-3239970816,3239971839,DE
 3239972864,3239974911,DE
 3239974912,3239975935,GB
 3239975936,3239976191,RO
@@ -68790,7 +72913,7 @@
 3240034560,3240035327,DE
 3240036096,3240037375,DE
 3240037888,3240038143,AT
-3240038400,3240040447,DE
+3240038912,3240039423,DE
 3240049664,3240050687,DE
 3240054784,3240058879,DE
 3240067072,3240083455,DE
@@ -68829,7 +72952,9 @@
 3240116224,3240116479,DE
 3240116480,3240116735,DK
 3240116736,3240117247,GB
-3240117248,3240118271,EU
+3240117248,3240117260,EU
+3240117261,3240117261,UA
+3240117262,3240118271,EU
 3240118272,3240120319,ES
 3240120320,3240120831,IR
 3240120832,3240121343,GB
@@ -69164,7 +73289,8 @@
 3240595456,3240607743,GB
 3240609792,3240611839,DE
 3240611840,3240613887,GB
-3240615936,3240622079,GB
+3240615936,3240620031,GB
+3240621824,3240622079,GB
 3240622080,3240622591,RU
 3240622848,3240623103,GB
 3240624128,3240689663,EE
@@ -69198,7 +73324,6 @@
 3240710912,3240711167,FR
 3240711168,3240711679,IT
 3240711680,3240711935,RU
-3240711936,3240712191,DE
 3240712192,3240712447,UA
 3240712448,3240712703,SI
 3240712704,3240712959,CH
@@ -69249,7 +73374,6 @@
 3240742656,3240742911,AT
 3240742912,3240743423,IL
 3240743424,3240743935,PL
-3240743936,3240744447,DE
 3240744448,3240744959,SE
 3240744960,3240745471,RO
 3240745472,3240745983,UA
@@ -69433,12 +73557,11 @@
 3241078016,3241078271,PL
 3241078272,3241078527,ES
 3241078528,3241078783,DE
-3241078784,3241082879,AT
+3241080832,3241082879,AT
 3241082880,3241083135,FR
 3241083136,3241084927,CH
 3241084928,3241085183,AP
 3241085184,3241091071,CH
-3241099264,3241100287,CH
 3241101056,3241101311,DK
 3241101312,3241101567,RO
 3241101568,3241101823,DE
@@ -69521,7 +73644,6 @@
 3241499648,3241499903,BE
 3241499904,3241500159,DE
 3241500160,3241500671,GB
-3241500672,3241501439,BE
 3241501440,3241501440,GB
 3241501441,3241501695,EU
 3241501696,3241501696,GB
@@ -69530,21 +73652,18 @@
 3241503232,3241503487,RS
 3241503488,3241508095,BE
 3241508096,3241508351,NL
-3241508352,3241508607,BE
 3241508864,3241539839,BE
-3241540864,3241541119,BE
 3241541376,3241541631,PL
 3241541632,3241689087,FR
 3241693184,3241699327,FR
 3241699840,3241700095,SE
 3241700352,3241721855,FR
 3241722112,3241722367,FR
-3241724160,3241724415,FR
 3241724416,3241724671,RU
-3241724672,3241724927,FR
 3241725952,3241742335,FR
 3241743360,3241743615,DE
-3241744128,3241763071,FR
+3241744384,3241745407,FR
+3241746432,3241763071,FR
 3241763072,3241763327,DE
 3241764864,3241803775,FR
 3241803776,3241803823,CY
@@ -69557,7 +73676,6 @@
 3241822208,3241824255,CZ
 3241824256,3241840639,BE
 3241841664,3241842175,BE
-3241842688,3241843455,BE
 3241843456,3241843711,CH
 3241843712,3241848831,BE
 3241852928,3241854463,SK
@@ -69678,7 +73796,6 @@
 3243565056,3243569151,GB
 3243570432,3243570687,CZ
 3243570688,3243570943,PL
-3243571456,3243571711,CZ
 3243571968,3243572223,GR
 3243572224,3243572479,CZ
 3243572992,3243573247,RU
@@ -69916,7 +74033,6 @@
 3244862720,3244862975,RO
 3244862976,3244863231,DE
 3244863232,3244863487,GB
-3244863488,3244863743,KZ
 3244863744,3244863999,RU
 3244864000,3244864255,UA
 3244864256,3244864511,GB
@@ -70015,7 +74131,6 @@
 3244890880,3244891135,RU
 3244891392,3244891647,PL
 3244891648,3244891903,UA
-3244891904,3244892159,RO
 3244892160,3244892415,PL
 3244892416,3244892671,NL
 3244892672,3244892927,ES
@@ -70064,7 +74179,6 @@
 3244904448,3244904703,GR
 3244904960,3244905215,BY
 3244905216,3244905471,MD
-3244905472,3244905727,GB
 3244905728,3244905983,GR
 3244905984,3244906239,AT
 3244906240,3244906495,DE
@@ -70115,7 +74229,6 @@
 3244919296,3244919551,SE
 3244919552,3244919807,DE
 3244919808,3244920063,RO
-3244920064,3244920319,RU
 3244920320,3244920575,SK
 3244920576,3244920831,PL
 3244920832,3244921087,NL
@@ -70127,7 +74240,6 @@
 3244922368,3244922623,GB
 3244922880,3244923135,UA
 3244923136,3244923391,AT
-3244923392,3244923647,EU
 3244923648,3244923903,LV
 3244923904,3244924159,RU
 3244924160,3244924927,CZ
@@ -70182,7 +74294,6 @@
 3244938752,3244939007,AT
 3244939008,3244939263,NL
 3244939264,3244939519,UA
-3244939520,3244939775,FR
 3244939776,3244940031,GB
 3244940032,3244940287,UA
 3244940288,3244940543,DK
@@ -70221,8 +74332,7 @@
 3244951552,3244952575,FI
 3244952576,3244953599,GB
 3244953600,3244954623,DE
-3244955648,3244956671,UA
-3244956672,3244957695,LT
+3244955648,3244957695,UA
 3244958720,3244959743,FR
 3244959744,3244960767,RU
 3244960768,3244961791,RO
@@ -71090,12 +75200,16 @@
 3248603136,3248603391,BG
 3248603392,3248603647,RU
 3248603648,3248604159,NO
-3248606208,3248619519,NO
+3248606976,3248619519,NO
 3248619520,3248624383,DK
 3248624384,3248624639,US
 3248624640,3248624895,DK
 3248624896,3248625151,AP
-3248625152,3248719871,DK
+3248625152,3248626175,DK
+3248626176,3248626176,EU
+3248626177,3248626190,DK
+3248626191,3248626191,US
+3248626192,3248719871,DK
 3248719872,3248720127,EU
 3248720128,3248748543,DK
 3248748544,3248748573,EU
@@ -71295,9 +75409,7 @@
 3249279744,3249279999,EU
 3249280000,3249313279,NL
 3249313280,3249313535,EU
-3249313536,3249369855,NL
-3249369856,3249370111,EU
-3249370112,3249405951,NL
+3249313536,3249405951,NL
 3249405952,3249521279,DE
 3249521280,3249521343,UA
 3249521344,3249537023,DE
@@ -71315,8 +75427,6 @@
 3249574912,3249590527,NL
 3249590528,3249590783,FR
 3249592320,3249598463,NL
-3249598976,3249599743,NL
-3249600000,3249600255,NL
 3249600256,3249600511,AT
 3249600512,3249601535,UA
 3249601536,3249601791,RU
@@ -71328,7 +75438,7 @@
 3249677056,3249677311,SE
 3249678336,3249678847,IE
 3249679104,3249679359,CH
-3249679360,3249682431,IE
+3249681664,3249681919,IE
 3249683456,3249684479,SE
 3249684480,3249696767,IE
 3249697280,3249697535,IE
@@ -71408,7 +75518,8 @@
 3249829888,3249830143,GB
 3249830144,3249830399,SE
 3249830400,3249830655,IT
-3249830656,3249844479,SE
+3249830656,3249830911,DK
+3249830912,3249844479,SE
 3249844480,3249844735,AT
 3249844736,3249844991,AU
 3249844992,3249845759,SE
@@ -71431,7 +75542,9 @@
 3249863680,3249863935,ES
 3249863936,3249865471,SE
 3249865472,3249865727,GB
-3249865728,3249868543,SE
+3249865728,3249868031,SE
+3249868032,3249868287,DK
+3249868288,3249868543,SE
 3249868544,3249868799,DE
 3249868800,3249869823,NL
 3249869824,3249871103,SE
@@ -71442,13 +75555,16 @@
 3249872384,3249872639,GB
 3249872640,3249910271,SE
 3249910272,3249910783,NL
-3249910784,3249926143,SE
+3249910784,3249924607,SE
+3249924608,3249924863,NO
+3249924864,3249926143,SE
 3249926144,3249926399,AU
 3249926400,3249926655,SE
 3249926656,3249926911,BE
 3249926912,3249929471,SE
 3249929472,3249929983,CA
-3249929984,3249931263,SE
+3249929984,3249930239,NO
+3249930240,3249931263,SE
 3249931264,3249931775,NL
 3249931776,3249932287,SE
 3249932288,3249934335,US
@@ -71557,7 +75673,8 @@
 3250245632,3250245887,TR
 3250245888,3250246143,AT
 3250246144,3250246399,GB
-3250246656,3250257663,AT
+3250246656,3250257151,AT
+3250257408,3250257663,AT
 3250257664,3250257919,PL
 3250257920,3250258175,EU
 3250258432,3250271231,AT
@@ -71581,7 +75698,6 @@
 3250324992,3250325247,AE
 3250325248,3250325503,MA
 3250326528,3250327039,BH
-3250327040,3250327295,SA
 3250331648,3250335743,MT
 3250335744,3250339839,KW
 3250339840,3250348031,JO
@@ -71636,7 +75752,8 @@
 3250413568,3250414079,UA
 3250414080,3250414591,RO
 3250414592,3250415103,SE
-3250415104,3250415615,NL
+3250415104,3250415359,NL
+3250415360,3250415615,PL
 3250415616,3250416127,FR
 3250416128,3250417663,DE
 3250417664,3250418175,IT
@@ -71734,10 +75851,8 @@
 3250748416,3250749439,UA
 3250749440,3250749695,GH
 3250749696,3250749951,EU
-3250750464,3250750537,FR
-3250750538,3250750541,EU
-3250750542,3250751487,FR
-3250751488,3250751999,DE
+3250750464,3250751487,FR
+3250751488,3250751743,DE
 3250752000,3250752511,CH
 3250752512,3250753023,BG
 3250753536,3250754047,DE
@@ -71814,7 +75929,6 @@
 3251142144,3251142655,RO
 3251142656,3251142911,DE
 3251142912,3251143167,RU
-3251143168,3251143423,AM
 3251143424,3251143679,LV
 3251143680,3251143935,NL
 3251143936,3251144191,PL
@@ -71844,7 +75958,6 @@
 3251151360,3251151615,DE
 3251151872,3251152127,NL
 3251152128,3251152639,RO
-3251152640,3251152895,UA
 3251152896,3251153151,RU
 3251153408,3251153663,TR
 3251153664,3251153919,FR
@@ -72003,7 +76116,7 @@
 3251216256,3251216383,RU
 3251216384,3251216639,GB
 3251216640,3251216895,RO
-3251216896,3251217151,BE
+3251216896,3251217151,NL
 3251217152,3251217407,GB
 3251217408,3251217663,PL
 3251217664,3251217919,SI
@@ -72046,8 +76159,7 @@
 3251256832,3251257343,GB
 3251257344,3251259903,BE
 3251260416,3251261439,FR
-3251261440,3251264255,CH
-3251264256,3251265535,FR
+3251263488,3251265535,FR
 3251265536,3251267839,NL
 3251267840,3251268351,GB
 3251268352,3251268607,NL
@@ -72068,12 +76180,13 @@
 3251272448,3251272703,AT
 3251272704,3251272959,DE
 3251272960,3251273471,FR
-3251273472,3251290111,DE
+3251273472,3251286015,DE
+3251286016,3251288063,US
+3251288064,3251290111,SG
 3251290112,3251302399,GB
 3251302400,3251306239,LI
 3251306240,3251306495,EU
 3251306496,3251307007,AT
-3251307520,3251307775,MK
 3251307776,3251308031,GB
 3251308032,3251308543,RS
 3251311104,3251311615,RS
@@ -72296,7 +76409,6 @@
 3252518912,3252527103,NL
 3252527104,3252535295,BE
 3252541952,3252542207,CI
-3252542208,3252542719,BE
 3252543488,3252551679,BE
 3252551680,3252563967,CH
 3252563968,3252564479,RU
@@ -72330,7 +76442,7 @@
 3252587264,3252587519,AT
 3252587520,3252587775,UA
 3252587776,3252588031,SE
-3252588032,3252599807,CH
+3252588544,3252599807,CH
 3252600320,3252600575,NL
 3252600576,3252600831,RU
 3252600832,3252616703,CH
@@ -72342,13 +76454,14 @@
 3252636672,3252636927,TR
 3252636928,3252637183,DE
 3252637184,3252637695,GB
-3252637696,3252642303,CH
+3252637696,3252641791,CH
 3252642304,3252642559,UA
 3252642560,3252642815,DK
 3252642816,3252643071,NL
 3252643072,3252643327,RO
 3252643328,3252643583,CH
-3252643840,3252682751,CH
+3252645120,3252645375,CH
+3252645888,3252682751,CH
 3252682752,3252813823,HU
 3252813824,3252830207,RO
 3252830208,3252830719,MD
@@ -72413,7 +76526,8 @@
 3252944896,3252945151,AT
 3252945152,3252945407,GB
 3252945408,3252945663,UA
-3252945920,3252977663,AT
+3252945920,3252947455,AT
+3252948992,3252977663,AT
 3252980992,3252981247,GB
 3252981248,3252981503,RU
 3252981504,3252981759,SE
@@ -72429,16 +76543,20 @@
 3252984832,3252985087,FR
 3252985088,3252985343,SE
 3252985344,3252985855,RU
-3252985856,3252989183,AT
+3252988416,3252988927,AT
 3252989440,3252989695,PL
-3252989952,3252995071,AT
+3252989952,3252994303,AT
 3252995072,3252996095,CH
-3252996096,3253004799,AT
+3252996096,3253002239,AT
+3253003008,3253003263,AT
+3253004288,3253004799,AT
 3253004800,3253005055,CZ
 3253005056,3253006335,AT
 3253006336,3253010431,DE
 3253010432,3253075967,FI
-3253075968,3253207039,RO
+3253075968,3253139455,RO
+3253139456,3253139711,MD
+3253139712,3253207039,RO
 3253207040,3253270527,RU
 3253270528,3253271551,BY
 3253271552,3253338111,RU
@@ -72476,7 +76594,9 @@
 3253405564,3253405564,EU
 3253405565,3253409791,SE
 3253409792,3253410047,GB
-3253410048,3253412351,SE
+3253410048,3253411839,SE
+3253411840,3253412095,US
+3253412096,3253412351,SE
 3253412352,3253412607,US
 3253412608,3253416447,SE
 3253416448,3253416703,GB
@@ -72509,7 +76629,13 @@
 3253453568,3253454079,SE
 3253454080,3253454335,GB
 3253454336,3253454591,EU
-3253454592,3253460735,SE
+3253454592,3253454847,SE
+3253454848,3253454848,NL
+3253454849,3253455615,SE
+3253455616,3253455871,US
+3253455872,3253456383,SE
+3253456384,3253456639,US
+3253456640,3253460735,SE
 3253460736,3253460991,IT
 3253460992,3253461759,SE
 3253461760,3253462015,PL
@@ -72698,16 +76824,24 @@
 3253765280,3253765295,NL
 3253765296,3253765311,BE
 3253765312,3253765375,TR
-3253765376,3253767615,GB
+3253765376,3253766463,GB
+3253766464,3253766527,NL
+3253766528,3253767615,GB
 3253767616,3253767675,IE
 3253767676,3253767679,DE
 3253767680,3253767711,GB
 3253767712,3253767743,DE
-3253767744,3253770983,GB
+3253767744,3253768565,GB
+3253768566,3253768566,DE
+3253768567,3253770983,GB
 3253770984,3253770984,DE
 3253770985,3253771199,GB
 3253771200,3253771263,IE
-3253771264,3253773055,GB
+3253771264,3253772063,GB
+3253772064,3253772095,DE
+3253772096,3253772191,GB
+3253772192,3253772207,DE
+3253772208,3253773055,GB
 3253773056,3253773311,DE
 3253773312,3253796863,GB
 3253796864,3253862399,SE
@@ -73143,19 +77277,19 @@
 3254962381,3254962381,NL
 3254962382,3254962421,FR
 3254962422,3254962422,NL
-3254962423,3255119871,FR
+3254962423,3255117823,FR
 3255120640,3255120895,DE
-3255120896,3255121919,FR
-3255123200,3255123711,FR
+3255121664,3255121919,FR
 3255123712,3255123967,DE
 3255123968,3255124991,FR
 3255126016,3255126527,FR
 3255126528,3255127551,EU
-3255127808,3255128575,FR
+3255128064,3255128575,FR
 3255129856,3255130111,HR
-3255130112,3255169023,FR
+3255130112,3255130623,FR
+3255132160,3255160831,FR
+3255166976,3255169023,FR
 3255172352,3255172607,DE
-3255172608,3255173119,FR
 3255173120,3255173631,GB
 3255173632,3255173647,EU
 3255173648,3255173711,GB
@@ -73407,7 +77541,8 @@
 3255544576,3255544831,AT
 3255544832,3255558143,CH
 3255558400,3255558655,UA
-3255558912,3255563263,CH
+3255558912,3255559679,CH
+3255560192,3255563263,CH
 3255563776,3255564031,CH
 3255564032,3255564287,RU
 3255565312,3255565955,DE
@@ -73421,16 +77556,24 @@
 3255599104,3255615487,CH
 3255615488,3255623679,DE
 3255623680,3255631871,BG
-3255631872,3255660287,NL
+3255631872,3255659519,NL
 3255660288,3255660543,GR
 3255660544,3255666175,NL
 3255666432,3255666687,DE
-3255667712,3255697407,NL
+3255668224,3255697407,NL
 3255697408,3255699711,SE
 3255699712,3255699967,EU
-3255699968,3255710719,SE
+3255699968,3255704575,SE
+3255704576,3255705087,FR
+3255705088,3255710719,SE
 3255710720,3255710975,ES
-3255710976,3255724543,SE
+3255710976,3255716351,SE
+3255716352,3255716863,CH
+3255716864,3255719167,SE
+3255719168,3255719423,NO
+3255719424,3255719679,SE
+3255719680,3255719935,IT
+3255719936,3255724543,SE
 3255724544,3255725055,US
 3255725056,3255725311,ES
 3255725312,3255730943,SE
@@ -73443,7 +77586,8 @@
 3255745536,3255745791,DK
 3255745792,3255752959,SE
 3255752960,3255753215,LI
-3255753216,3255762943,SE
+3255753216,3255762431,SE
+3255762432,3255762943,BE
 3255762944,3255771135,DE
 3255779328,3255791615,DE
 3255791616,3255792639,UA
@@ -73452,9 +77596,10 @@
 3255794944,3255795711,RU
 3255795712,3255798783,DE
 3255799040,3255799295,SE
-3255799296,3255800575,DE
+3255799296,3255800319,DE
 3255800576,3255800831,UA
-3255800832,3255817215,DE
+3255800832,3255801855,DE
+3255802880,3255817215,DE
 3255817216,3255817471,SE
 3255817472,3255817727,ES
 3255817728,3255820287,DE
@@ -73512,7 +77657,8 @@
 3256489472,3256489983,GR
 3256489984,3256490239,BE
 3256490496,3256490751,CH
-3256490752,3256524287,NL
+3256491008,3256491263,NL
+3256492032,3256524287,NL
 3256524288,3256524799,DE
 3256524800,3256549375,NL
 3256549376,3256614911,TR
@@ -73659,11 +77805,10 @@
 3256898048,3256898303,GB
 3256898560,3256899071,TR
 3256899072,3256899583,RU
-3256905216,3256905471,GB
-3256909824,3256915455,GB
 3256915456,3256915711,RS
 3256915712,3256915967,SE
-3256918016,3256944639,GB
+3256918016,3256934399,GB
+3256942592,3256944639,GB
 3256945408,3256945663,GB
 3256945664,3256945919,SI
 3256945920,3256946175,GB
@@ -73671,7 +77816,7 @@
 3256946432,3256946687,UA
 3256946944,3256947199,EU
 3256947200,3256947711,DE
-3256947712,3256958975,GB
+3256948736,3256958975,GB
 3256958976,3256959999,RO
 3256960000,3256960255,SA
 3256960256,3256960511,HU
@@ -73719,7 +77864,6 @@
 3257059328,3257065471,GB
 3257073664,3257092351,GB
 3257092608,3257092863,RO
-3257092864,3257093119,GB
 3257093888,3257098239,GB
 3257106432,3257139199,GB
 3257139200,3257139455,DK
@@ -73731,7 +77875,7 @@
 3257144576,3257144831,GB
 3257144832,3257145087,FR
 3257145088,3257145343,GB
-3257147392,3257180159,GB
+3257151488,3257180159,GB
 3257180160,3257180415,TR
 3257180416,3257180671,RU
 3257180672,3257180927,EE
@@ -73740,7 +77884,6 @@
 3257181440,3257181695,PL
 3257181696,3257181951,FR
 3257182208,3257182463,PL
-3257184256,3257186303,GB
 3257192448,3257196543,GB
 3257196544,3257200639,LU
 3257200640,3257204735,GB
@@ -73749,7 +77892,6 @@
 3257229312,3257268223,AT
 3257268224,3257268479,UA
 3257268480,3257268735,SE
-3257268992,3257269247,AT
 3257269248,3257269503,IT
 3257269504,3257269759,AT
 3257270016,3257270271,DE
@@ -73766,9 +77908,8 @@
 3257372672,3257382911,DE
 3257382912,3257383167,NL
 3257383168,3257383679,DE
-3257383936,3257389055,DE
+3257383936,3257385983,DE
 3257390592,3257390847,DE
-3257391104,3257391615,DE
 3257391616,3257391871,EU
 3257391872,3257401343,DE
 3257401344,3257453567,CH
@@ -73786,9 +77927,7 @@
 3257472000,3257472511,SG
 3257472512,3257475071,FI
 3257476864,3257477119,DE
-3257481216,3257481471,GB
 3257481472,3257481727,DE
-3257481728,3257481983,FI
 3257482240,3257482751,GB
 3257482752,3257483007,NL
 3257483008,3257491455,CH
@@ -73882,8 +78021,10 @@
 3257990656,3257990911,AT
 3257991168,3258003967,DE
 3258003968,3258004479,RU
-3258004992,3258005503,DE
-3258006528,3258021887,DE
+3258004992,3258005247,DE
+3258006528,3258015743,DE
+3258019328,3258019583,DE
+3258019840,3258021887,DE
 3258021888,3258022911,RU
 3258022912,3258023167,PL
 3258023168,3258023423,DE
@@ -74012,7 +78153,7 @@
 3258105600,3258105855,DE
 3258105856,3258109951,CZ
 3258109952,3258110207,DK
-3258110208,3258110975,CZ
+3258110464,3258110975,CZ
 3258111232,3258111487,CZ
 3258111488,3258111743,PL
 3258111744,3258118399,CZ
@@ -74035,7 +78176,7 @@
 3258297344,3258297599,BE
 3258297600,3258298111,NL
 3258298112,3258298367,GB
-3258298368,3258318847,NL
+3258302464,3258318847,NL
 3258318848,3258320895,DE
 3258320896,3258321919,GB
 3258321920,3258322943,RU
@@ -74072,17 +78213,17 @@
 3258428416,3258449919,DE
 3258449920,3258486783,CH
 3258486784,3258487807,LI
-3258488832,3258503935,CH
+3258488832,3258499071,CH
+3258501120,3258503935,CH
 3258503936,3258504191,PL
-3258504192,3258504703,CH
 3258504704,3258504959,DE
 3258504960,3258505215,IL
-3258505216,3258506495,CH
+3258505728,3258506495,CH
 3258506496,3258506751,DE
-3258507008,3258515455,CH
+3258507264,3258515455,CH
 3258515456,3258580991,FR
 3258580992,3258646527,RU
-3258646528,3258689535,DE
+3258646528,3258688511,DE
 3258689792,3258690047,DE
 3258690560,3258690815,EU
 3258690816,3258691583,DE
@@ -74133,7 +78274,7 @@
 3258776064,3258776319,GE
 3258776320,3258776575,PL
 3258776576,3258777599,UA
-3258777600,3258789887,GB
+3258785792,3258789887,GB
 3258789888,3258790911,CZ
 3258790912,3258792191,RU
 3258792192,3258792447,PL
@@ -74144,10 +78285,11 @@
 3258794496,3258794751,PL
 3258794752,3258795007,RU
 3258795008,3258796031,PL
-3258797568,3258802175,GB
+3258797568,3258798079,GB
+3258801152,3258802175,GB
 3258802176,3258806271,LU
 3258808832,3258809343,GB
-3258812416,3258813439,GB
+3258814464,3258816511,GB
 3258818048,3258818303,SE
 3258818560,3258843135,GB
 3258843136,3258843391,RU
@@ -74158,13 +78300,14 @@
 3258849280,3258859519,GB
 3258859520,3258859775,BY
 3258859776,3258860031,GB
-3258860288,3258900479,GB
-3258901504,3258902783,GB
+3258860544,3258900479,GB
+3258902528,3258902783,GB
 3258903040,3258903295,FR
 3258903296,3258903551,GB
 3258903552,3258903807,DE
 3258903808,3258904063,AT
-3258904064,3258941439,GB
+3258904064,3258904575,GB
+3258908672,3258941439,GB
 3258941440,3258943487,PL
 3258943488,3258944511,BG
 3258944512,3258945535,RU
@@ -74200,9 +78343,13 @@
 3259252480,3259252735,EU
 3259252736,3259258623,SE
 3259258624,3259258879,ES
-3259258880,3259262719,SE
+3259258880,3259260927,SE
+3259260928,3259261183,DK
+3259261184,3259262719,SE
 3259262720,3259262975,DK
-3259262976,3259276287,SE
+3259262976,3259265023,SE
+3259265024,3259265535,DE
+3259265536,3259276287,SE
 3259276288,3259276543,ES
 3259276544,3259280639,SE
 3259280640,3259280895,US
@@ -74251,7 +78398,9 @@
 3259435264,3259435519,IT
 3259435520,3259438079,SE
 3259438080,3259438335,ES
-3259438336,3259454719,SE
+3259438336,3259438591,SE
+3259438592,3259439103,NO
+3259439104,3259454719,SE
 3259454720,3259454975,EU
 3259454976,3259457279,SE
 3259457280,3259457535,IT
@@ -74263,23 +78412,29 @@
 3259479808,3259480063,DK
 3259480064,3259480831,SE
 3259480832,3259481087,ES
-3259481088,3259490303,SE
+3259481088,3259484671,SE
+3259484672,3259485183,ES
+3259485184,3259490303,SE
 3259490304,3259490815,IN
 3259490816,3259491071,SE
 3259491072,3259491327,LI
-3259491328,3259498495,SE
+3259491328,3259495935,SE
+3259495936,3259496447,DK
+3259496448,3259498495,SE
 3259498496,3259541503,GB
 3259541504,3259543551,NL
 3259543552,3259760639,GB
-3259760640,3259814399,DE
+3259760640,3259811839,DE
+3259813888,3259814399,DE
 3259814400,3259814655,AT
-3259814656,3259821055,DE
+3259814656,3259817983,DE
+3259819008,3259821055,DE
 3259821824,3259822079,AT
 3259822592,3259823103,DE
 3259823104,3259823615,RO
 3259823616,3259823871,NO
 3259823872,3259824127,IE
-3259825152,3259825663,DE
+3259825408,3259825663,DE
 3259826176,3259891711,DE
 3259891712,3259893503,BE
 3259893504,3259893759,EU
@@ -74413,10 +78568,12 @@
 3261213696,3261239237,FR
 3261239238,3261239238,EU
 3261239239,3261267967,FR
-3261267968,3261280512,DE
+3261267968,3261278207,DE
+3261280256,3261280512,DE
 3261280513,3261280513,EU
 3261280514,3261280767,DE
-3261281280,3261297663,DE
+3261281280,3261296639,DE
+3261296896,3261297151,DE
 3261297664,3261297919,RU
 3261297920,3261298175,PL
 3261298176,3261333503,DE
@@ -74429,7 +78586,9 @@
 3261532416,3261532671,GB
 3261532672,3261532927,SE
 3261532928,3261533183,GB
-3261533184,3261534207,SE
+3261533184,3261533439,SE
+3261533440,3261533695,US
+3261533696,3261534207,SE
 3261534208,3261534463,NL
 3261534464,3261534719,SE
 3261534720,3261534975,US
@@ -74669,15 +78828,15 @@
 3262185472,3262200319,DE
 3262200576,3262200831,EU
 3262200832,3262201087,DE
-3262201856,3262224383,DE
+3262201856,3262222335,DE
+3262223360,3262223871,DE
 3262224896,3262225151,AT
 3262226432,3262227455,DE
 3262227712,3262227967,RO
-3262227968,3262228223,DE
 3262228480,3262228735,DE
-3262228992,3262229247,DE
 3262229248,3262229503,NL
-3262229504,3262283775,DE
+3262229760,3262230015,DE
+3262230528,3262283775,DE
 3262283776,3262284799,RU
 3262284800,3262285823,UA
 3262286848,3262287871,SE
@@ -74903,7 +79062,7 @@
 3262840320,3262906367,NL
 3262906368,3262954495,CH
 3262954496,3262955519,LI
-3262955520,3262964991,CH
+3262955520,3262964735,CH
 3262964992,3262965247,DE
 3262965248,3262971903,CH
 3262971904,3263029247,IE
@@ -74999,11 +79158,16 @@
 3263138560,3263138815,AT
 3263138816,3263168511,DE
 3263168512,3263430655,GB
-3263430656,3263436543,SE
+3263430656,3263433471,SE
+3263433472,3263433727,NO
+3263433728,3263436543,SE
 3263436544,3263436799,ES
-3263436800,3263443455,SE
+3263436800,3263438591,SE
+3263438592,3263438847,IT
+3263438848,3263443455,SE
 3263443456,3263443967,NL
-3263443968,3263446527,SE
+3263443968,3263446271,SE
+3263446272,3263446527,CH
 3263446528,3263447039,DE
 3263447040,3263458047,SE
 3263458048,3263458303,DE
@@ -75012,13 +79176,31 @@
 3263459840,3263460095,SE
 3263460096,3263460351,GB
 3263460352,3263469567,SE
-3263469568,3263470591,SG
+3263469568,3263469663,SG
+3263469664,3263469695,US
+3263469696,3263469855,SG
+3263469856,3263469887,US
+3263469888,3263470591,SG
 3263470592,3263475711,SE
-3263475712,3263476735,JP
+3263475712,3263476159,JP
+3263476160,3263476191,GB
+3263476192,3263476255,JP
+3263476256,3263476287,GB
+3263476288,3263476415,JP
+3263476416,3263476479,GB
+3263476480,3263476671,JP
+3263476672,3263476703,GB
+3263476704,3263476735,JP
 3263476736,3263478527,SE
 3263478528,3263478783,ES
 3263478784,3263480831,SE
-3263480832,3263481855,JP
+3263480832,3263481343,JP
+3263481344,3263481359,GB
+3263481360,3263481455,JP
+3263481456,3263481471,GB
+3263481472,3263481487,JP
+3263481488,3263481503,GB
+3263481504,3263481855,JP
 3263481856,3263482879,SE
 3263482880,3263483903,GB
 3263483904,3263496191,SE
@@ -75182,8 +79364,7 @@
 3264345088,3264346111,NL
 3264346112,3264347135,SE
 3264347136,3264348159,DE
-3264348160,3264356351,FR
-3264356608,3264356863,FR
+3264352256,3264356351,FR
 3264357632,3264357887,DE
 3264359936,3264360191,FR
 3264360448,3264369151,FR
@@ -75233,23 +79414,27 @@
 3264430592,3264430847,CH
 3264431104,3264431615,LI
 3264431616,3264431871,CH
-3264432128,3264440831,CH
+3264432128,3264440575,CH
 3264441344,3264441599,PL
-3264442368,3264446463,CH
+3264442368,3264442879,CH
 3264447488,3264447743,CH
 3264447744,3264447999,DE
 3264448000,3264448511,CH
-3264449536,3264452607,CH
-3264454656,3264457471,CH
+3264449536,3264450559,CH
+3264452352,3264452607,CH
+3264454656,3264455679,CH
+3264456704,3264457215,CH
 3264457472,3264457727,AT
-3264457728,3264463871,CH
+3264457984,3264458239,CH
+3264458752,3264463871,CH
 3264463872,3264466943,LI
 3264466944,3264475391,CH
 3264476416,3264476671,CH
 3264476672,3264477183,RU
 3264477184,3264477439,PL
 3264477440,3264477695,RU
-3264477952,3264544767,CH
+3264478720,3264478975,CH
+3264479232,3264544767,CH
 3264544768,3264556799,HU
 3264556800,3264557055,BG
 3264557056,3264557823,HU
@@ -75326,7 +79511,6 @@
 3264660992,3264661503,CH
 3264661504,3264662015,GB
 3264662016,3264662527,RU
-3264662528,3264663039,UA
 3264663040,3264663551,PL
 3264663552,3264664063,NL
 3264664064,3264664575,DE
@@ -75436,7 +79620,6 @@
 3264847488,3264847615,RU
 3264847616,3264847679,PL
 3264847680,3264847743,FI
-3264847808,3264847871,SE
 3264847872,3264849919,DE
 3264849920,3264850431,GB
 3264850688,3264850943,LV
@@ -75463,19 +79646,23 @@
 3264921600,3264929791,LU
 3264929792,3264937983,SK
 3264937984,3265003519,GB
-3265003520,3265015807,DE
+3265003520,3265005567,DE
+3265007616,3265009663,DE
+3265009664,3265009919,FR
+3265009920,3265010175,DE
+3265011712,3265015807,DE
 3265015808,3265016063,EU
 3265016064,3265018879,DE
 3265018880,3265019903,HK
 3265036288,3265044479,DE
 3265044736,3265044991,DE
 3265045760,3265046015,TR
-3265046016,3265046271,DE
 3265046528,3265048575,DE
 3265050624,3265052671,DE
-3265053696,3265054719,DE
+3265053696,3265054207,DE
 3265055232,3265055743,FR
-3265055744,3265069055,DE
+3265056256,3265056511,DE
+3265056768,3265069055,DE
 3265069056,3265134591,FI
 3265134592,3265134863,CH
 3265134864,3265134879,BE
@@ -75594,12 +79781,12 @@
 3265825024,3265867775,GB
 3265868288,3265868543,GB
 3265868800,3265869055,DE
-3265869312,3265869823,GB
-3265871872,3265886207,GB
+3265871872,3265875967,GB
+3265880064,3265886207,GB
 3265887232,3265887487,GB
 3265887488,3265887743,PT
 3265887744,3265888255,PL
-3265888256,3265902335,GB
+3265888256,3265901567,GB
 3265902336,3265902591,FR
 3265904384,3265904639,RO
 3265904640,3265904895,DE
@@ -75726,13 +79913,9 @@
 3266510848,3266543615,ES
 3266543616,3266576383,IT
 3266576384,3266616575,DE
-3266617088,3266617279,DE
 3266617328,3266617343,GB
-3266617344,3266634271,DE
-3266634368,3266634383,DE
+3266617344,3266633727,DE
 3266634392,3266634399,EE
-3266634400,3266634431,DE
-3266634496,3266634751,DE
 3266635776,3266641919,DE
 3266641920,3266707455,PL
 3266707456,3266772991,DK
@@ -75846,7 +80029,9 @@
 3267549184,3267550207,DK
 3267550208,3267559423,EU
 3267559424,3267624959,DE
-3267624960,3267628399,EU
+3267624960,3267627407,EU
+3267627408,3267627411,GB
+3267627412,3267628399,EU
 3267628400,3267628415,FR
 3267628416,3267630079,EU
 3267630080,3267631095,GB
@@ -76409,7 +80594,8 @@
 3270443008,3270508543,DK
 3270508544,3270639615,FI
 3270639616,3270640127,PL
-3270640128,3270642175,RU
+3270640128,3270640383,RU
+3270640640,3270642175,RU
 3270642176,3270642687,NO
 3270642688,3270643199,DE
 3270643200,3270643711,RU
@@ -76457,7 +80643,6 @@
 3270903808,3270905855,SE
 3270905856,3270906111,EU
 3270906112,3270909951,IT
-3270909952,3270911743,DE
 3270911840,3270911871,PL
 3270911872,3270911935,DE
 3270911936,3270911967,PL
@@ -76469,7 +80654,7 @@
 3270921216,3270921471,DK
 3270921472,3270921727,UA
 3270921728,3270922239,GB
-3270922240,3270924287,DE
+3270923264,3270924287,DE
 3270926336,3270926591,AT
 3270926592,3270926847,CH
 3270926848,3270927103,PL
@@ -76521,7 +80706,6 @@
 3270980864,3270981631,RU
 3270981632,3270981887,IT
 3270981888,3270982143,AT
-3270982144,3270982399,RU
 3270982400,3270982655,TR
 3270982656,3270982911,UA
 3270982912,3270983167,DK
@@ -76657,7 +80841,6 @@
 3271916544,3271917311,UA
 3271917312,3271925759,RU
 3271925760,3271926015,DK
-3271926016,3271926271,MD
 3271926272,3271926527,RU
 3271926528,3271926783,NL
 3271926784,3271927295,SI
@@ -76829,8 +81012,8 @@
 3272217152,3272217215,EU
 3272217216,3272217279,BE
 3272217280,3272217303,DE
-3272217304,3272217319,BE
-3272217320,3272217343,EU
+3272217304,3272217327,BE
+3272217328,3272217343,EU
 3272217344,3272217599,GB
 3272217600,3272217631,CH
 3272217632,3272217855,EU
@@ -77446,7 +81629,7 @@
 3273436672,3273437183,DE
 3273437184,3273437695,RO
 3273438208,3273438719,IL
-3273438720,3273439231,RU
+3273438720,3273439231,GB
 3273439232,3273439743,RO
 3273439744,3273440255,DE
 3273440256,3273440767,RO
@@ -78255,7 +82438,6 @@
 3275510400,3275510463,NL
 3275510464,3275510527,GB
 3275510528,3275510559,PL
-3275510560,3275510591,DE
 3275510592,3275510623,CY
 3275510624,3275510655,EE
 3275510656,3275510687,FR
@@ -78499,7 +82681,9 @@
 3276031480,3276031487,FR
 3276031488,3276032311,GB
 3276032312,3276032319,FR
-3276032320,3276039263,GB
+3276032320,3276036543,GB
+3276036544,3276036607,FR
+3276036608,3276039263,GB
 3276039264,3276039279,FR
 3276039280,3276040351,GB
 3276040352,3276040367,FR
@@ -78658,7 +82842,9 @@
 3276473304,3276473311,AT
 3276473312,3276474879,EU
 3276474880,3276474927,IT
-3276474928,3276478063,EU
+3276474928,3276477975,EU
+3276477976,3276477983,NL
+3276477984,3276478063,EU
 3276478064,3276478095,CH
 3276478096,3276485631,EU
 3276485632,3276486655,GB
@@ -78807,7 +82993,9 @@
 3276876384,3276876415,NL
 3276876416,3276880427,GB
 3276880428,3276880431,DK
-3276880432,3276882047,GB
+3276880432,3276881811,GB
+3276881812,3276881815,FR
+3276881816,3276882047,GB
 3276882048,3276882687,IT
 3276882688,3276883077,GB
 3276883078,3276883078,IT
@@ -78815,7 +83003,9 @@
 3276883712,3276883839,IT
 3276883840,3276886363,GB
 3276886364,3276886367,DE
-3276886368,3276890175,GB
+3276886368,3276886649,GB
+3276886650,3276886650,DE
+3276886651,3276890175,GB
 3276890176,3276890191,US
 3276890192,3276892159,GB
 3276892160,3276893183,IT
@@ -78839,7 +83029,9 @@
 3276907520,3276907551,NL
 3276907552,3276911167,GB
 3276911168,3276911199,IT
-3276911200,3276912207,GB
+3276911200,3276911679,GB
+3276911680,3276911711,IT
+3276911712,3276912207,GB
 3276912208,3276912215,IT
 3276912216,3276912287,GB
 3276912288,3276912319,IT
@@ -78851,7 +83043,9 @@
 3276912880,3276912895,IT
 3276912896,3276917231,GB
 3276917232,3276917247,FR
-3276917248,3276919375,GB
+3276917248,3276919061,GB
+3276919062,3276919062,DE
+3276919063,3276919375,GB
 3276919376,3276919391,DE
 3276919392,3276919471,GB
 3276919472,3276919479,DE
@@ -79023,11 +83217,10 @@
 3277374464,3277375999,RU
 3277376000,3277376511,NL
 3277376512,3277377023,RO
-3277377024,3277378559,RU
+3277377024,3277378047,RU
 3277378560,3277379071,HR
 3277379072,3277379583,UZ
 3277379584,3277380095,RS
-3277380096,3277380607,RO
 3277380608,3277381119,RU
 3277381120,3277381631,KW
 3277381632,3277382143,RU
@@ -79579,7 +83772,7 @@
 3279994368,3279994879,GB
 3279994880,3280003071,CZ
 3280003072,3280003583,BG
-3280003584,3280004095,UA
+3280003584,3280004095,GB
 3280004096,3280004607,PL
 3280004608,3280005119,UA
 3280005120,3280005631,HU
@@ -79786,7 +83979,9 @@
 3280928832,3280928847,RU
 3280928848,3280928855,GB
 3280928856,3280928863,RU
-3280928864,3280955707,GB
+3280928864,3280952783,GB
+3280952784,3280952799,DE
+3280952800,3280955707,GB
 3280955708,3280955711,DE
 3280955712,3280958919,GB
 3280958920,3280958927,DE
@@ -79934,7 +84129,9 @@
 3281387520,3281453055,PL
 3281453056,3281518591,RU
 3281518592,3281649663,GB
-3281649664,3281715199,FR
+3281649664,3281710335,FR
+3281710336,3281710591,KP
+3281710592,3281715199,FR
 3281715200,3281780735,TR
 3281780736,3281846271,FI
 3281846272,3281911807,GB
@@ -80140,7 +84337,8 @@
 3283248128,3283248639,DE
 3283248640,3283249151,RO
 3283249152,3283249663,UA
-3283249664,3283250175,RO
+3283249664,3283249919,MD
+3283249920,3283250175,RO
 3283250176,3283250687,RU
 3283251200,3283251711,FR
 3283251712,3283252223,PL
@@ -80174,7 +84372,6 @@
 3283490560,3283490815,PL
 3283491072,3283491327,TR
 3283491328,3283491583,AT
-3283491584,3283491839,RO
 3283491840,3283492095,RU
 3283492096,3283492351,AT
 3283492352,3283492607,ES
@@ -80375,7 +84572,9 @@
 3284016384,3284016639,CH
 3284016640,3284017151,DK
 3284017152,3284025343,GR
-3284025344,3284028287,GB
+3284025344,3284028139,GB
+3284028140,3284028143,US
+3284028144,3284028287,GB
 3284028288,3284028319,US
 3284028320,3284029183,GB
 3284029184,3284029199,US
@@ -80384,7 +84583,9 @@
 3284030480,3284030495,FR
 3284030496,3284030615,GB
 3284030616,3284030623,SE
-3284030624,3284033535,GB
+3284030624,3284030991,GB
+3284030992,3284031007,FR
+3284031008,3284033535,GB
 3284033536,3284041727,RU
 3284041728,3284041983,DK
 3284041984,3284042239,SI
@@ -80631,9 +84832,7 @@
 3285098496,3285114879,GB
 3285114880,3285115903,RU
 3285115904,3285116415,SI
-3285116416,3285116927,CZ
 3285116928,3285117439,UA
-3285117440,3285117951,RU
 3285117952,3285118463,FR
 3285118464,3285118975,UA
 3285118976,3285119487,RU
@@ -80871,12 +85070,11 @@
 3285912576,3285913647,EU
 3285913648,3285913655,IE
 3285913656,3285913703,GB
-3285913704,3285913707,EU
-3285913708,3285913711,FI
+3285913704,3285913711,FI
 3285913712,3285913863,GB
 3285913864,3285913871,EU
-3285913872,3285913887,GB
-3285913888,3285917695,EU
+3285913872,3285913903,GB
+3285913904,3285917695,EU
 3285917696,3285917703,GB
 3285917704,3285917711,EU
 3285917712,3285917807,GB
@@ -80910,8 +85108,8 @@
 3285931544,3285935871,EU
 3285935872,3285936127,GB
 3285936128,3285936135,EU
-3285936136,3285936143,FR
-3285936144,3285939135,EU
+3285936136,3285936147,FR
+3285936148,3285939135,EU
 3285939136,3285939175,GB
 3285939176,3285939183,EU
 3285939184,3285939191,GB
@@ -80920,8 +85118,8 @@
 3285939760,3285939839,EU
 3285939840,3285939967,GB
 3285939968,3285940735,EU
-3285940736,3285940743,IT
-3285940744,3285941247,EU
+3285940736,3285940767,IT
+3285940768,3285941247,EU
 3285941248,3285941503,ES
 3285941504,3285949603,EU
 3285949604,3285949607,CH
@@ -80943,7 +85141,9 @@
 3285964800,3285964935,DE
 3285964936,3285965055,EU
 3285965056,3285965567,DE
-3285965568,3285975039,EU
+3285965568,3285968895,EU
+3285968896,3285970943,GB
+3285970944,3285975039,EU
 3285975040,3286013695,FR
 3286013696,3286013951,RE
 3286013952,3286106111,FR
@@ -81052,7 +85252,6 @@
 3286423808,3286424063,CZ
 3286424064,3286424319,LV
 3286424320,3286424575,FR
-3286424576,3286424831,UA
 3286424832,3286425087,TR
 3286425088,3286425343,RU
 3286425344,3286425599,IT
@@ -81207,7 +85406,6 @@
 3286937600,3286937855,CH
 3286937856,3286938111,RO
 3286938112,3286938367,DE
-3286938368,3286938623,ES
 3286938624,3286938879,CH
 3286939136,3286939391,RO
 3286939392,3286939647,DE
@@ -81320,7 +85518,6 @@
 3287444480,3287444991,PL
 3287445504,3287446527,UA
 3287446528,3287447039,PL
-3287447040,3287447551,IL
 3287447552,3287448063,DK
 3287448064,3287448575,GB
 3287448576,3287449087,PL
@@ -81416,7 +85613,7 @@
 3287640064,3287640575,PL
 3287640576,3287641087,SI
 3287641088,3287641599,EU
-3287642112,3287642623,UA
+3287642112,3287642623,GB
 3287642624,3287643135,BE
 3287643136,3287643647,IT
 3287643648,3287644671,UA
@@ -81488,8 +85685,7 @@
 3287706112,3287706623,RU
 3287706624,3287707135,GB
 3287707648,3287708159,BE
-3287708160,3287708671,NL
-3287708672,3287709183,EU
+3287708160,3287709183,NL
 3287709184,3287709695,RU
 3287709696,3287710207,SE
 3287710208,3287710719,RU
@@ -81782,7 +85978,7 @@
 3288779008,3288779263,ZA
 3288779264,3288779775,KE
 3288779776,3288780799,NG
-3288781824,3288782591,ZA
+3288780800,3288782591,ZA
 3288782592,3288782847,KE
 3288783872,3288784127,KE
 3288784128,3288784895,ZA
@@ -81866,6 +86062,11 @@
 3289186304,3289212159,ZA
 3289212160,3289212415,MZ
 3289212416,3289212927,NG
+3289212928,3289213183,ZM
+3289213184,3289213439,TZ
+3289213440,3289213951,ZA
+3289213952,3289214207,MA
+3289214208,3289214463,AO
 3289214976,3289215231,NG
 3289215232,3289217279,ZA
 3289217280,3289217535,KE
@@ -81888,6 +86089,7 @@
 3289233920,3289234175,TZ
 3289234176,3289235199,ZA
 3289235200,3289235455,KE
+3289235456,3289237503,GH
 3289237504,3289237759,ZA
 3289238528,3289238783,AO
 3289238784,3289239039,ZA
@@ -81901,7 +86103,12 @@
 3289248256,3289248511,NG
 3289248512,3289248767,AO
 3289248768,3289249023,EG
+3289249024,3289249279,NG
 3289249280,3289250815,ZA
+3289250816,3289251071,GH
+3289251072,3289251327,EG
+3289251328,3289251583,ZA
+3289251584,3289251839,KE
 3289251840,3289319423,ZA
 3289319424,3289319679,A2
 3289319680,3289319935,ZA
@@ -81939,7 +86146,9 @@
 3290031360,3290060287,ZA
 3290060288,3290060543,SZ
 3290060544,3290103807,ZA
-3290103808,3290120191,CA
+3290103808,3290110335,CA
+3290110336,3290110367,US
+3290110368,3290120191,CA
 3290120192,3290128383,MU
 3290128384,3290136575,ZW
 3290136576,3290169343,NG
@@ -81973,8 +86182,11 @@
 3290284032,3290288127,AO
 3290288128,3290292223,NG
 3290292224,3290296319,GH
-3290296320,3290431487,ZA
+3290296320,3290423295,ZA
+3290423296,3290427391,NA
+3290427392,3290431487,ZA
 3290431488,3290433535,JM
+3290435584,3290439679,DZ
 3290439680,3290447871,TT
 3290447872,3290456063,AR
 3290456064,3290460159,MZ
@@ -82006,10 +86218,10 @@
 3291078656,3291086847,DZ
 3291086848,3291103231,PR
 3291103232,3291123711,ZA
-3291123712,3291127807,BG
-3291127808,3291131903,ZA
-3291131904,3291135999,BG
-3291136000,3291148287,ZA
+3291123712,3291135999,BG
+3291136000,3291140095,ZA
+3291140096,3291144191,BG
+3291144192,3291148287,ZA
 3291148288,3291152383,BG
 3291152384,3291168767,ZA
 3291168768,3291176959,TZ
@@ -82162,6 +86374,7 @@
 3291548928,3291549183,MG
 3291549184,3291549439,GH
 3291549440,3291549695,UG
+3291549696,3291549951,LR
 3291611136,3291611391,ZA
 3291742208,3292004351,US
 3292004352,3292266495,SC
@@ -82171,8 +86384,11 @@
 3300925440,3300929535,MG
 3300933632,3300950015,MU
 3300953088,3300954111,MU
+3300954112,3300958207,NG
 3300966400,3301113855,ZA
-3301113856,3301146623,NG
+3301113856,3301138431,NG
+3301138432,3301140479,ZA
+3301140480,3301146623,NG
 3301146624,3301171199,ZA
 3301171200,3301172223,IN
 3301172224,3301175295,ZA
@@ -82182,24 +86398,26 @@
 3301185536,3301187583,GB
 3301187584,3301189631,FR
 3301189632,3301191679,US
-3301191680,3301191680,CA
-3301191681,3301193727,SC
+3301191680,3301193727,CA
 3301193728,3301195775,JP
 3301195776,3301197823,DE
 3301197824,3301199871,GB
 3301199872,3301201919,US
-3301201920,3301203967,SC
+3301201920,3301203967,NL
 3301203968,3301204991,DK
 3301204992,3301205247,SE
 3301205248,3301206015,DK
-3301206016,3301212159,SC
-3301212160,3301214207,US
+3301206016,3301208063,SC
+3301208064,3301214207,US
 3301214208,3301216255,SE
 3301216256,3301220351,SC
-3301220352,3301224447,SE
-3301224448,3301228543,SC
+3301220352,3301222399,SE
+3301222400,3301224447,BE
+3301224448,3301226495,SC
+3301226496,3301228543,US
 3301228544,3301230591,IE
-3301230592,3301236735,SC
+3301230592,3301232639,FI
+3301232640,3301236735,SC
 3301236736,3301238783,CA
 3301238784,3301240831,US
 3301240832,3301242879,SE
@@ -82222,6 +86440,7 @@
 3301474304,3301490687,MA
 3301490688,3301494783,ZA
 3301494784,3301498879,ZM
+3301502976,3301507071,MA
 3301507328,3301507583,MU
 3301507584,3301507839,GH
 3301507840,3301508095,EG
@@ -82275,7 +86494,8 @@
 3302498304,3302502399,NA
 3302502400,3302505471,AO
 3302505472,3302506495,NA
-3302506496,3302514687,MU
+3302506496,3302508543,KE
+3302508544,3302514687,MU
 3302522880,3302523903,KE
 3302523904,3302525951,ZA
 3302525952,3302526975,EG
@@ -82307,6 +86527,10 @@
 3302544640,3302544895,MU
 3302544896,3302545151,GH
 3302545152,3302545407,ZA
+3302545408,3302545919,CD
+3302545920,3302546431,TZ
+3302546432,3302546943,SL
+3302546944,3302547455,KE
 3302548480,3302548991,GH
 3302548992,3302549503,ZA
 3302549504,3302550015,KE
@@ -82380,6 +86604,7 @@
 3302959360,3302959615,MG
 3302959616,3302959871,TD
 3302959872,3302960127,SC
+3302960128,3302960383,LR
 3302985728,3302987775,DJ
 3304062976,3304456191,SC
 3304456192,3304521727,NG
@@ -82654,8 +86879,7 @@
 3322202112,3322203135,GB
 3322203136,3322339583,US
 3322339584,3322339839,GB
-3322339840,3322353663,US
-3322353664,3322354175,VI
+3322339840,3322354175,US
 3322354176,3322354431,JP
 3322354432,3322609663,US
 3322609664,3322610687,SA
@@ -82917,9 +87141,7 @@
 3324943048,3324943055,CA
 3324943056,3324980223,US
 3324980224,3324981247,CA
-3324981248,3324998399,US
-3324998400,3324998655,A1
-3324998656,3325034495,US
+3324981248,3325034495,US
 3325034496,3325035519,NZ
 3325035520,3325067263,US
 3325067264,3325100287,CA
@@ -82930,6 +87152,7 @@
 3325131776,3325132031,AU
 3325132032,3325132799,US
 3325132800,3325133823,CO
+3325133824,3325134335,BR
 3325134336,3325136127,US
 3325136128,3325136383,CA
 3325136384,3325142015,US
@@ -82953,7 +87176,9 @@
 3325207808,3325207935,US
 3325207936,3325208119,CA
 3325208120,3325208123,US
-3325208124,3325211419,CA
+3325208124,3325208403,CA
+3325208404,3325208407,US
+3325208408,3325211419,CA
 3325211420,3325211423,US
 3325211424,3325211647,CA
 3325211648,3325211775,US
@@ -83300,8 +87525,7 @@
 3330640896,3330641151,CH
 3330641152,3330646527,US
 3330646528,3330647295,CA
-3330647296,3330647807,US
-3330648064,3330649599,US
+3330647296,3330649599,US
 3330649600,3330649855,CA
 3330649856,3330662911,US
 3330662912,3330663167,GB
@@ -83362,9 +87586,7 @@
 3331102464,3331102719,CA
 3331102720,3331194879,US
 3331194880,3331260415,AU
-3331260416,3331352575,US
-3331352576,3331352831,A1
-3331352832,3331352919,US
+3331260416,3331352919,US
 3331352920,3331352920,A1
 3331352921,3331353087,US
 3331353088,3331353599,A1
@@ -83379,7 +87601,7 @@
 3331524608,3331527167,US
 3331527168,3331527679,GB
 3331527680,3331563519,US
-3331563520,3331563775,CH
+3331563520,3331563775,IN
 3331563776,3331565567,US
 3331565568,3331566079,CA
 3331566080,3331632639,US
@@ -83435,13 +87657,16 @@
 3332492032,3332500735,CA
 3332500736,3332500991,US
 3332500992,3332501247,CA
+3332501248,3332501503,US
 3332501504,3332503039,CA
 3332503040,3332503551,US
 3332503552,3332505343,CA
 3332505344,3332505855,US
 3332505856,3332508671,CA
 3332508672,3332508927,US
-3332508928,3332528127,CA
+3332508928,3332525311,CA
+3332525312,3332525823,US
+3332525824,3332528127,CA
 3332528128,3332529663,US
 3332529664,3332554751,CA
 3332554752,3332558847,US
@@ -83489,8 +87714,8 @@
 3332876288,3332882431,US
 3332882432,3332890623,KN
 3332890624,3332897279,US
-3332897280,3332898559,CA
-3332898560,3332899071,US
+3332897280,3332898815,CA
+3332898816,3332899071,US
 3332899072,3332906495,CA
 3332906496,3332909567,US
 3332909568,3332922879,CA
@@ -83586,7 +87811,9 @@
 3334007552,3334007807,EU
 3334007808,3334020095,US
 3334020096,3334021119,CA
-3334021120,3334138623,US
+3334021120,3334068479,US
+3334068480,3334068735,CA
+3334068736,3334138623,US
 3334138624,3334138879,BM
 3334138880,3334187775,US
 3334187776,3334188031,BM
@@ -83689,7 +87916,8 @@
 3337682944,3337892607,US
 3337892608,3337892671,HK
 3337892672,3337893119,US
-3337893120,3337893631,CN
+3337893120,3337893375,CN
+3337893376,3337893631,CA
 3337893632,3337895679,US
 3337895680,3337895935,CN
 3337895936,3337900031,PR
@@ -83697,13 +87925,13 @@
 3337948672,3337949183,CA
 3337949184,3337957375,US
 3337957376,3337958399,CA
-3337958400,3337960447,US
+3337958400,3337958783,US
+3337958784,3337958784,CA
+3337958785,3337960447,US
 3337960448,3337961471,CA
 3337961472,3337961727,US
 3337961728,3337961983,CA
-3337961984,3337963391,US
-3337963392,3337963519,CA
-3337963520,3337963639,US
+3337961984,3337963639,US
 3337963640,3337963647,CA
 3337963648,3337964031,US
 3337964032,3337964543,A2
@@ -83840,7 +88068,11 @@
 3338935040,3338935295,GB
 3338935296,3338964991,US
 3338964992,3338965247,CA
-3338965248,3339075583,US
+3338965248,3338976767,US
+3338976768,3338977023,CA
+3338977024,3338993407,US
+3338993408,3338993663,CA
+3338993664,3339075583,US
 3339075584,3339076863,GB
 3339076864,3339077631,JP
 3339077632,3339077887,SG
@@ -83860,8 +88092,7 @@
 3339093504,3339094015,NL
 3339094016,3339142655,US
 3339142656,3339142911,NL
-3339142912,3339146239,US
-3339146752,3339147007,US
+3339142912,3339147007,US
 3339147008,3339147775,CA
 3339147776,3339148031,MS
 3339148032,3339153407,US
@@ -83884,11 +88115,13 @@
 3339261952,3339263999,HK
 3339264000,3339327999,US
 3339328512,3339329535,CA
-3339329536,3339337727,US
-3339337984,3339338239,US
+3339329536,3339338239,US
 3339338240,3339338495,CA
-3339338496,3339669503,US
+3339338496,3339342847,US
+3339342848,3339343103,CA
+3339343104,3339669503,US
 3339669504,3339671807,CA
+3339671808,3339672063,US
 3339672576,3339679487,US
 3339679488,3339679743,CN
 3339679744,3339707391,US
@@ -83938,7 +88171,9 @@
 3340387328,3340388351,CA
 3340388352,3340390399,US
 3340390400,3340391423,CA
-3340391424,3340429823,US
+3340391424,3340418559,US
+3340418560,3340419071,CA
+3340419072,3340429823,US
 3340429824,3340430079,PA
 3340430080,3340452863,US
 3340452864,3340453887,CA
@@ -83954,14 +88189,17 @@
 3340584704,3340584959,KW
 3340584960,3340664831,US
 3340664832,3340665855,CA
-3340665856,3340666879,US
-3340668416,3340677119,US
+3340668928,3340677119,US
 3340677120,3340679167,CA
 3340679168,3340694783,US
 3340694784,3340695039,CA
-3340695040,3340857343,US
+3340695040,3340851455,US
+3340851456,3340851711,CA
+3340851712,3340852479,US
+3340852736,3340853247,CA
+3340853248,3340857343,US
 3340857344,3340858367,CA
-3340859136,3340925567,US
+3340858368,3340925567,US
 3340925568,3340925575,DE
 3340925576,3340925815,US
 3340925816,3340925823,AU
@@ -84009,9 +88247,10 @@
 3341518848,3341520895,CA
 3341520896,3341521663,US
 3341521664,3341531135,CA
-3341531136,3341534207,US
-3341534976,3341537279,CA
-3341537280,3341546239,US
+3341531136,3341533951,US
+3341533952,3341534207,CA
+3341534976,3341536767,CA
+3341536768,3341546239,US
 3341546240,3341547007,CA
 3341547008,3341547519,CH
 3341547520,3341549567,CA
@@ -84090,7 +88329,9 @@
 3342603264,3342604799,US
 3342604800,3342605311,CA
 3342605312,3342605567,US
-3342605568,3342663679,CA
+3342605568,3342629631,CA
+3342629632,3342629887,US
+3342629888,3342663679,CA
 3342663680,3342795007,US
 3342795008,3342795263,AP
 3342795264,3342831103,US
@@ -84117,13 +88358,7 @@
 3343355904,3343364095,CA
 3343364096,3343365631,US
 3343365632,3343372543,CA
-3343372800,3343378511,US
-3343378512,3343378519,GB
-3343378520,3343378535,US
-3343378536,3343378543,GB
-3343378544,3343378575,US
-3343378576,3343378583,GB
-3343378584,3343378823,US
+3343372800,3343378823,US
 3343378824,3343378839,SE
 3343378840,3343379079,US
 3343379080,3343379087,SE
@@ -84322,7 +88557,9 @@
 3346327552,3346328575,CA
 3346328576,3346329599,US
 3346329600,3346330623,CA
-3346330624,3346497535,US
+3346330624,3346399231,US
+3346399232,3346464767,FR
+3346464768,3346497535,US
 3346497536,3346498559,CA
 3346498560,3346520063,US
 3346520064,3346521087,CA
@@ -84445,7 +88682,7 @@
 3350618112,3350619135,CA
 3350619136,3350623231,US
 3350623232,3350624255,CA
-3350624256,3350626303,US
+3350624256,3350625279,US
 3350626304,3350628351,CA
 3350628352,3350642687,US
 3350642688,3350643711,TC
@@ -84458,11 +88695,17 @@
 3350650880,3350790399,US
 3350790400,3350814975,CA
 3350814976,3350815231,US
-3350815232,3350825727,CA
+3350815232,3350823423,CA
+3350823424,3350823935,US
+3350823936,3350825727,CA
 3350825728,3350825983,GB
-3350825984,3350836223,CA
+3350825984,3350834687,CA
+3350834688,3350835199,US
+3350835200,3350836735,CA
 3350836736,3350836991,US
-3350836992,3350843391,CA
+3350836992,3350837247,CA
+3350837248,3350837759,US
+3350837760,3350843391,CA
 3350843392,3350843647,US
 3350843648,3350855679,CA
 3350855680,3350862079,US
@@ -84479,7 +88722,7 @@
 3351004160,3351005183,CA
 3351005184,3351015423,US
 3351015424,3351016447,CA
-3351016448,3351028223,US
+3351016448,3351027711,US
 3351029760,3351030783,US
 3351030784,3351031807,CA
 3351031808,3351034879,US
@@ -84491,7 +88734,9 @@
 3351043584,3351044095,CA
 3351044096,3351047167,US
 3351047168,3351047679,A1
-3351047680,3351071743,US
+3351047680,3351058943,US
+3351058944,3351059455,CA
+3351059456,3351071743,US
 3351071744,3351072767,CA
 3351072768,3351074815,US
 3351074816,3351076863,CA
@@ -84505,7 +88750,9 @@
 3351112704,3351113727,CA
 3351113728,3351129087,US
 3351129088,3351130111,A2
-3351130112,3351232511,US
+3351130112,3351196159,US
+3351196160,3351196671,VG
+3351196672,3351232511,US
 3351232512,3351232767,IL
 3351232768,3351275519,US
 3351275520,3351276543,CA
@@ -84626,6 +88873,7 @@
 3351441408,3351441919,US
 3351441920,3351442175,CA
 3351442176,3351474687,US
+3351474688,3351475199,CA
 3351475200,3351475711,US
 3351475712,3351475967,IS
 3351475968,3351483391,US
@@ -84648,8 +88896,9 @@
 3351524096,3351524351,GB
 3351524352,3351642111,US
 3351642112,3351695871,CA
+3351695872,3351696383,US
 3351696384,3351696639,CA
-3351696640,3351696895,US
+3351696640,3351697407,US
 3351697408,3351698431,CA
 3351698432,3351699199,US
 3351699200,3351699455,CA
@@ -84672,7 +88921,9 @@
 3351933952,3351939071,US
 3351939072,3351959551,CA
 3351959552,3351961599,US
-3351961600,3351965695,CA
+3351961600,3351963647,CA
+3351963648,3351964159,US
+3351964160,3351965695,CA
 3351965696,3351969279,US
 3351969280,3351969535,CA
 3351969536,3351969791,US
@@ -84697,7 +88948,9 @@
 3352563200,3352563455,US
 3352563456,3352573951,CA
 3352573952,3352574463,US
-3352574464,3352583935,CA
+3352574464,3352581631,CA
+3352581632,3352582143,US
+3352582144,3352583935,CA
 3352583936,3352584191,US
 3352584192,3352591359,CA
 3352591360,3352591615,US
@@ -84767,7 +89020,9 @@
 3354686976,3354687231,CN
 3354687232,3354687487,US
 3354687488,3354688511,CA
-3354688512,3354731018,US
+3354688512,3354707455,US
+3354707456,3354707967,CA
+3354707968,3354731018,US
 3354731019,3354731019,EU
 3354731020,3354731519,US
 3354731520,3354731775,AP
@@ -84787,12 +89042,13 @@
 3354955776,3354956031,AR
 3354956032,3354972159,US
 3354972160,3354972415,CA
-3354972416,3355013119,US
-3355013120,3355017215,CA
+3354972416,3355012607,US
+3355012608,3355017215,CA
 3355017216,3355052287,US
 3355052288,3355053311,CA
-3355053312,3355053567,US
-3355054080,3355260927,US
+3355053312,3355249151,US
+3355249152,3355249663,CA
+3355249664,3355260927,US
 3355260928,3355262719,CA
 3355262720,3355272189,US
 3355272190,3355272190,EU
@@ -84834,7 +89090,9 @@
 3355448832,3355449343,SX
 3355449344,3355450367,CU
 3355450368,3355451391,EC
-3355451392,3355459327,BR
+3355451392,3355458559,BR
+3355458560,3355459071,HN
+3355459072,3355459327,BR
 3355459328,3355459583,EC
 3355459584,3355459839,PA
 3355459840,3355460095,VE
@@ -84867,7 +89125,8 @@
 3355472640,3355473407,CL
 3355473408,3355473919,PE
 3355473920,3355475199,CL
-3355475200,3355478015,MX
+3355475200,3355477503,MX
+3355477504,3355478015,BR
 3355478016,3355478271,PE
 3355478272,3355478783,US
 3355478784,3355479039,VE
@@ -84899,6 +89158,7 @@
 3355516928,3355525119,AR
 3355525120,3355535359,CO
 3355535360,3355537407,TT
+3355537408,3355537663,BR
 3355537664,3355537919,AR
 3355538176,3355538431,CL
 3355538432,3355539199,AR
@@ -84992,7 +89252,7 @@
 3355843584,3355844863,EC
 3355844864,3355845119,CL
 3355845120,3355845375,EC
-3355845376,3355848703,BR
+3355845376,3355848959,BR
 3355849728,3355849983,PA
 3355849984,3355850495,CL
 3355850496,3355850751,NI
@@ -85010,7 +89270,7 @@
 3355885568,3355901951,GT
 3355901952,3355902975,BR
 3355902976,3355903999,CL
-3355904000,3355905023,BR
+3355904000,3355905535,BR
 3355905536,3355905791,PY
 3355905792,3355906047,AR
 3355906048,3355910143,CL
@@ -85018,7 +89278,9 @@
 3355918336,3355923455,EC
 3355923456,3355924479,UY
 3355924480,3355926527,TT
-3355926528,3355930623,PA
+3355926528,3355927039,NL
+3355927040,3355928063,US
+3355928064,3355930623,PA
 3355930624,3355934719,BR
 3355934720,3355939839,AR
 3355939840,3355940863,SR
@@ -85028,46 +89290,46 @@
 3355949056,3355951103,CW
 3355951104,3355967487,EC
 3355967488,3356033023,VE
-3356033280,3356033791,BR
+3356033024,3356033791,BR
 3356033792,3356034047,CL
 3356034048,3356035071,PY
 3356035072,3356037119,MX
 3356037120,3356041215,CO
 3356041216,3356049407,CR
 3356049408,3356049663,CL
-3356049664,3356050175,BR
-3356050432,3356051455,BR
+3356049664,3356051455,BR
 3356051456,3356051711,CO
 3356051712,3356051967,CL
 3356051968,3356052223,GT
 3356052224,3356052479,AR
-3356052480,3356052735,BR
+3356052480,3356053247,BR
 3356053248,3356054015,CL
 3356054016,3356054527,US
-3356054528,3356057599,BR
+3356054528,3356056575,BR
+3356056832,3356057087,BR
+3356057088,3356057343,CO
+3356057344,3356057599,BR
 3356057600,3356057855,EC
 3356057856,3356059135,CL
 3356059136,3356060671,BR
 3356060672,3356061695,CL
 3356061696,3356062463,BR
 3356062464,3356062719,JM
-3356062720,3356062975,BR
-3356062976,3356063231,CR
-3356063232,3356063743,BR
+3356062720,3356063743,CR
 3356064000,3356064255,BR
 3356064256,3356064511,CL
-3356064768,3356065791,BR
+3356064512,3356065791,BR
 3356065792,3356066047,CL
 3356066048,3356069119,BR
 3356069120,3356069631,CL
-3356069888,3356070143,BR
+3356069632,3356070143,BR
 3356070144,3356070655,CL
 3356070656,3356070911,AR
 3356070912,3356071423,BR
 3356071424,3356072447,CL
 3356073216,3356073471,AR
-3356073472,3356075007,BR
-3356075008,3356076287,BO
+3356073472,3356075263,BR
+3356075264,3356076287,BO
 3356076288,3356078079,BR
 3356078080,3356078335,EC
 3356078336,3356079359,CL
@@ -85112,7 +89374,13 @@
 3356102400,3356102655,PA
 3356102656,3356105727,CL
 3356105728,3356106751,SV
-3356106752,3356113919,BR
+3356106752,3356109263,BR
+3356109264,3356109271,DE
+3356109272,3356109495,BR
+3356109496,3356109503,IT
+3356109504,3356109687,BR
+3356109688,3356109695,CA
+3356109696,3356113919,BR
 3356113920,3356114943,UY
 3356114944,3356123135,PE
 3356123136,3356131839,AR
@@ -85323,6 +89591,7 @@
 3357007872,3357011967,BR
 3357011968,3357016063,MX
 3357016064,3357018623,CO
+3357018624,3357019135,BR
 3357019136,3357020159,CL
 3357020160,3357032447,CO
 3357032448,3357040639,BR
@@ -85500,16 +89769,14 @@
 3357556736,3357556991,VE
 3357556992,3357557247,AR
 3357557248,3357557759,MX
-3357557760,3357558783,EC
-3357558784,3357558895,AR
-3357558896,3357558903,EC
-3357558904,3357559039,AR
-3357559040,3357559295,EC
+3357557760,3357559295,EC
 3357559296,3357559551,CA
 3357559552,3357559807,US
 3357559808,3357559935,AR
 3357559936,3357560063,VE
-3357560064,3357560199,AR
+3357560064,3357560159,AR
+3357560160,3357560167,VE
+3357560168,3357560199,AR
 3357560200,3357560207,VE
 3357560208,3357560247,AR
 3357560248,3357560255,VE
@@ -85614,12 +89881,7 @@
 3358151272,3358151423,AR
 3358151424,3358151551,EC
 3358151552,3358151679,AR
-3358151680,3358151807,PE
-3358151808,3358151935,AR
-3358151936,3358152191,PE
-3358152192,3358152543,AR
-3358152544,3358152575,PE
-3358152576,3358152703,AR
+3358151680,3358152703,PE
 3358152704,3358152959,US
 3358152960,3358153215,EC
 3358153216,3358153279,AR
@@ -85650,8 +89912,8 @@
 3358326784,3358392319,VE
 3358392320,3358457855,AR
 3358457856,3358523391,PA
-3358523392,3358524159,VE
-3358524160,3358524415,AR
+3358523392,3358523903,VE
+3358523904,3358524415,AR
 3358524416,3358525951,VE
 3358525952,3358526463,AR
 3358526464,3358529535,VE
@@ -85865,9 +90127,13 @@
 3360227328,3360228095,CO
 3360228096,3360228991,CL
 3360228992,3360229007,CO
-3360229008,3360229023,US
+3360229008,3360229012,US
+3360229013,3360229013,CL
+3360229014,3360229023,US
 3360229024,3360231423,CO
-3360231424,3360231935,CL
+3360231424,3360231775,CL
+3360231776,3360231807,US
+3360231808,3360231935,CL
 3360231936,3360232447,CO
 3360232448,3360232703,CL
 3360232704,3360235263,CO
@@ -85987,8 +90253,8 @@
 3360701952,3360702207,CO
 3360702208,3360705535,AR
 3360705536,3360706047,US
-3360706048,3360706815,AR
-3360706816,3360707327,US
+3360706048,3360707071,AR
+3360707072,3360707327,US
 3360707328,3360707583,AR
 3360707584,3360708095,US
 3360708096,3360708223,AR
@@ -86150,7 +90416,9 @@
 3362552144,3362552159,PR
 3362552160,3362553023,AR
 3362553024,3362553039,PR
-3362553040,3362553855,AR
+3362553040,3362553247,AR
+3362553248,3362553263,CO
+3362553264,3362553855,AR
 3362553856,3362557951,PY
 3362557952,3362562047,AR
 3362570240,3362586623,UY
@@ -86158,9 +90426,7 @@
 3362652160,3362664447,PE
 3362664448,3362668543,BO
 3362668544,3362684927,EC
-3362684928,3362687999,AR
-3362688000,3362688511,CO
-3362688512,3362688767,AR
+3362684928,3362688767,AR
 3362688768,3362689279,CO
 3362689280,3362689311,AR
 3362689312,3362690367,CO
@@ -86279,9 +90545,13 @@
 3367840768,3367841791,HN
 3367841792,3368052991,BR
 3368052992,3368053247,PE
-3368053760,3368086015,BR
+3368053760,3368086527,BR
 3368086528,3368087551,CR
-3368087552,3370188799,BR
+3368087552,3368157183,BR
+3368157184,3368173567,MX
+3368173568,3368601799,BR
+3368601800,3368601800,A1
+3368601801,3370188799,BR
 3370188800,3370196991,MX
 3370196992,3370214399,BR
 3370214400,3370215423,AR
@@ -86293,13 +90563,14 @@
 3370506240,3370507263,VE
 3370507264,3370514943,BR
 3370515456,3370516479,AR
-3370516480,3371106303,BR
+3370516480,3370926079,BR
+3370926080,3370942463,MX
+3370942464,3371106303,BR
 3371106304,3371122687,MX
 3371122688,3378511871,BR
 3378511872,3380506879,MX
 3380506880,3380507135,BR
 3380507136,3380744191,MX
-3380744192,3380745215,CW
 3380745216,3380746239,BR
 3380746240,3380747263,PE
 3380747264,3380748287,BR
@@ -86335,6 +90606,7 @@
 3380825088,3380825343,MX
 3380825344,3380825599,HT
 3380825600,3380825855,CO
+3380825856,3380826111,AR
 3380826112,3380828159,BR
 3380828160,3380828671,MX
 3380828672,3380829183,CO
@@ -86343,14 +90615,17 @@
 3380830464,3380830719,CO
 3380830720,3380831231,PA
 3380831232,3380831743,MX
+3380831744,3380831999,AR
 3380832000,3380832255,SR
 3380832256,3380832767,MX
-3380833024,3380833279,DO
+3380832768,3380833279,DO
 3380833280,3380833791,MX
 3380833792,3380834303,SV
 3380834304,3380834815,MX
 3380834816,3380835071,CO
+3380835072,3380835327,NI
 3380835328,3380835839,MX
+3380835840,3380836351,AR
 3380836352,3380836607,MX
 3380836608,3380836863,PE
 3380836864,3380837375,SV
@@ -86494,7 +90769,7 @@
 3386474496,3386490879,UY
 3386490880,3386499071,CO
 3386499072,3386503167,AR
-3386503168,3386504191,PE
+3386503168,3386504191,CL
 3386504192,3386505215,AR
 3386505216,3386507263,CL
 3386507264,3386523647,EC
@@ -86562,21 +90837,7 @@
 3387424768,3387555839,CO
 3387555840,3387568127,AR
 3387568128,3387572223,PE
-3387572224,3387572539,AR
-3387572540,3387572543,CO
-3387572544,3387573375,AR
-3387573376,3387573887,CO
-3387573888,3387574015,AR
-3387574016,3387574143,CO
-3387574144,3387574783,AR
-3387574784,3387575039,CO
-3387575040,3387575295,AR
-3387575296,3387575423,CO
-3387575424,3387575551,AR
-3387575552,3387575567,CO
-3387575568,3387575679,AR
-3387575680,3387576063,CO
-3387576064,3387576319,AR
+3387572224,3387576319,CO
 3387576320,3387578367,EC
 3387578368,3387584511,AR
 3387584512,3387588607,PE
@@ -86761,7 +91022,6 @@
 3389326336,3389326847,TW
 3389326848,3389327359,AU
 3389327360,3389329407,TW
-3389329408,3389333503,PH
 3389333504,3389341695,BD
 3389341696,3389345791,JP
 3389345792,3389349887,TH
@@ -86897,7 +91157,6 @@
 3389609472,3389609727,SG
 3389609728,3389609983,AU
 3389609984,3389610239,NZ
-3389610496,3389610751,HK
 3389610752,3389611519,IN
 3389611520,3389612031,AU
 3389612032,3389616127,MY
@@ -86908,7 +91167,7 @@
 3389661184,3389669375,ID
 3389669376,3389673471,CN
 3389673472,3389677567,AU
-3389677568,3389685759,JP
+3389677568,3389681663,JP
 3389685760,3389718527,AU
 3389718528,3389784063,JP
 3389784064,3389784319,NZ
@@ -87140,7 +91399,9 @@
 3391094784,3391192063,JP
 3391192064,3391192319,AP
 3391192320,3391356927,JP
-3391356928,3391444479,NZ
+3391356928,3391441407,NZ
+3391441408,3391441663,PH
+3391441664,3391444479,NZ
 3391444480,3391444991,VN
 3391444992,3391453183,NZ
 3391453184,3391453439,ID
@@ -87215,7 +91476,6 @@
 3391725568,3391733759,TH
 3391733760,3391734015,CN
 3391734016,3391734783,AU
-3391735808,3391736831,JP
 3391736832,3391737855,IN
 3391737856,3391741951,JP
 3391741952,3391746047,IN
@@ -87241,7 +91501,6 @@
 3391837184,3391838207,AU
 3391838208,3391838719,ID
 3391838720,3391838975,IN
-3391838976,3391839231,AU
 3391839232,3391840255,ID
 3391840256,3391841279,JP
 3391841280,3391842303,MY
@@ -87364,7 +91623,9 @@
 3392114432,3392114687,KR
 3392114688,3392118783,GU
 3392118784,3392126975,MY
-3392126976,3392135167,ID
+3392126976,3392130303,ID
+3392130304,3392130815,TW
+3392130816,3392135167,ID
 3392135168,3392143359,TH
 3392143360,3392208895,JP
 3392208896,3392286975,NZ
@@ -87452,7 +91713,9 @@
 3392499712,3392503807,JP
 3392503808,3392507903,HK
 3392512000,3392516095,BD
-3392516096,3392524287,AU
+3392516096,3392519167,AU
+3392519168,3392519679,NZ
+3392519680,3392524287,AU
 3392524288,3392528383,JP
 3392528384,3392536575,ID
 3392536576,3392602111,IN
@@ -88048,7 +92311,6 @@
 3394953216,3394957311,CN
 3394957312,3394959359,AU
 3394959360,3394960383,HK
-3394960384,3394961407,PH
 3394961408,3394962431,CN
 3394962432,3394963455,AU
 3394963456,3394965503,ID
@@ -88354,7 +92616,6 @@
 3397738496,3397742591,MY
 3397742592,3397746687,JP
 3397746688,3397763071,TH
-3397763072,3397771263,PH
 3397771264,3397779455,TW
 3397779456,3397781503,ID
 3397781504,3397783551,BD
@@ -88518,7 +92779,6 @@
 3398684672,3398688767,JP
 3398688768,3398705151,ID
 3398705152,3398709247,CN
-3398709248,3398711295,AU
 3398713344,3398729727,CN
 3398729728,3398737919,AU
 3398737920,3398742015,SG
@@ -88859,7 +93119,9 @@
 3400649944,3400649951,HK
 3400649952,3400650143,SG
 3400650144,3400650159,HK
-3400650160,3400650751,SG
+3400650160,3400650409,SG
+3400650410,3400650410,AU
+3400650411,3400650751,SG
 3400650752,3400654847,AU
 3400654848,3400663039,IN
 3400663040,3400683519,MY
@@ -89246,9 +93508,7 @@
 3406454528,3406454783,CN
 3406454784,3406462207,AU
 3406462208,3406462463,CN
-3406462464,3406512383,AU
-3406512384,3406512639,IN
-3406512640,3406513663,AU
+3406462464,3406513663,AU
 3406513664,3406513919,CN
 3406513920,3406514175,AU
 3406514176,3406514431,IN
@@ -89379,7 +93639,8 @@
 3406737408,3406737663,ID
 3406737664,3406739199,AU
 3406739200,3406739455,ID
-3406739456,3406741503,HK
+3406739456,3406740991,HK
+3406740992,3406741503,SG
 3406741504,3406741759,CN
 3406741760,3406742015,AU
 3406742016,3406742527,CN
@@ -90253,7 +94514,8 @@
 3407938560,3407938815,CN
 3407938816,3407939327,AU
 3407939328,3407939583,CN
-3407939584,3407941631,HK
+3407939584,3407940607,SG
+3407940608,3407941631,HK
 3407941632,3407942911,AU
 3407942912,3407943167,CN
 3407943168,3407944191,AU
@@ -90425,8 +94687,8 @@
 3409455104,3409455359,CN
 3409455360,3409456639,AU
 3409456640,3409456895,CN
-3409456896,3409457151,AU
-3409457152,3409459199,HK
+3409456896,3409457152,AU
+3409457153,3409459199,HK
 3409459200,3409462271,AU
 3409462272,3409462783,CN
 3409462784,3409465855,AU
@@ -90594,7 +94856,6 @@
 3410903040,3410911231,HK
 3410911232,3410915327,TH
 3410915328,3410919423,ID
-3410919424,3410923519,IN
 3410927616,3410931711,NP
 3410931712,3410935807,TW
 3410935808,3410939903,MY
@@ -90628,7 +94889,8 @@
 3411051008,3411051263,PK
 3411051264,3411051519,SG
 3411051520,3411052543,CN
-3411052544,3411054591,HK
+3411052544,3411052544,JP
+3411052545,3411054591,HK
 3411054592,3411058687,CN
 3411058688,3411062783,AU
 3411062784,3411064831,HK
@@ -90652,12 +94914,11 @@
 3411149312,3411149823,MV
 3411149824,3411150847,IN
 3411150848,3411154943,HK
-3411154944,3411156991,JP
 3411156992,3411161087,PH
 3411161088,3411165183,PK
 3411165184,3411173375,MY
 3411173376,3411177471,AU
-3411177472,3411189759,JP
+3411181568,3411189759,JP
 3411189760,3411197951,AU
 3411197952,3411202047,BD
 3411202048,3411204607,AU
@@ -90777,7 +95038,9 @@
 3411857408,3411859249,JP
 3411859250,3411859251,AU
 3411859252,3411859711,JP
-3411859712,3411860223,AP
+3411859712,3411859815,AP
+3411859816,3411859816,CN
+3411859817,3411860223,AP
 3411860224,3411861503,JP
 3411861504,3411869695,AU
 3411869696,3411943423,CN
@@ -90934,7 +95197,9 @@
 3413344256,3413360639,PH
 3413360640,3413377023,MY
 3413377024,3413387519,SG
-3413387520,3413387775,AP
+3413387520,3413387695,AP
+3413387696,3413387711,SG
+3413387712,3413387775,AP
 3413387776,3413437951,SG
 3413437952,3413438207,AP
 3413438208,3413524479,SG
@@ -91191,7 +95456,6 @@
 3416262656,3416264703,AU
 3416264704,3416268799,JP
 3416268800,3416272895,HK
-3416272896,3416274943,MN
 3416274944,3416276991,ID
 3416276992,3416285183,HK
 3416285184,3416287231,VN
@@ -91216,7 +95480,6 @@
 3416342528,3416371199,AU
 3416371200,3416371711,PH
 3416371712,3416371967,VN
-3416371968,3416372223,IN
 3416372224,3416372479,CN
 3416372480,3416372735,AP
 3416372736,3416372991,AU
@@ -91411,7 +95674,6 @@
 3417946112,3417946137,AU
 3417946138,3417946138,HK
 3417946139,3417947135,AU
-3417947136,3417947391,IN
 3417947648,3417947903,AU
 3417947904,3417948159,IN
 3417948160,3417964543,AU
@@ -91479,13 +95741,12 @@
 3418273792,3418275839,ID
 3418275840,3418279935,AU
 3418279936,3418281983,NZ
-3418281984,3418282239,IN
 3418282240,3418282495,AU
 3418282496,3418283519,PH
 3418283520,3418284031,AU
-3418284032,3418286975,SG
-3418286976,3418287007,AU
-3418287008,3418288127,SG
+3418284032,3418286079,SG
+3418286080,3418287103,AU
+3418287104,3418288127,SG
 3418288128,3418290175,ID
 3418290176,3418290431,IN
 3418290432,3418290687,CN
@@ -91496,8 +95757,7 @@
 3418292992,3418293503,HK
 3418293760,3418294015,AU
 3418294272,3418296319,VN
-3418296320,3418297343,HK
-3418297344,3418298367,CN
+3418296320,3418298367,CN
 3418298368,3418299391,HK
 3418299392,3418300415,CN
 3418300416,3418300927,BD
@@ -91523,7 +95783,9 @@
 3418393794,3418393794,JP
 3418393795,3418393919,AP
 3418393920,3418393927,AU
-3418393928,3418399231,AP
+3418393928,3418394367,AP
+3418394368,3418394623,TW
+3418394624,3418399231,AP
 3418399232,3418399247,PH
 3418399248,3418401455,AP
 3418401456,3418401459,TW
@@ -91606,10 +95868,11 @@
 3419353088,3419354111,JP
 3419354112,3419356159,ID
 3419356160,3419356671,NZ
-3419356672,3419357183,IN
+3419356672,3419356927,IN
 3419357184,3419411455,CN
 3419411456,3419411711,HK
 3419411712,3419411967,NZ
+3419411968,3419412223,PH
 3419412224,3419412479,JP
 3419412480,3419414527,PH
 3419414528,3419422719,CN
@@ -91699,7 +95962,7 @@
 3420032256,3420032511,AU
 3420032512,3420033023,NZ
 3420033024,3420034047,IN
-3420034048,3420036095,AU
+3420034048,3420035071,AU
 3420036096,3420037119,JP
 3420037120,3420037631,AU
 3420039168,3420040191,KH
@@ -91722,7 +95985,9 @@
 3420366960,3420366975,KR
 3420366976,3420367359,AU
 3420367360,3420367615,AP
-3420367616,3420370559,AU
+3420367616,3420369007,AU
+3420369008,3420369023,HK
+3420369024,3420370559,AU
 3420370560,3420370575,JP
 3420370576,3420372991,AU
 3420372992,3420374527,HK
@@ -91812,8 +96077,7 @@
 3423474688,3423478783,US
 3423479808,3423481855,A2
 3423481856,3423487999,US
-3423488000,3423489023,CA
-3423489024,3423490047,A1
+3423488000,3423490047,CA
 3423490048,3423493631,US
 3423493632,3423493887,RU
 3423493888,3423533055,US
@@ -92329,9 +96593,7 @@
 3432133888,3432134143,GB
 3432134144,3432205311,US
 3432205312,3432206335,CA
-3432206336,3432253695,US
-3432253696,3432253951,CA
-3432253952,3432265983,US
+3432206336,3432265983,US
 3432265984,3432267263,DE
 3432267264,3432280063,US
 3432280064,3432280319,GB
@@ -92341,17 +96603,15 @@
 3432329216,3432330239,DE
 3432330240,3432361983,US
 3432361984,3432366079,DE
-3432366080,3432476415,US
-3432476416,3432476671,DE
-3432476672,3432493823,US
-3432493824,3432495103,DE
-3432495104,3432517119,US
+3432366080,3432517119,US
 3432517120,3432517631,MU
 3432517632,3432570879,US
 3432570880,3432572927,HK
 3432572928,3432585215,US
 3432585216,3432585727,MX
-3432585728,3432613631,US
+3432585728,3432606463,US
+3432606464,3432606719,GB
+3432606720,3432613631,US
 3432613632,3432613887,CA
 3432613888,3432660991,US
 3432660992,3432663039,DE
@@ -92601,12 +96861,9 @@
 3448380416,3448380671,SG
 3448380672,3448380839,US
 3448380840,3448380847,SG
-3448380848,3448380943,US
-3448380944,3448380959,SG
-3448380960,3448381183,US
+3448380848,3448381183,US
 3448381184,3448381439,SG
-3448381440,3448381695,GB
-3448381696,3448398335,US
+3448381440,3448398335,US
 3448398336,3448399103,CA
 3448399104,3448399359,US
 3448399360,3448399871,CA
@@ -92624,7 +96881,11 @@
 3448987648,3448989695,IN
 3448989696,3448990719,HK
 3448990720,3448991743,IN
-3448991744,3449159679,US
+3448991744,3449098751,US
+3449098752,3449099263,DE
+3449099264,3449100799,US
+3449100800,3449101311,AU
+3449101312,3449159679,US
 3449159680,3449160703,CA
 3449160704,3449161471,US
 3449161472,3449163519,CA
@@ -92711,7 +96972,9 @@
 3449254144,3449254911,US
 3449254912,3449273599,CA
 3449273600,3449273855,US
-3449273856,3449290495,CA
+3449273856,3449278975,CA
+3449278976,3449279487,US
+3449279488,3449290495,CA
 3449290496,3449575423,US
 3449575424,3449575679,AU
 3449575680,3449582848,US
@@ -92742,9 +97005,7 @@
 3449974784,3449976831,CA
 3449976832,3449994239,US
 3449994240,3449994495,MX
-3449994496,3450085375,US
-3450085376,3450085631,A1
-3450085632,3450086143,US
+3449994496,3450086143,US
 3450086144,3450086655,CH
 3450086656,3450088191,US
 3450088192,3450088447,CH
@@ -92775,15 +97036,13 @@
 3450685184,3450685439,CA
 3450685440,3450699007,US
 3450699008,3450699263,CA
-3450699776,3450731519,US
+3450699264,3450731519,US
 3450731520,3450732543,CA
 3450732544,3450773503,US
-3450773504,3450774783,CA
-3450774784,3450775039,US
-3450775040,3450777599,CA
+3450773504,3450777599,CA
 3450777600,3450849791,US
 3450849792,3450850047,EU
-3450850048,3450851839,US
+3450850048,3450852351,US
 3450852352,3450853375,CA
 3450853376,3450935551,US
 3450935552,3450935807,AP
@@ -92803,9 +97062,10 @@
 3451507200,3451507711,BR
 3451507712,3451715839,US
 3451715840,3451724543,CA
-3451724544,3451724799,US
-3451725312,3451725567,US
-3451725568,3451737343,CA
+3451724544,3451725567,US
+3451725568,3451726847,CA
+3451726848,3451727359,US
+3451727360,3451737343,CA
 3451737344,3451737599,US
 3451737600,3451740927,CA
 3451740928,3451741183,US
@@ -92868,7 +97128,9 @@
 3452678144,3452678399,EU
 3452678400,3452715007,US
 3452715008,3452723199,CA
-3452723200,3452764671,US
+3452723200,3452730623,US
+3452730624,3452730879,HK
+3452730880,3452764671,US
 3452764672,3452765183,CA
 3452765184,3452765439,US
 3452765440,3452765951,CA
@@ -93005,7 +97267,9 @@
 3452920832,3452923391,US
 3452923392,3452931327,CA
 3452931328,3452931583,US
-3452931584,3452934911,CA
+3452931584,3452933119,CA
+3452933120,3452933631,US
+3452933632,3452934911,CA
 3452934912,3452936191,US
 3452936192,3452938751,CA
 3452938752,3452939023,US
@@ -93149,8 +97413,8 @@
 3454664448,3454672895,US
 3454672896,3454681087,CA
 3454681088,3454727935,US
-3454727936,3454727951,JP
-3454727952,3454730239,US
+3454727936,3454728191,JP
+3454728192,3454730239,US
 3454730240,3454732287,EC
 3454732288,3454796031,US
 3454796032,3454808831,CA
@@ -93491,8 +97755,10 @@
 3459620864,3459622911,US
 3459624960,3459629055,BM
 3459629056,3459686399,US
-3459686400,3459687167,NL
-3459687168,3459731455,US
+3459686400,3459688479,NL
+3459688480,3459689215,US
+3459689216,3459689471,NL
+3459689472,3459731455,US
 3459731456,3459735551,CA
 3459735552,3459745535,US
 3459745536,3459745791,IT
@@ -93788,10 +98054,22 @@
 3464171776,3464172031,US
 3464172032,3464173567,CA
 3464173568,3464173823,US
-3464173824,3464174591,CA
+3464173824,3464175103,CA
 3464175104,3464175359,US
 3464175360,3464180735,CA
-3464180736,3464204799,US
+3464180736,3464200703,US
+3464200704,3464200959,AU
+3464200960,3464201215,NZ
+3464201216,3464201471,JP
+3464201472,3464201727,GR
+3464201728,3464201983,EG
+3464201984,3464202239,ES
+3464202240,3464202495,CA
+3464202496,3464202751,FR
+3464202752,3464203007,IT
+3464203008,3464203263,SE
+3464203264,3464203519,DE
+3464203520,3464204799,US
 3464204800,3464205311,NL
 3464205312,3464205567,SE
 3464205568,3464205823,VE
@@ -93830,10 +98108,9 @@
 3464394752,3464396799,LC
 3464396800,3464421631,US
 3464421632,3464421887,CA
-3464422400,3464425983,US
+3464421888,3464426495,US
 3464426496,3464426751,GD
-3464426752,3464427007,US
-3464427520,3464548607,US
+3464426752,3464548607,US
 3464548608,3464548863,LC
 3464548864,3464549119,KN
 3464549120,3464549375,VG
@@ -93844,13 +98121,17 @@
 3464550144,3464550399,LC
 3464550400,3464626175,US
 3464626176,3464626687,CA
-3464626688,3464627199,US
+3464626688,3464627711,US
 3464627968,3464628735,CA
 3464628736,3464628991,US
 3464628992,3464630271,CA
 3464630272,3464631295,US
-3464631296,3464650751,CA
-3464650752,3464664063,US
+3464631296,3464642047,CA
+3464642048,3464642559,US
+3464642560,3464648703,CA
+3464648704,3464649215,US
+3464649216,3464650239,CA
+3464650240,3464664063,US
 3464664064,3464691711,CA
 3464691712,3464740863,US
 3464740864,3464744959,PH
@@ -93929,12 +98210,12 @@
 3466938812,3466958079,US
 3466958080,3466958335,CA
 3466958336,3467051007,US
-3467051008,3467116543,CA
+3467051008,3467068927,CA
+3467068928,3467069439,US
+3467069440,3467116543,CA
 3467116544,3467378687,US
 3467378688,3467444223,CA
-3467444224,3467500799,US
-3467500800,3467501055,A1
-3467501056,3467554815,US
+3467444224,3467554815,US
 3467554816,3467567103,CA
 3467567104,3467706367,US
 3467706368,3467902975,CA
@@ -94065,15 +98346,13 @@
 3469186304,3469186559,MX
 3469186560,3469893631,US
 3469893632,3469901823,CA
-3469901824,3470131199,US
+3469901824,3469989887,US
+3469989888,3469990399,CA
+3469990400,3470131199,US
 3470131200,3470135295,AG
 3470135296,3470137343,LC
 3470137344,3470139391,VG
-3470139392,3470148095,US
-3470148096,3470148351,CA
-3470148352,3470148607,US
-3470148608,3470148863,CA
-3470148864,3470151807,US
+3470139392,3470151807,US
 3470151808,3470151871,CA
 3470151872,3470151935,US
 3470151936,3470152191,EG
@@ -94118,7 +98397,6 @@
 3470767872,3470768127,IE
 3470768128,3470770175,CA
 3470770176,3470778367,US
-3470778368,3470786559,CA
 3470786560,3470794751,US
 3470794752,3470802943,PA
 3470802944,3470884863,US
@@ -94145,7 +98423,9 @@
 3471572992,3472375807,US
 3472375808,3472392191,PR
 3472392192,3472408575,CA
-3472408576,3473039359,US
+3472408576,3472721919,US
+3472721920,3472723967,CA
+3472723968,3473039359,US
 3473039360,3473040639,BM
 3473040640,3473040895,US
 3473040896,3473041407,BM
@@ -94232,9 +98512,7 @@
 3476545536,3476547583,A2
 3476547584,3476881407,US
 3476881408,3476946943,CA
-3476946944,3477312511,US
-3477312512,3477312767,A1
-3477312768,3478114303,US
+3476946944,3478114303,US
 3478114304,3478118399,PE
 3478118400,3478192127,US
 3478192128,3478257663,CA
@@ -94392,7 +98670,9 @@
 3481843456,3481843711,GB
 3481843712,3481958271,US
 3481958272,3481958399,NL
-3481958400,3481964575,US
+3481958400,3481959020,US
+3481959021,3481959021,GB
+3481959022,3481964575,US
 3481964576,3481964579,IE
 3481964580,3481993791,US
 3481993792,3481993799,CA
@@ -94439,19 +98719,7 @@
 3482017536,3482017791,CA
 3482017792,3482018047,US
 3482018048,3482018303,CA
-3482018304,3482018583,US
-3482018584,3482018591,CA
-3482018592,3482018599,US
-3482018600,3482018607,CA
-3482018608,3482018655,US
-3482018656,3482018671,CA
-3482018672,3482018679,US
-3482018680,3482018695,CA
-3482018696,3482018711,US
-3482018712,3482018719,CA
-3482018720,3482018783,US
-3482018784,3482018799,CA
-3482018800,3482019327,US
+3482018304,3482019327,US
 3482019328,3482019583,CA
 3482019584,3482020607,US
 3482020608,3482020863,CA
@@ -94483,9 +98751,7 @@
 3482037760,3482038015,CA
 3482038016,3482038271,US
 3482038272,3482038783,CA
-3482038784,3482039039,US
-3482039040,3482039295,CA
-3482039296,3482039551,US
+3482038784,3482039551,US
 3482039552,3482040319,CA
 3482040320,3482041087,US
 3482041088,3482041343,CA
@@ -94541,11 +98807,12 @@
 3484006912,3484007167,AU
 3484007168,3484013055,US
 3484013056,3484013567,DE
-3484013568,3484319743,US
-3484320256,3484320511,US
+3484013568,3484320767,US
 3484321792,3484322047,PR
-3484322048,3484340223,US
-3484340736,3484341247,US
+3484322048,3484325887,US
+3484326912,3484327423,US
+3484327424,3484327935,CA
+3484327936,3484341247,US
 3484341248,3484342271,VG
 3484342272,3484438527,US
 3484438528,3484438783,ZM
@@ -94637,7 +98904,10 @@
 3485327360,3485335551,CA
 3485335552,3485462527,US
 3485462528,3485464575,VC
-3485464576,3485466623,LC
+3485464576,3485464831,LC
+3485464832,3485465599,VC
+3485465600,3485466367,LC
+3485466368,3485466623,VC
 3485466624,3485597695,US
 3485597696,3485695999,CA
 3485696000,3485959423,US
@@ -94856,9 +99126,7 @@
 3487216384,3487216639,SE
 3487216640,3487236095,US
 3487236096,3487301631,CA
-3487301632,3487561471,US
-3487561472,3487561727,AU
-3487561728,3487706367,US
+3487301632,3487706367,US
 3487706368,3487706623,RU
 3487706624,3487766527,US
 3487766528,3487768575,CA
@@ -95021,7 +99289,9 @@
 3492969728,3492994815,US
 3492994816,3492995071,GB
 3492995072,3493011327,US
-3493011328,3493011455,GB
+3493011328,3493011395,GB
+3493011396,3493011396,US
+3493011397,3493011455,GB
 3493011456,3493029119,US
 3493029120,3493029375,GB
 3493029376,3493039359,US
@@ -95171,9 +99441,7 @@
 3494627328,3494628351,BM
 3494628352,3494651903,US
 3494651904,3494652927,CA
-3494652928,3494655743,US
-3494655744,3494655759,GB
-3494655760,3494660095,US
+3494652928,3494660095,US
 3494660096,3494661119,CA
 3494661120,3494668287,US
 3494668288,3494670335,CA
@@ -95284,7 +99552,9 @@
 3495375872,3495376895,CA
 3495376896,3495399423,US
 3495399424,3495400447,KN
-3495400448,3495412735,US
+3495400448,3495406335,US
+3495406336,3495406591,LB
+3495406592,3495412735,US
 3495412736,3495413759,CA
 3495413760,3495429119,US
 3495429120,3495430143,CA
@@ -95410,9 +99680,7 @@
 3497163168,3497163175,GB
 3497163176,3497164799,US
 3497164800,3497181183,CA
-3497181184,3497233407,US
-3497233408,3497233663,CN
-3497233664,3497410559,US
+3497181184,3497410559,US
 3497410560,3497431039,CA
 3497431040,3497447423,US
 3497447424,3497451519,CA
@@ -95471,20 +99739,13 @@
 3500126464,3500126719,GB
 3500126720,3500351487,US
 3500351488,3500359679,JM
-3500359680,3500486655,US
-3500486656,3500490751,CR
-3500490752,3500613631,US
+3500359680,3500613631,US
 3500613632,3500614655,MZ
 3500614656,3500689407,US
 3500689408,3500689919,CL
 3500689920,3500707327,US
 3500707328,3500707839,CA
-3500707840,3500724991,US
-3500724992,3500725503,EC
-3500725504,3500725759,HT
-3500725760,3500726015,EC
-3500726016,3500726271,HT
-3500726272,3500728319,US
+3500707840,3500728319,US
 3500728320,3500736511,KY
 3500736512,3500752895,US
 3500752896,3500761087,KY
@@ -95824,8 +100085,8 @@
 3509532672,3509532927,US
 3509532928,3509533439,CA
 3509533440,3509534719,US
-3509534720,3509535487,CA
-3509535488,3509535743,US
+3509534720,3509535231,CA
+3509535232,3509535743,US
 3509535744,3509535999,CA
 3509536000,3509536255,US
 3509536256,3509536767,CA
@@ -95855,11 +100116,7 @@
 3509551616,3509551871,CA
 3509551872,3509552127,US
 3509552128,3509552639,CA
-3509552640,3509554311,US
-3509554312,3509554319,CA
-3509554320,3509554327,US
-3509554328,3509554335,CA
-3509554336,3509554431,US
+3509552640,3509554431,US
 3509554432,3509554959,CA
 3509554960,3509555199,US
 3509555200,3509555455,CA
@@ -95875,34 +100132,20 @@
 3509560320,3509560831,US
 3509560832,3509561087,CA
 3509561088,3509561343,US
-3509561344,3509561727,CA
-3509561728,3509561743,US
-3509561744,3509561791,CA
-3509561792,3509561855,US
+3509561344,3509561599,CA
+3509561600,3509561855,US
 3509561856,3509562623,CA
 3509562624,3509563391,US
-3509563392,3509563911,CA
-3509563912,3509563919,US
-3509563920,3509563935,CA
-3509563936,3509563967,US
-3509563968,3509564031,CA
-3509564032,3509564095,US
-3509564096,3509564127,CA
-3509564128,3509564415,US
-3509564416,3509564799,CA
-3509564800,3509565183,US
+3509563392,3509563903,CA
+3509563904,3509564415,US
+3509564416,3509564671,CA
+3509564672,3509565183,US
 3509565184,3509566463,CA
 3509566464,3509567231,US
 3509567232,3509569023,CA
 3509569024,3509569535,US
 3509569536,3509569791,CA
-3509569792,3509571071,US
-3509571072,3509571087,CA
-3509571088,3509571215,US
-3509571216,3509571223,CA
-3509571224,3509571263,US
-3509571264,3509571295,CA
-3509571296,3509572351,US
+3509569792,3509572351,US
 3509572352,3509573375,CA
 3509573376,3509573439,US
 3509573440,3509573455,CA
@@ -95912,27 +100155,17 @@
 3509574144,3509575679,CA
 3509575680,3509575935,US
 3509575936,3509576191,CA
-3509576192,3509576447,US
-3509576448,3509576703,CA
-3509576704,3509576959,US
+3509576192,3509576959,US
 3509576960,3509577215,CA
 3509577216,3509577983,US
 3509577984,3509578239,CA
-3509578240,3509578495,US
-3509578496,3509578751,CA
-3509578752,3509579007,US
+3509578240,3509579007,US
 3509579008,3509579263,CA
 3509579264,3509579519,US
 3509579520,3509579775,CA
 3509579776,3509580031,US
 3509580032,3509580287,CA
-3509580288,3509580879,US
-3509580880,3509580927,CA
-3509580928,3509580943,US
-3509580944,3509580951,CA
-3509580952,3509580991,US
-3509580992,3509581055,CA
-3509581056,3509582335,US
+3509580288,3509582335,US
 3509582336,3509582847,CA
 3509582848,3509583615,US
 3509583616,3509583871,CA
@@ -95976,7 +100209,9 @@
 3510268928,3510269951,US
 3510269952,3510270719,LY
 3510270720,3510270975,SY
-3510270976,3510321151,US
+3510270976,3510284298,US
+3510284299,3510284299,SG
+3510284300,3510321151,US
 3510321152,3510321663,VG
 3510321664,3510321919,AG
 3510321920,3510322175,KN
@@ -96016,13 +100251,9 @@
 3510935552,3510943743,CA
 3510943744,3511140351,US
 3511140352,3511156735,CA
-3511156736,3511256063,US
-3511256064,3511256319,A1
-3511256320,3511258367,US
+3511156736,3511258367,US
 3511258368,3511258623,A1
-3511258624,3511260927,US
-3511260928,3511261183,A1
-3511261184,3511812095,US
+3511258624,3511812095,US
 3511812096,3511844863,CA
 3511844864,3512012095,US
 3512012096,3512012159,GB
@@ -96228,9 +100459,7 @@
 3514723697,3514723697,BZ
 3514723698,3514724635,US
 3514724636,3514724636,UA
-3514724637,3514732071,US
-3514732072,3514732075,UA
-3514732076,3514826751,US
+3514724637,3514826751,US
 3514826752,3514843135,CA
 3514843136,3514993919,US
 3514993920,3514993983,GB
@@ -96241,13 +100470,13 @@
 3514994024,3514994049,GB
 3514994050,3514994050,EU
 3514994051,3514994175,GB
-3514994176,3515222271,US
+3514994176,3515211775,US
+3515211776,3515219967,CA
+3515219968,3515222271,US
 3515222272,3515224831,TR
 3515224832,3515301887,US
 3515301888,3515318271,CA
-3515318272,3515339519,US
-3515339520,3515339775,A1
-3515339776,3515358975,US
+3515318272,3515358975,US
 3515358976,3515359231,MX
 3515359232,3515596799,US
 3515596800,3515613183,CA
@@ -96328,9 +100557,7 @@
 3517389312,3517389567,CA
 3517389568,3517389823,US
 3517389824,3517391103,CA
-3517391104,3517391119,US
-3517391120,3517391123,CA
-3517391124,3517391871,US
+3517391104,3517391871,US
 3517391872,3517392127,CA
 3517392128,3517392383,US
 3517392384,3517392639,CA
@@ -96500,11 +100727,7 @@
 3518762496,3518762751,GB
 3518762752,3518765311,US
 3518765312,3518765567,CA
-3518765568,3518905599,US
-3518905600,3518905855,GB
-3518905856,3518911743,US
-3518911744,3518911999,GB
-3518912000,3518912511,US
+3518765568,3518912511,US
 3518912512,3518912767,IN
 3518912768,3518918143,US
 3518918144,3518918399,IN
@@ -96614,9 +100837,7 @@
 3521904640,3521921023,JM
 3521921024,3521965055,US
 3521965056,3521966079,DE
-3521966080,3521989631,US
-3521989632,3521989887,A2
-3521989888,3522101247,US
+3521966080,3522101247,US
 3522101248,3522109439,CA
 3522109440,3522118143,US
 3522118144,3522118655,GB
@@ -96797,7 +101018,7 @@
 3528404992,3528407039,NZ
 3528407040,3528409087,AU
 3528409088,3528425471,CN
-3528425472,3528445951,JP
+3528441856,3528445951,JP
 3528445952,3528450047,ID
 3528450048,3528458239,CN
 3528458240,3528474623,AP
@@ -96826,7 +101047,9 @@
 3529089024,3529097215,KR
 3529097216,3529113599,JP
 3529113600,3531603967,KR
-3531603968,3532929279,JP
+3531603968,3532290815,JP
+3532290816,3532291071,GB
+3532291072,3532929279,JP
 3532929280,3532929535,AP
 3532929536,3534749695,JP
 3534749696,3534757887,HK
@@ -96838,9 +101061,9 @@
 3534758976,3534759039,PH
 3534759040,3534759167,AU
 3534759168,3534759183,JP
-3534759184,3534760703,AU
-3534760704,3534760711,NZ
-3534760712,3534761983,AU
+3534759184,3534760447,AU
+3534760448,3534760959,NZ
+3534760960,3534761983,AU
 3534761984,3534763775,HK
 3534763776,3534764031,AP
 3534764032,3534863443,HK
@@ -96920,7 +101143,9 @@
 3546808320,3547856895,KR
 3547856896,3547916287,JP
 3547916288,3547916543,US
-3547916544,3548905471,JP
+3547916544,3548208127,JP
+3548208128,3548208639,US
+3548208640,3548905471,JP
 3548905472,3551002623,CN
 3551002624,3556769791,KR
 3556769792,3556773887,DE
@@ -97100,11 +101325,11 @@
 3557998592,3558006783,DE
 3558006784,3558010879,GB
 3558010880,3558012927,FR
-3558012928,3558013951,GB
-3558013952,3558014207,IL
+3558012928,3558014207,GB
 3558014208,3558014463,NL
 3558014464,3558014464,US
-3558014465,3558014975,IL
+3558014465,3558014719,IL
+3558014720,3558014975,NL
 3558014976,3558023167,RU
 3558023168,3558031359,DE
 3558031360,3558039551,GB
@@ -97220,7 +101445,7 @@
 3558718208,3558718463,EU
 3558718464,3558719487,NL
 3558719488,3558735871,IL
-3558735872,3558744063,GB
+3558735872,3558744063,GG
 3558744064,3558752255,LB
 3558752256,3558760447,SI
 3558760448,3558768639,FR
@@ -97267,7 +101492,9 @@
 3559089936,3559089951,BE
 3559089952,3559090239,GB
 3559090240,3559090303,BE
-3559090304,3559093311,GB
+3559090304,3559092243,GB
+3559092244,3559092244,BE
+3559092245,3559093311,GB
 3559093312,3559093319,BE
 3559093320,3559093695,GB
 3559093696,3559093703,BE
@@ -97286,7 +101513,9 @@
 3559153664,3559178239,GB
 3559178240,3559186431,LB
 3559186432,3559194623,RU
-3559194624,3559202815,SE
+3559194624,3559200255,SE
+3559200256,3559200511,FI
+3559200512,3559202815,SE
 3559202816,3559211007,DE
 3559211008,3559219199,SK
 3559219200,3559227391,SE
@@ -97299,11 +101528,7 @@
 3559276544,3559284735,GB
 3559284736,3559292927,RU
 3559292928,3559301119,JO
-3559301120,3559303103,GB
-3559303104,3559303167,A1
-3559303168,3559303679,GB
-3559303680,3559303871,A1
-3559303872,3559306576,GB
+3559301120,3559306576,GB
 3559306577,3559306577,AT
 3559306578,3559309311,GB
 3559309312,3559317503,PL
@@ -97329,7 +101554,9 @@
 3559448576,3559456767,ES
 3559456768,3559473151,RU
 3559473152,3559489535,CH
-3559489536,3559491759,GB
+3559489536,3559491247,GB
+3559491248,3559491263,NL
+3559491264,3559491759,GB
 3559491760,3559491767,NL
 3559491768,3559505919,GB
 3559505920,3559514111,CH
@@ -97392,7 +101619,8 @@
 3559940096,3559948287,DE
 3559948288,3559956479,RU
 3559956480,3559964671,IT
-3559964672,3559981055,RU
+3559964672,3559976959,RU
+3559976960,3559981055,HU
 3559981056,3559989247,EE
 3559989248,3559997439,PL
 3559997440,3560005631,KE
@@ -97403,7 +101631,9 @@
 3560023632,3560023639,ES
 3560023640,3560023791,GB
 3560023792,3560023799,ES
-3560023800,3560030095,GB
+3560023800,3560025904,GB
+3560025905,3560025905,ES
+3560025906,3560030095,GB
 3560030096,3560030103,ES
 3560030104,3560046591,GB
 3560046592,3560054783,BG
@@ -97918,7 +102148,8 @@
 3563454464,3563462655,SA
 3563462656,3563479039,IT
 3563479040,3563487231,GB
-3563487232,3563495423,RS
+3563487232,3563491327,RS
+3563491328,3563495423,BG
 3563495424,3563503615,DE
 3563503616,3563511807,GB
 3563511808,3563519999,DE
@@ -98087,17 +102318,9 @@
 3564756992,3564765183,ES
 3564765184,3564773375,RU
 3564773376,3564781567,DE
-3564781568,3564782079,LT
-3564782080,3564782335,US
-3564782336,3564786175,LT
-3564786176,3564786431,US
-3564786432,3564786687,LT
-3564786688,3564786943,US
-3564786944,3564787199,LT
-3564787200,3564787455,US
+3564781568,3564787455,LT
 3564787456,3564787583,NL
-3564787584,3564787711,US
-3564787712,3564789759,LT
+3564787584,3564789759,LT
 3564789760,3564797951,ES
 3564797952,3564806143,DE
 3564806144,3564814335,BG
@@ -98198,11 +102421,9 @@
 3565684997,3565748223,NL
 3565748224,3565752319,GB
 3565752320,3565752447,EU
-3565752448,3565752455,GB
-3565752456,3565752463,EU
-3565752464,3565752479,GB
-3565752480,3565752535,EU
-3565752536,3565752543,GB
+3565752448,3565752479,GB
+3565752480,3565752527,EU
+3565752528,3565752543,GB
 3565752544,3565752575,EU
 3565752576,3565752839,GB
 3565752840,3565752855,EU
@@ -98248,23 +102469,11 @@
 3565755848,3565755855,EU
 3565755856,3565755871,GB
 3565755872,3565755879,EU
-3565755880,3565755919,GB
-3565755920,3565755927,EU
-3565755928,3565755935,GB
-3565755936,3565755943,EU
-3565755944,3565755959,GB
-3565755960,3565755967,EU
-3565755968,3565755999,GB
-3565756000,3565756007,EU
-3565756008,3565756063,GB
-3565756064,3565756071,EU
-3565756072,3565756087,GB
-3565756088,3565756095,EU
-3565756096,3565756119,GB
-3565756120,3565756135,EU
-3565756136,3565756159,GB
-3565756160,3565756287,EU
-3565756288,3565760783,GB
+3565755880,3565755903,GB
+3565755904,3565756151,EU
+3565756152,3565756159,GB
+3565756160,3565756415,EU
+3565756416,3565760783,GB
 3565760784,3565760791,EU
 3565760792,3565760799,GB
 3565760800,3565760807,EU
@@ -98652,9 +102861,7 @@
 3569075712,3569090559,GB
 3569090560,3569123327,RU
 3569123328,3569156095,GB
-3569156096,3569156351,NL
-3569156352,3569156607,EU
-3569156608,3569157379,NL
+3569156096,3569157379,NL
 3569157380,3569157380,EU
 3569157381,3569165311,NL
 3569165312,3569165567,EU
@@ -98802,7 +103009,9 @@
 3574136832,3574169599,DE
 3574169600,3574174839,GB
 3574174840,3574174847,ES
-3574174848,3574186799,GB
+3574174848,3574182904,GB
+3574182905,3574182905,ES
+3574182906,3574186799,GB
 3574186800,3574186815,ES
 3574186816,3574187007,GB
 3574187008,3574188031,ES
@@ -99173,7 +103382,9 @@
 3576100864,3576101375,EU
 3576101376,3576110939,GB
 3576110940,3576110943,NL
-3576110944,3576134653,GB
+3576110944,3576116127,GB
+3576116128,3576116135,DE
+3576116136,3576134653,GB
 3576134654,3576134654,CH
 3576134655,3576135679,GB
 3576135680,3576168447,DE
@@ -99303,7 +103514,9 @@
 3579193760,3579193775,NL
 3579193776,3579197311,GB
 3579197312,3579197439,US
-3579197440,3579248639,GB
+3579197440,3579244831,GB
+3579244832,3579244879,AT
+3579244880,3579248639,GB
 3579248640,3579346943,RU
 3579346944,3579362055,SE
 3579362056,3579362063,NO
@@ -99659,7 +103872,10 @@
 3583401984,3583410175,KE
 3583410176,3583418367,SE
 3583418368,3583426559,TN
-3583426560,3583434751,CI
+3583426560,3583428607,CV
+3583428608,3583430655,CI
+3583430656,3583432703,ZA
+3583432704,3583434751,CI
 3583434752,3583442943,AT
 3583442944,3583451135,RU
 3583451136,3583459327,IL
@@ -99743,8 +103959,7 @@
 3583950848,3583959039,PL
 3583959040,3583967231,NO
 3583967232,3583975423,NL
-3583975424,3583983103,LT
-3583983104,3583983231,US
+3583975424,3583983231,LT
 3583983232,3583983359,BR
 3583983360,3583983615,LT
 3583983616,3583999999,RU
@@ -99863,6 +104078,7 @@
 3584827392,3584835583,ES
 3584835584,3584843775,AZ
 3584843776,3584851967,DE
+3584851968,3584860159,ZA
 3584860160,3584868351,PL
 3584868352,3584876543,NO
 3584876544,3584884735,SI
@@ -99959,12 +104175,32 @@
 3585597440,3585605631,RU
 3585605632,3585613823,PL
 3585613824,3585622015,EE
-3585630208,3585638399,IL
+3585630208,3585632255,IL
+3585632256,3585632511,GB
+3585632512,3585632639,NL
+3585632640,3585632767,IL
+3585632768,3585633535,GB
+3585633536,3585634047,IT
+3585634048,3585634303,IL
+3585634304,3585634559,IT
+3585634560,3585634687,IL
+3585634688,3585634815,NL
+3585634816,3585635071,IT
+3585635072,3585635199,NL
+3585635200,3585635455,IL
+3585635456,3585635711,NL
+3585635712,3585635967,IL
+3585635968,3585636095,NL
+3585636096,3585637375,IL
+3585637376,3585637503,NL
+3585637504,3585638399,IL
 3585638400,3585646591,RU
 3585646592,3585654783,SA
 3585654784,3585662975,NO
 3585662976,3585671167,BY
-3585671168,3585679359,SE
+3585671168,3585675306,SE
+3585675307,3585675307,DK
+3585675308,3585679359,SE
 3585679360,3585687551,FI
 3585687552,3585695743,DE
 3585695744,3585703935,A2
@@ -100095,11 +104331,17 @@
 3586679600,3586679615,IT
 3586679616,3586680511,FR
 3586680512,3586680519,GB
-3586680520,3586681615,FR
+3586680520,3586681471,FR
+3586681472,3586681487,GB
+3586681488,3586681527,FR
+3586681528,3586681535,GB
+3586681536,3586681615,FR
 3586681616,3586681631,CZ
 3586681632,3586682239,FR
 3586682240,3586682367,US
-3586682368,3586682879,FR
+3586682368,3586682415,FR
+3586682416,3586682423,DE
+3586682424,3586682879,FR
 3586682880,3586686975,US
 3586686976,3586703359,SE
 3586703360,3586719743,CH
@@ -100372,7 +104614,9 @@
 3589582976,3589583103,NL
 3589583104,3589586943,GB
 3589586944,3589587199,DE
-3589587200,3589599231,RS
+3589587200,3589587455,RS
+3589587456,3589587967,CH
+3589587968,3589599231,RS
 3589599232,3589601279,SE
 3589601280,3589603327,RS
 3589603328,3589668863,FR
@@ -100435,9 +104679,15 @@
 3590234112,3590242303,GB
 3590242304,3590244351,US
 3590244352,3590244607,DE
-3590244608,3590245311,FR
+3590244608,3590245263,FR
+3590245264,3590245271,GB
+3590245272,3590245311,FR
 3590245312,3590245439,US
-3590245440,3590247167,FR
+3590245440,3590247048,FR
+3590247049,3590247049,IT
+3590247050,3590247103,FR
+3590247104,3590247119,GB
+3590247120,3590247167,FR
 3590247168,3590247231,US
 3590247232,3590247295,FR
 3590247296,3590247423,US
@@ -100445,7 +104695,9 @@
 3590247488,3590247551,US
 3590247552,3590247711,FR
 3590247712,3590247743,A1
-3590247744,3590251647,FR
+3590247744,3590247759,FR
+3590247760,3590247763,IE
+3590247764,3590251647,FR
 3590251648,3590251775,NL
 3590251776,3590255871,FR
 3590255872,3590255935,US
@@ -100548,8 +104800,7 @@
 3624484864,3624529919,US
 3624529920,3624534015,CA
 3624534016,3624534271,PA
-3624534272,3624536063,CA
-3624536064,3624546559,US
+3624534272,3624546559,US
 3624546560,3624546815,A2
 3624546816,3624547327,US
 3624547328,3624548095,A2
@@ -100558,8 +104809,8 @@
 3624550144,3624587263,US
 3624587264,3624591359,JM
 3624591360,3624592383,US
-3624592384,3624593407,CA
-3624593408,3624714239,US
+3624592384,3624593919,CA
+3624594176,3624714239,US
 3624714240,3624722431,SG
 3624722432,3624730623,US
 3624730624,3624796159,CA
@@ -100581,8 +104832,7 @@
 3625168896,3625172991,CA
 3625172992,3625256959,US
 3625256960,3625257983,CA
-3625258496,3625258751,US
-3625259008,3625261055,US
+3625257984,3625261055,US
 3625263104,3625287679,US
 3625287680,3625295871,CA
 3625295872,3625346047,US
@@ -100653,7 +104903,9 @@
 3628161024,3628161279,CA
 3628161280,3628179455,US
 3628179456,3628187647,CA
-3628187648,3628225387,US
+3628187648,3628225097,US
+3628225098,3628225098,AT
+3628225099,3628225387,US
 3628225388,3628225395,GB
 3628225396,3628225779,US
 3628225780,3628225783,GB
@@ -100824,9 +105076,7 @@
 3630096128,3630096383,CA
 3630096384,3630097151,US
 3630097152,3630097663,CA
-3630097664,3630099711,US
-3630099712,3630099967,CA
-3630099968,3630102783,US
+3630097664,3630102783,US
 3630102784,3630103807,CA
 3630103808,3630104063,US
 3630104064,3630104575,CA
@@ -100899,9 +105149,7 @@
 3631284224,3631316991,CA
 3631316992,3631333375,US
 3631333376,3631341567,CA
-3631341568,3631435007,US
-3631435008,3631435263,GB
-3631435264,3631644671,US
+3631341568,3631644671,US
 3631644672,3631652863,CA
 3631652864,3631665151,US
 3631665152,3631667199,CA
@@ -100947,7 +105195,9 @@
 3632244224,3632244479,CA
 3632244480,3632332799,US
 3632332800,3632357375,CA
-3632357376,3632381951,US
+3632357376,3632376319,US
+3632376320,3632377343,CA
+3632377344,3632381951,US
 3632381952,3632390143,CA
 3632390144,3632414719,US
 3632414720,3632422911,CA
@@ -101062,11 +105312,7 @@
 3635159040,3635163135,CA
 3635163136,3635171071,US
 3635171072,3635171327,CA
-3635171328,3635185407,US
-3635185408,3635185663,A1
-3635185664,3635187199,US
-3635187200,3635187455,A1
-3635187456,3635314687,US
+3635171328,3635314687,US
 3635314688,3635322879,CA
 3635322880,3635466239,US
 3635466240,3635470335,CA
@@ -101456,7 +105702,9 @@
 3639704574,3639704574,GB
 3639704575,3639730175,US
 3639730176,3639734271,CA
-3639734272,3639737343,US
+3639734272,3639736575,US
+3639736576,3639736831,HK
+3639736832,3639737343,US
 3639737344,3639737373,GB
 3639737374,3639737374,FR
 3639737375,3639737599,GB
@@ -101476,9 +105724,7 @@
 3640312320,3640312575,NI
 3640312576,3640312831,US
 3640312832,3640313087,TO
-3640313088,3640314879,US
-3640314880,3640315135,A2
-3640315136,3640315391,US
+3640313088,3640315391,US
 3640315392,3640315647,TR
 3640315648,3640316927,US
 3640316928,3640317183,MX
@@ -101496,10 +105742,10 @@
 3640430592,3640432639,DE
 3640432640,3640433407,US
 3640433408,3640433663,A2
-3640433664,3640436735,US
+3640433664,3640438783,US
 3640438784,3640442879,DE
 3640442880,3640446975,US
-3640446976,3640447999,CA
+3640446976,3640449023,CA
 3640449024,3640450047,A2
 3640450048,3640451071,US
 3640451072,3640459263,DE
@@ -101680,7 +105926,11 @@
 3641941760,3641942015,EU
 3641942016,3641950207,DE
 3641950208,3641954303,FR
-3641954304,3641958399,MD
+3641954304,3641957119,MD
+3641957120,3641957631,GB
+3641957632,3641957887,MD
+3641957888,3641958143,GB
+3641958144,3641958399,MD
 3641958400,3641960447,BE
 3641960448,3641960703,NL
 3641960704,3641961727,BE
@@ -101748,7 +105998,9 @@
 3642224640,3642228735,SK
 3642228736,3642232831,DE
 3642232832,3642236927,RS
-3642236928,3642241023,CH
+3642236928,3642237263,CH
+3642237264,3642237264,DE
+3642237265,3642241023,CH
 3642241024,3642245119,DE
 3642245120,3642249215,LV
 3642249216,3642253311,FR
@@ -101906,7 +106158,9 @@
 3644919808,3644923903,DE
 3644923904,3644924927,IL
 3644924928,3644925183,US
-3644925184,3644926463,IL
+3644925184,3644925439,IL
+3644925440,3644925695,US
+3644925696,3644926463,IL
 3644926464,3644926719,US
 3644926720,3644927999,IL
 3644928000,3644932095,GI
@@ -101970,7 +106224,7 @@
 3645202432,3645206527,CZ
 3645206528,3645210623,LV
 3645210624,3645214719,RU
-3645214720,3645218815,NL
+3645214720,3645218815,SE
 3645218816,3645222911,DE
 3645222912,3645227007,KW
 3645227008,3645235199,RU
@@ -102245,7 +106499,9 @@
 3647987656,3647987695,DE
 3647987696,3647987711,ES
 3647987712,3647988735,IT
-3647988736,3647989063,DE
+3647988736,3647988999,DE
+3647989000,3647989007,BE
+3647989008,3647989063,DE
 3647989064,3647989071,BE
 3647989072,3647995903,DE
 3647995904,3648004095,RU
@@ -102258,10 +106514,7 @@
 3648020480,3648024575,IT
 3648024576,3648028671,NL
 3648028672,3648032767,HU
-3648032768,3648033023,IE
-3648033024,3648036095,EU
-3648036096,3648036351,IE
-3648036352,3648036863,EU
+3648032768,3648036863,IE
 3648036864,3648040959,CZ
 3648040960,3648045055,BE
 3648045056,3648049151,FI
@@ -102585,14 +106838,14 @@
 3650879488,3650912255,RO
 3650912256,3650915327,GB
 3650915328,3650915583,FR
-3650915584,3650920447,GB
+3650915584,3650916393,GB
+3650916394,3650916394,FR
+3650916395,3650920447,GB
 3650920448,3650920457,FR
 3650920458,3650920458,GB
 3650920459,3650920703,FR
 3650920704,3650920895,GB
-3650920896,3650920897,GR
-3650920898,3650920898,GB
-3650920899,3650920927,GR
+3650920896,3650920927,GR
 3650920928,3650922799,GB
 3650922800,3650922815,FR
 3650922816,3650926335,GB
@@ -102818,9 +107071,7 @@
 3653410816,3653414911,CZ
 3653414912,3653419007,IT
 3653419008,3653423103,IL
-3653423104,3653426687,GB
-3653426688,3653426815,A1
-3653426816,3653427199,GB
+3653423104,3653427199,GB
 3653427200,3653431295,DE
 3653431296,3653435391,RU
 3653435392,3653439487,DE
@@ -102973,9 +107224,8 @@
 3664007168,3664008191,AU
 3664008192,3664008447,MN
 3664008448,3664008703,PK
-3664008704,3664008959,MY
-3664008960,3664009215,AU
-3664009216,3664052223,CN
+3664008960,3664010239,AU
+3664010240,3664052223,CN
 3664052224,3664084991,NZ
 3664084992,3664117759,KR
 3664117760,3664248831,HK
@@ -103091,7 +107341,9 @@
 3706159104,3706191871,CN
 3706191872,3706206959,SG
 3706206960,3706206975,AP
-3706206976,3706208255,SG
+3706206976,3706207107,SG
+3706207108,3706207108,US
+3706207109,3706208255,SG
 3706208256,3706224639,CN
 3706224640,3706257407,HK
 3706257408,3706322943,AU
@@ -103103,7 +107355,7 @@
 3707109376,3707174911,HK
 3707174912,3707207679,JP
 3707209728,3707211775,CN
-3707211776,3707215871,JP
+3707211776,3707215871,ID
 3707215872,3707217919,BD
 3707217920,3707219967,ID
 3707219968,3707222015,AU
@@ -103128,7 +107380,9 @@
 3715694592,3715710975,VN
 3715710976,3715719167,AU
 3715719168,3715727359,PH
-3715727360,3715735551,AU
+3715727360,3715729151,AU
+3715729152,3715729407,NZ
+3715729408,3715735551,AU
 3715735552,3715741695,JP
 3715741696,3715743743,PH
 3715743744,3715760127,JP
diff --git a/installer/resources/geoipv6.dat.gz b/installer/resources/geoipv6.dat.gz
index 5c00c5c68a551c2e97ab65987093af1845c8a89f..c19c99b8884678b96787e47e694a06b42acd6a96 100644
Binary files a/installer/resources/geoipv6.dat.gz and b/installer/resources/geoipv6.dat.gz differ
diff --git a/installer/resources/hosts.txt b/installer/resources/hosts.txt
index 46017c9c4dca659aee0b4e75dd1c6c1d05f5bb96..34987b08f82e4edbfc264d7e4053d565bf1ad4d3 100644
--- a/installer/resources/hosts.txt
+++ b/installer/resources/hosts.txt
@@ -360,3 +360,7 @@ i2pdocs.str4d.i2p=CRayYfxrPBELUQ4tYi723g8atsyHwkR0--N8fXggNqJgHsnrKxle0ovH5qj6aq
 mtn.i2p-projekt.i2p=I6Ha4I7rgR0JyExQnN~4sZz5CfRqdN7o-2t1i2YOExd2CxC4MHHz3nJ5KgBIqeNa0dZbugwMEYMWneXAf8nuy9RKUrjcDvGLqScuU8QCpG-e7UDR8lNregfaOwTuypBQiPh9nrc86Zc2JXyTv0eG3T5Yl1tydqs3qEz5w1vn64uRCrGLEMsnGMIZ4aXexseL6McW9ObIQ0qOIfRG9kc~3~bpD9UM4G04BXPZ1Ao5MUjGoQyxlaNCt1DrvAYcrRArzvv0QGyPjb6HpHLlK2UIoR6SumRuNYpEXCaqbXEnEicx1kB5Pyhcwm0cyaMCx-ZaUU-F1~23VurE41xNMbq4GwXtev4bVP4ycHGHjH-XYJmKrqnesIEp7InSAWfm0gdDHuy9377nSIyAhGLLFlWKtzrZPiKm57SN4~BZSQIF6CI4JutGa0x9EaO8hvzFgaYKgwS~a7-YuZNfx4VHEF2J34DrsJo4qetdPTWTKX1o-ztMP6f7DpWjp4JTKb36YstvAAAA
 tracker.thebland.i2p=gzBtMSRcMD6b36PmPCQWZhh30fYm2Ww2r4tRSref4N2T4~cnXK3DjJOuJwao2jRK4bZwX2Rkyjw849xrFMqaR3SdPe3-K61B~Kr9Uo1KLdm3~oahOWFmCaIlipPs-i3jdTT~721YUcYB09n4PGrDq5KZSOOBlLZKulJficO58QRUlDpva4OCCRrX9EUCoAavOciKpvKtnGwl6AiPFu8WnmEeGQ861vjdirjfkHWNp3gj9IjGuxJNcgyHi51BWYZM6il~LJTcbA4zuZn~qudHIx9uzUtO-t08yzSRrmfVwVVVru6-~BBX0ipADi9UGZjyB-PJEKKjizUPxSp2OCmiOlQ2iXpKs2j8yfjHJbn-eWKpIh4jfpNigy6AbDfzFivkvm8lt8CleYf-p3~SHdqIL0iEaacxi5BAU4Baj5yS818kPQP4hEEMMtq4WnKjl4IW64swXSg1wlVBTiKDJzzQGK20jySBuPxhEbd6sfAeirzn585g5EqeV8DLqsMfe5pZBQAEAAEAAA==
 opentracker.dg2.i2p=WSUjGXhqHr7TsBizCO0qV~Kk7G1-suPPSSyMs4AnLQ8wRlWWZ~9rl7AzS0tFG4Dbbl8Te0wtZmQeMhcartbJ3TY-TBnviFqA8zP-sEQf5UK0BA5zzrtpB7NnUo-65B61cVbqG51-p9cJZ~Crre0LEZm5bJs8P3J~oH3b3BJ0YXtuv0ccBgj~OAf1g8ZrHr431XLq8WPRkzAVEIDhFdiSCYAz8XTArNN7OnPUUCjZcw92Oqf9wajg0eXqnThDFbrCx54h0UKM7sVDqRnoXbuGVLTPVvmIOnwuwZrn4X60GMLW38Dg-38qSfJL61FIbn5HfK-VTjCOuC16PtvJAPS1qUBWa-Y3j3aGK3BpHQnlOl-XNB~tJU0GBzRvEnOPFbtqXw38LyTCsvXcY31C~sNC~jedATUfPSZK-UBeN6RkR5BQiXBV-YkzUvTM4s~oXXgw9WFe9DdEWP-XR9~2G1Qe-GkcRAKUXmTAzVnRjlHEDR0lLMfxDwe3OfZuBzM9Gda9AAAA
+i2pnews.i2p=XHS99uhrvijk3KxU438LjNf-SMXXiNXsbV8uwHFXdqsDsHPZRdc6LH-hEMGWDR5g2b65KLlSm8plFrTusR-yxBfGHtZLa9vhXCwWXXbUlBe7Ty6NlwY7GmJItBKPO09BbUa0oJ5jITjLM1mVxeHShAZs8IMlLJjYaeYycDdaUInuPrng51~ySeiiKKxHa3qJkFOuPgQQiCXqy-9Qhi7t9j16iXzWWZ5yN7XcE9i1J7UQix66ntwILTnTAYBelNbONPiSJzKq-BiXj13bI3~liBgckJGf1a1dU8lOuAemtB-XM36cUcg~LQ6iHMuxK-AE8UDQHTNma6E0TxlK5DizV34UgiJ2CxRB5n8BBrZQEvIjYOExXyt6gbopL-aer1qrL1zoIKoMbGon5P4GV~f8NyClJKHXSS2NW7FV-kZbmA0WSLAxecyBfSLStIlw01gtnb2OAQt6OkMQ693N2-L~IJMg4f1lWK4Pv0bIqJUrHZS8YyeWbb4Y~pto6hkd0kgRBQAEAAEAAA==
+exchanged.i2p=rLFzsOqsfSmJZvg6xvl~ctUulYWwGaM8K~rGs-e4WXkKePTCMOpU8l6LIU-wwDOiUZ7Ve8Y-zWPBVYQjH8~~lgT-BJ81zjP5I6H051KOVaXDChdx5F99mZu0sEjnYoFX484QHsUkFc5GUypqhpv1iwWwdPL7bVNzr1fS6sIZvq7tYWEOymbnifxk2jC0BnjultNPCq1wiI2Y-G66iOHDvuLu5f7RvNGJYlpw0UYNv6g8jUu3gXYjDRMBD5OIxFUJaksfmml2CiaGjrPfXKEXBR4q1CogVruq3r~447VHb32f52aeYszcslNzQjYyFCdipnAi5JiNTFpzTZPMEglt2J3KZYB3SMCmxSLktFI7376c7mT7EbMIFFv1GrmcUy9oIyYasbb82Sec9y0nJ9ahZt0x3iGokAYekXKXq-rGPzgFeBwfuCHzQnLzm1akVyJHoGDdaG0QHJfqfW1sY3F2n1xaWrnKcqIz2ypemxVnTMFKQqm2pdG-dMsXNYiGmZtaBQAEAAcAAA==
+i2pwiki.i2p=Zr1YUKIKooxymZRqLvtfSYuZggqv5txkLE8Ks~FTh3A8JDmhOV8C82dUBKJhzst~Pcbqz7rXc~TPyrqasaQ~LioAji~WLSs8PpmCLVF83edhYpx75Fp23ELboEszHduhKWuibVchPLNa-6nP4F0Ttcr4krTlphe3KveNfZDAbm511zFFlNzPcY4PqOdCRBrp7INiWkVwQxwGWO7jiNYTYa5x4QXJmxIN1YOiNRYQST7THz1aV6219ThsfT9FE5JtiX-epli6PF5ZX9TcVSjHUKZnr8uJLXfh5T4RMVNe1n~KXutMUZwxpFE0scOIez9vhDFd7t0HPIsQUsv7MUBzrz4FM9qol7UUPueSGDRgTOOfXMfj4BDsouiWQC4GcSmH3SflR0Ith9QWKC4u3XYvB7Tw-70QWBEV53hUo6I8YKidV13WgeN9JI3KWTYkMyX-TYjmY9y2q6Xd-Maszv4Tb~NzxQs9CNdu0W-JRSUFOqzgt3l4cx0K1pmx4p0tM5dLBQAEAAEAAA==
+lenta.i2p=DnW8NqbKilYLcIx5g5CG4mWVHkzrCkl0MbV4a5rGJku4BSs7HjvzjZpCoXWFky9JCUlHzjFotMETxQBhaKl0Q46vu-plKQ4BLnYyo45p7j2lTiejWvV4SDuXU4IAdmug27i~Jl4N44zwe9KYy~gMfY1Vsgv4bH9ov7X7l2iS-bycfcd9nE7JfycwFc4e0XU-dx7xf~tHw7I5--25dp-SsRX3-UYz4ygb58aD8UsKfQaFZtMy4x~Z1ufNEftuekb1HH9g2Rhhq8Bl62ad8PWSDa9Ne-SkCQsqTYjrCsvMY2DMvWgmZxI1hJYqzjRdFV6JEprrr~CJgHGJXr~KdnZhX12Vm4bKisZK847wBm42CoBQBT5HRzDkeflkbsliirRuKSUxVYMoZ1vic~avPZZl~pvIKZsz-YtiKha4vjCNE1zD-tHIS~2qq4uEO546Ol9pNokPaNttV6r7D2-zurEDx~9grJ8LhBozTxtdTdfZv2OqN4bVhrE7xUrxe0flIFKEAAAA
diff --git a/installer/resources/icons/flags/ap.png b/installer/resources/icons/flags/ap.png
new file mode 100644
index 0000000000000000000000000000000000000000..adde45fd8462fed5c1eb33684f106c8400604920
Binary files /dev/null and b/installer/resources/icons/flags/ap.png differ
diff --git a/installer/resources/icons/flags/bl.png b/installer/resources/icons/flags/bl.png
new file mode 100644
index 0000000000000000000000000000000000000000..8332c4ec23c853944c29b02d7b32a88033f48a71
Binary files /dev/null and b/installer/resources/icons/flags/bl.png differ
diff --git a/installer/resources/icons/flags/bq.png b/installer/resources/icons/flags/bq.png
new file mode 100644
index 0000000000000000000000000000000000000000..0620838aa12e31382b33081427673bc6a1d27fb3
Binary files /dev/null and b/installer/resources/icons/flags/bq.png differ
diff --git a/installer/resources/icons/flags/ss.png b/installer/resources/icons/flags/ss.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8716eed4af25b56f5fb0d2454d012f4cb0f1f78
Binary files /dev/null and b/installer/resources/icons/flags/ss.png differ
diff --git a/installer/resources/icons/flags/sx.png b/installer/resources/icons/flags/sx.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2edf588e39cf020e10368f7459f45286a8f752c
Binary files /dev/null and b/installer/resources/icons/flags/sx.png differ
diff --git a/installer/resources/locale/bundle-messages.sh b/installer/resources/locale/bundle-messages.sh
index d49b553b09920ede052676de54b39690052fc150..ce5704d7e88b9e5bd0dfe7b350c37437f9baf96c 100755
--- a/installer/resources/locale/bundle-messages.sh
+++ b/installer/resources/locale/bundle-messages.sh
@@ -24,7 +24,7 @@ if which find|grep -q -i windows ; then
 	export PATH=.:/bin:/usr/local/bin:$PATH
 fi
 # Fast mode - update ondemond
-# set LG2 to the language you need in envrionment varibales to enable this
+# set LG2 to the language you need in environment variables to enable this
 
 JPATHS=".."
 for i in po/messages_*.po
diff --git a/installer/resources/locale/po/messages_de.po b/installer/resources/locale/po/messages_de.po
index 465ada2519779347b6ebbaf47daec34c13a31234..c8c499a4c7b0b2bf195f1ac405c9bb85002a2b12 100644
--- a/installer/resources/locale/po/messages_de.po
+++ b/installer/resources/locale/po/messages_de.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-09 18:07+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-12-04 18:54+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: German (http://www.transifex.com/projects/p/I2P/language/"
@@ -24,185 +24,185 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Wrapper konnte nicht geladen werden."
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME läuft bereits."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Führe $APP_LONG_NAME aus"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Warte auf $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "WARNUNG: Das Starten von $APP_LONG_NAME könnte fehlgeschlagen sein"
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Nur root kann diese Aktion durchführen."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Starte $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Stoppe $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME wurde nicht ausgeführt."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Konnte $APP_LONG_NAME nicht beenden."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Warte auf die Beendigung von $APP_LONG_NAME."
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Beenden von $APP_LONG_NAME fehlgeschlagen."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME wurde beendet."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Beende $APP_LONG_NAME ordnungsgemäß."
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME wird nicht ausgeführt."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME wird ausgeführt: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr ""
 "$APP_LONG_NAME wird ausgeführt: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "Der $APP_LONG_NAME Dämon ist bereits installiert."
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Installiere den $APP_LONG_NAME Dämon"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Die Installation für $DIST_OS wird momentan nicht unterstützt"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Entferne $APP_LONG_NAME Dämon"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "Der $APP_LONG_NAME Dämon ist momentan nicht installiert."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Entfernen wird momentan unter $DIST_OS nicht unterstützt."
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Befehle:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Start in dieser Konsole."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Im Hintergrund als Dämon starten."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr ""
 "Beende den Router, falls er als Dämon oder in einer anderen Konsole "
 "ausgeführt wird."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Ordnungsgemäßes Beenden kann bis zu 11 Minuten dauern."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr ""
 "Beende den Router, falls er ausgeführt wird und dann starte ihn erneut."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Starte den Router neu, falls er momentan ausgeführt wird."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Aktuellen Status abfragen."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Installiere für automatischen Start wenn das System hochfährt."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Deinstallieren."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Falls gestartet, fordere einen Java Thread dump an"
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Bitte bearbeite i2prouter und setze die Variable RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "I2P als root Benutzer auszuführen ist *nicht* empfehlenswert."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
 "Um I2P trotzdem als root auszuführen bearbeite i2prouter und setze "
diff --git a/installer/resources/locale/po/messages_en.po b/installer/resources/locale/po/messages_en.po
index 81921f7f7ca87f27761f1637b9944a1d5417d146..813b061ea3a217dc321b0203904535bf9a2914e9 100644
--- a/installer/resources/locale/po/messages_en.po
+++ b/installer/resources/locale/po/messages_en.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P startup script\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-18 20:15+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2012-12-21 23:34+0000\n"
 "Last-Translator: kytv <killyourtv@mail.i2p>\n"
 "Language-Team: English \n"
@@ -22,176 +22,176 @@ msgstr ""
 msgid "Failed to load the wrapper"
 msgstr ""
 
-#: ../i2prouter:943 ../i2prouter:967 ../i2prouter:1041 ../i2prouter:1069
-#: ../i2prouter:1090
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr ""
 
-#: ../i2prouter:954
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:974
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:1021
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr ""
 
-#: ../i2prouter:1035 ../i2prouter:1063 ../i2prouter:1269 ../i2prouter:1558
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr ""
 
-#: ../i2prouter:1079
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:1101
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:1105 ../i2prouter:1173 ../i2prouter:1726
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr ""
 
-#: ../i2prouter:1118 ../i2prouter:1126 ../i2prouter:1188 ../i2prouter:1196
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr ""
 
-#: ../i2prouter:1144
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr ""
 
-#: ../i2prouter:1158
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr ""
 
-#: ../i2prouter:1161
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr ""
 
-#: ../i2prouter:1169
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr ""
 
-#: ../i2prouter:1215
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr ""
 
-#: ../i2prouter:1220
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr ""
 
-#: ../i2prouter:1223
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr ""
 
-#: ../i2prouter:1276 ../i2prouter:1288 ../i2prouter:1307 ../i2prouter:1324
-#: ../i2prouter:1391 ../i2prouter:1411 ../i2prouter:1425 ../i2prouter:1439
-#: ../i2prouter:1467 ../i2prouter:1505 ../i2prouter:1540
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr ""
 
-#: ../i2prouter:1279 ../i2prouter:1294 ../i2prouter:1396 ../i2prouter:1428
-#: ../i2prouter:1442 ../i2prouter:1456 ../i2prouter:1470 ../i2prouter:1508
-#: ../i2prouter:1543
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr ""
 
-#: ../i2prouter:1550
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr ""
 
-#: ../i2prouter:1566 ../i2prouter:1579 ../i2prouter:1593 ../i2prouter:1602
-#: ../i2prouter:1612 ../i2prouter:1636 ../i2prouter:1649 ../i2prouter:1661
-#: ../i2prouter:1679 ../i2prouter:1692 ../i2prouter:1706
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr ""
 
-#: ../i2prouter:1572 ../i2prouter:1587 ../i2prouter:1596 ../i2prouter:1606
-#: ../i2prouter:1617 ../i2prouter:1630 ../i2prouter:1642 ../i2prouter:1655
-#: ../i2prouter:1673 ../i2prouter:1686 ../i2prouter:1700 ../i2prouter:1711
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr ""
 
-#: ../i2prouter:1715
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr ""
 
-#: ../i2prouter:1802
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr ""
 
-#: ../i2prouter:1803
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr ""
 
-#: ../i2prouter:1804
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr ""
 
-#: ../i2prouter:1805
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr ""
 
-#: ../i2prouter:1806
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr ""
 
-#: ../i2prouter:1807
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr ""
 
-#: ../i2prouter:1808
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr ""
 
-#: ../i2prouter:1809
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr ""
 
-#: ../i2prouter:1810
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr ""
 
-#: ../i2prouter:1811
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr ""
 
-#: ../i2prouter:1812
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr ""
 
-#: ../i2prouter:1825
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr ""
 
-#: ../i2prouter:1830
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr ""
 
-#: ../i2prouter:1833
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
diff --git a/installer/resources/locale/po/messages_es.po b/installer/resources/locale/po/messages_es.po
index 7b8d3fa3097b7fb5a336b13e4566ddef05e015a0..fd12737dc1ed647738c76163c54f090e839fd9bf 100644
--- a/installer/resources/locale/po/messages_es.po
+++ b/installer/resources/locale/po/messages_es.po
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-01 19:59+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-08-11 14:15+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: Spanish (http://www.transifex.com/projects/p/I2P/language/"
@@ -24,183 +24,183 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Falló al cargar el "
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME está aún ejecutándose"
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Ejecutando $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Esperando a $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "CUIDADO: puede que $APP_LONG_NAME haya fallado al iniciarse."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Debe ser root para realizar esta acción"
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Iniciando $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Deteniendo $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME no estaba en ejecución."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "No se pudo detener $APP_LONG_NAME."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Esperando a que salga de $APP_LONG_NAME"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "No se pudo detener $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "Se detuvo $APP_LONG_NAME."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Deteniendo $APP_LONG_NAME elegantemente"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME no está en ejecución."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME está en ejecución: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr ""
 "$APP_LONG_NAME ejecutándose: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "$APP_LONG_NAME está aún instalado"
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Instalando el demonio $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "La instalación no está aún soportada por $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Eliminando el demonio $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "El demonio $APP_LONG_NAME no está instalado actualmente."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Eliminar no está actualmente soportado por $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Órdenes:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Ejecutar en la consola actual."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Iniciar en segundo plano como un proceso de demonio."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr ""
 "Parar en caso de que esté ejecutándose como un demonio o en otra consola."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Parada segura, puede tardar hasta 11 minutos."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Parar si está ejecutándose y entonces iniciar."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Reiniciar sólo si ya se está ejecutando."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Consultar el estado actual."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Instalar para que se inicie automáticamente con el sistema."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Desinstalar."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Solicitar un volcado del hilo JAVA si se está ejecutando."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Por favor edite i2prouter e introduzca la variable RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "\"No\" se recomienda ejecutar I2P como root."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
 "Para ejecutar como root de todos modos, edite i2prouter y ponga la variable "
diff --git a/installer/resources/locale/po/messages_fr.po b/installer/resources/locale/po/messages_fr.po
index 8b2cb92a3e57c72e889bcfd2b2e9defca49179d4..240be56752bf0ea4ec614684d2d05aa1d64629d8 100644
--- a/installer/resources/locale/po/messages_fr.po
+++ b/installer/resources/locale/po/messages_fr.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-01 20:01+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-08-11 15:53+0000\n"
 "Last-Translator: kytv <killyourtv@i2pmail.org>\n"
 "Language-Team: French (http://www.transifex.com/projects/p/I2P/language/"
@@ -21,184 +21,184 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Echec de chargement du wrapper"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME fonctionne déjà."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Lancement de $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Attente de $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "AVERTISSEMENT : $APP_LONG_NAME peut avoir échoué à démarrer."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Vous devez être root pour accomplir cette action."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Démarrage de $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Arrêt de $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME ne fonctionnait pas."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Incapable de stopper $APP_LONG_NAME."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "En attente que $APP_LONG_NAME existe"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Echec à stopper $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "Stoppé $APP_LONG_NAME."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Arrête $APP_LONG_NAME gracieusement"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME ne tourne pas."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME fait tourner: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr ""
 "$APP_LONG_NAME fait tourner: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "Le démon de $APP_LONG_NAME est déjà installé."
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Installing le démon de $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Installation actuellement pas prise en charge pour $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Supprime le démon $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "Le démon $APP_LONG_NAME n'est actuellement pas installé."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Suppression actuellement pas prise en charge pour $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Commandes :"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Lancer dans la console actuelle."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Démarre en tâche de fond comme un processus démon."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Stopper s'il fonctionne comme un démon ou dans une autre console."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Stopper gracieusement, peut prendre jusqu'à 11 minutes."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Stopper si il marche et ensuite démarrer."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Redémarrer seulement si il est déjà en cours d'exécution."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Interroger l'état actuel."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr ""
 "Installer pour lancer automatiquement quand le système système démarre."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Désinstalle."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Request a Java thread dump if running."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Veuillez éditer i2prouter et paramétrer la variable RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr ""
 "Faire fonctionner I2P en tant qu'utilisateur root n'est *pas* recommandé."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
 "Pour exécuter en tant que root de toute façon, éditer i2prouter et mettre "
diff --git a/installer/resources/locale/po/messages_id.po b/installer/resources/locale/po/messages_id.po
index 877ee8d66e0a5aa71fd5981c525c47151f00e9f8..e755c2369869384e7293913905be5c1c7d5a0655 100644
--- a/installer/resources/locale/po/messages_id.po
+++ b/installer/resources/locale/po/messages_id.po
@@ -2,197 +2,200 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # Khairul Agasta <khairuldroids@gmail.com>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-06 18:28+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2014-08-29 06:04+0000\n"
 "Last-Translator: Khairul Agasta <khairuldroids@gmail.com>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/I2P/language/id/)\n"
+"Language-Team: Indonesian (http://www.transifex.com/projects/p/I2P/language/"
+"id/)\n"
+"Language: id\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: id\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
 #: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Gagal memuat wrapper"
 
-#: ../i2prouter:943 ../i2prouter:967 ../i2prouter:1041 ../i2prouter:1069
-#: ../i2prouter:1090
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME sudah berjalan."
 
-#: ../i2prouter:954
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Menjalankan $APP_LONG_NAME"
 
-#: ../i2prouter:974
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Menunggu $APP_LONG_NAME"
 
-#: ../i2prouter:1021
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "PERINGATAN: $APP_LONG_NAME mungkin gagal memulai."
 
-#: ../i2prouter:1035 ../i2prouter:1063 ../i2prouter:1269 ../i2prouter:1558
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Harus sudah root untuk melaksanakan tindakan ini."
 
-#: ../i2prouter:1079
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Memulai $APP_LONG_NAME"
 
-#: ../i2prouter:1101
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Menghentikan $APP_LONG_NAME"
 
-#: ../i2prouter:1105 ../i2prouter:1173 ../i2prouter:1726
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME tidak berjalan."
 
-#: ../i2prouter:1118 ../i2prouter:1126 ../i2prouter:1188 ../i2prouter:1196
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Tidak dapat menghentikan $APP_LONG_NAME."
 
-#: ../i2prouter:1144
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Menunggu $APP_LONG_NAME untuk mengakhiri"
 
-#: ../i2prouter:1158
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Gagal menghentikan $APP_LONG_NAME."
 
-#: ../i2prouter:1161
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME dihentikan."
 
-#: ../i2prouter:1169
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Menghentikan $APP_LONG_NAME dengan halus"
 
-#: ../i2prouter:1215
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME tidak berjalan."
 
-#: ../i2prouter:1220
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME sedang berjalan: PID:$pid"
 
-#: ../i2prouter:1223
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
-msgstr "$APP_LONG_NAME sudah berjalan: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
+msgstr ""
+"$APP_LONG_NAME sudah berjalan: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1276 ../i2prouter:1288 ../i2prouter:1307 ../i2prouter:1324
-#: ../i2prouter:1391 ../i2prouter:1411 ../i2prouter:1425 ../i2prouter:1439
-#: ../i2prouter:1467 ../i2prouter:1505 ../i2prouter:1540
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "Daemon $APP_LONG_NAME sudah terpasang."
 
-#: ../i2prouter:1279 ../i2prouter:1294 ../i2prouter:1396 ../i2prouter:1428
-#: ../i2prouter:1442 ../i2prouter:1456 ../i2prouter:1470 ../i2prouter:1508
-#: ../i2prouter:1543
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Memasang daemon $APP_LONG_NAME"
 
-#: ../i2prouter:1550
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Memasang saat ini tidak didukung untuk $DIST_OS"
 
-#: ../i2prouter:1566 ../i2prouter:1579 ../i2prouter:1593 ../i2prouter:1602
-#: ../i2prouter:1612 ../i2prouter:1636 ../i2prouter:1649 ../i2prouter:1661
-#: ../i2prouter:1679 ../i2prouter:1692 ../i2prouter:1706
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Menghapus daemon $APP_LONG_NAME"
 
-#: ../i2prouter:1572 ../i2prouter:1587 ../i2prouter:1596 ../i2prouter:1606
-#: ../i2prouter:1617 ../i2prouter:1630 ../i2prouter:1642 ../i2prouter:1655
-#: ../i2prouter:1673 ../i2prouter:1686 ../i2prouter:1700 ../i2prouter:1711
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "Daemon $APP_LONG_NAME saat ini belum dipasang"
 
-#: ../i2prouter:1715
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Menghapus saat ini tidak didukung untuk $DIST_OS"
 
-#: ../i2prouter:1802
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Perintah:"
 
-#: ../i2prouter:1803
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Luncurkan dalam konsol saat ini."
 
-#: ../i2prouter:1804
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Mulai di latar sebagai proses daemon."
 
-#: ../i2prouter:1805
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Hentikan jika berjalan sebagai daemon atau pada konsol lain."
 
-#: ../i2prouter:1806
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Menghentikan dengan halus,  bisa memakan waktu hingga 11 menit."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Hentikan jika berjalan dan kemudian memulainya."
 
-#: ../i2prouter:1808
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Memulai ulang hanya jika sudah berjalan."
 
-#: ../i2prouter:1809
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Menanyakan status saat ini."
 
-#: ../i2prouter:1810
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Pasang untuk memulai secara otomatis ketika sistem boot."
 
-#: ../i2prouter:1811
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Copot."
 
-#: ../i2prouter:1812
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Meminta thread buangan Java jika berjalan."
 
-#: ../i2prouter:1825
-msgid "Please edit i2prouter and set the variable RUN_AS_USER"
-msgstr "Silahkan mengedit i2prouter dan setel variabel RUN_AS_USER"
+#: ../i2prouter:1864
+msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
+msgstr "Silahkan mengedit /etc/default/i2p dan setel variabel RUN_AS_USER"
 
-#: ../i2prouter:1830
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Menjalankan I2P sebagai pengguna root adalah *tidak* direkomendasikan."
 
-#: ../i2prouter:1833
-msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "Untuk menjalankan sebagai root, edit i2prouter dan setel ALLOW_ROOT=true."
+#: ../i2prouter:1872
+msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
+msgstr ""
+"Untuk menjalankan sebagai root, edit /etc/default/i2p dan setel ALLOW_ROOT=true."
diff --git a/installer/resources/locale/po/messages_it.po b/installer/resources/locale/po/messages_it.po
index 1375c340771ab99370a7b4652df0766e7551edf7..8fb4ed3c2db6ca75ff7ae5cf12f935119b3bbd64 100644
--- a/installer/resources/locale/po/messages_it.po
+++ b/installer/resources/locale/po/messages_it.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-01 20:02+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-01-10 21:29+0000\n"
 "Last-Translator: BadCluster <badcluster@i2pmail.org>\n"
 "Language-Team: Italian (http://www.transifex.com/projects/p/I2P/language/"
@@ -20,180 +20,180 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr ""
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr ""
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr ""
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr ""
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr ""
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr ""
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr ""
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr ""
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr ""
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr ""
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr ""
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr ""
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr ""
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr ""
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr ""
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr ""
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Istallazione non ancora supportata per $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr ""
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr ""
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr ""
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Comandi:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr ""
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr ""
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr ""
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr ""
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr ""
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr ""
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr ""
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr ""
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr ""
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr ""
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr ""
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr ""
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
diff --git a/installer/resources/locale/po/messages_ja.po b/installer/resources/locale/po/messages_ja.po
index 47260ffc294b4e3baa96fcc883ddba2329aa337c..294c82c74932fd7013621d1e7611742f7e8c5b85 100644
--- a/installer/resources/locale/po/messages_ja.po
+++ b/installer/resources/locale/po/messages_ja.po
@@ -2,197 +2,202 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # plazmism <gomidori@live.jp>, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:51+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2014-02-13 11:19+0000\n"
 "Last-Translator: plazmism <gomidori@live.jp>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/ja/)\n"
+"Language-Team: Japanese (http://www.transifex.com/projects/p/I2P/language/"
+"ja/)\n"
+"Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "ラッパーの読み込みに失敗"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME がすでに起動中です。"
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME を起動中"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME を待機中"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "警告: $APP_LONG_NAME は開始に失敗したかもしれません。"
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "このアクションを実行するには、rootである必要があります。"
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME を起動中"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME を停止中"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME は起動していませんでした。"
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME を停止できません。"
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "$APP_LONG_NAME が終了するのを待っています"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME の停止に失敗しました。"
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME が停止しました。"
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "$APP_LONG_NAME を適切に停止中"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME は起動していません。"
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME は起動しています: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
-msgstr "$APP_LONG_NAME は起動しています: PID:$pid、 ラッパー:$STATUS、 Java:$JAVASTATUS"
+msgstr ""
+"$APP_LONG_NAME は起動しています: PID:$pid、 ラッパー:$STATUS、 Java:"
+"$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "$APP_LONG_NAME デーモンはすでにインストールされています。"
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "$APP_LONG_NAME のデーモンをインストール中"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "$DIST_OS に現在サポートされていないインストール"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "$APP_LONG_NAME デーモンを削除中"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "$APP_LONG_NAME daemon は現在インストールされていません。"
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "$DIST_OS に現在サポートされていない削除"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "コマンド:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "現在のコンソールで起動。"
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "デーモンプロセスとしてバックグラウンドで開始"
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "デーモンとして、あるいは他のコンソールで起動中の場合停止"
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "適切に停、最大11分掛かる恐れがあります。"
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "起動中の場合、停止してから起動"
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "すでに起動中の場合のみ再起動。"
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "現在の状態を問い合わせ"
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "インストールして、システムのブート時に自動的に起動する。"
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "アンインストール。"
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "起動中の場合、 Java スレッドダンプを要求"
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "i2prouter を編集して、変数 RUN_AS_USER を設定してください"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "root ユーザーとしての I2P の起動は推奨され*ません*。"
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "とにかく root として起動し、 i2prouter を編集して、ALLOW_ROOT=true と設定する。"
+msgstr ""
+"とにかく root として起動し、 i2prouter を編集して、ALLOW_ROOT=true と設定す"
+"る。"
diff --git a/installer/resources/locale/po/messages_nl.po b/installer/resources/locale/po/messages_nl.po
index 1b56d3ff6871ddf0f7b6c84ed9dc0b5b303a1228..2104676728ea49b8fa0adb27037f0454cf3cc667 100644
--- a/installer/resources/locale/po/messages_nl.po
+++ b/installer/resources/locale/po/messages_nl.po
@@ -2,197 +2,199 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # Nathan Follens, 2015
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-06 18:28+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2015-01-18 10:33+0000\n"
 "Last-Translator: Nathan Follens\n"
 "Language-Team: Dutch (http://www.transifex.com/projects/p/I2P/language/nl/)\n"
+"Language: nl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: nl\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Laden van wrapper mislukt"
 
-#: ../i2prouter:943 ../i2prouter:967 ../i2prouter:1041 ../i2prouter:1069
-#: ../i2prouter:1090
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME draait al."
 
-#: ../i2prouter:954
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME draaien"
 
-#: ../i2prouter:974
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Wachten op $APP_LONG_NAME"
 
-#: ../i2prouter:1021
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "WAARSCHUWING: $APP_LONG_NAME is misschien niet gestart."
 
-#: ../i2prouter:1035 ../i2prouter:1063 ../i2prouter:1269 ../i2prouter:1558
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Root vereist om deze handeling uit te voeren."
 
-#: ../i2prouter:1079
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME starten"
 
-#: ../i2prouter:1101
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME stoppen"
 
-#: ../i2prouter:1105 ../i2prouter:1173 ../i2prouter:1726
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME draaide niet."
 
-#: ../i2prouter:1118 ../i2prouter:1126 ../i2prouter:1188 ../i2prouter:1196
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Kon $APP_LONG_NAME niet stoppen."
 
-#: ../i2prouter:1144
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Wachten op $APP_LONG_NAME om af te sluiten"
 
-#: ../i2prouter:1158
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Stoppen van $APP_LONG_NAME mislukt."
 
-#: ../i2prouter:1161
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME gestopt."
 
-#: ../i2prouter:1169
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "$APP_LONG_NAME sierlijk stoppen"
 
-#: ../i2prouter:1215
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME draait niet."
 
-#: ../i2prouter:1220
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME draait: PID:$pid"
 
-#: ../i2prouter:1223
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr "$APP_LONG_NAME draait: PID:$pid, Wrapper: $STATUS, Jave: $JAVASTATUS"
 
-#: ../i2prouter:1276 ../i2prouter:1288 ../i2prouter:1307 ../i2prouter:1324
-#: ../i2prouter:1391 ../i2prouter:1411 ../i2prouter:1425 ../i2prouter:1439
-#: ../i2prouter:1467 ../i2prouter:1505 ../i2prouter:1540
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "De $APP_LONG_NAME daemon is al geïnstalleerd."
 
-#: ../i2prouter:1279 ../i2prouter:1294 ../i2prouter:1396 ../i2prouter:1428
-#: ../i2prouter:1442 ../i2prouter:1456 ../i2prouter:1470 ../i2prouter:1508
-#: ../i2prouter:1543
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Bezig met installeren van de $APP_LONG_NAME daemon"
 
-#: ../i2prouter:1550
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Installeren wordt momenteel niet ondersteund voor $DIST_OS"
 
-#: ../i2prouter:1566 ../i2prouter:1579 ../i2prouter:1593 ../i2prouter:1602
-#: ../i2prouter:1612 ../i2prouter:1636 ../i2prouter:1649 ../i2prouter:1661
-#: ../i2prouter:1679 ../i2prouter:1692 ../i2prouter:1706
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Bezig met verwijderen van $APP_LONG_NAME daemon"
 
-#: ../i2prouter:1572 ../i2prouter:1587 ../i2prouter:1596 ../i2prouter:1606
-#: ../i2prouter:1617 ../i2prouter:1630 ../i2prouter:1642 ../i2prouter:1655
-#: ../i2prouter:1673 ../i2prouter:1686 ../i2prouter:1700 ../i2prouter:1711
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "De $APP_LONG_NAME daemon is momenteel niet geïnstalleerd."
 
-#: ../i2prouter:1715
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Verwijderen wordt momenteel niet ondersteund voor $DIST_OS"
 
-#: ../i2prouter:1802
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Commando's:"
 
-#: ../i2prouter:1803
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Starten in de huidige console."
 
-#: ../i2prouter:1804
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Starten in de achtergrond als een daemon-proces."
 
-#: ../i2prouter:1805
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Stop indien draaiende als een daemon of in een andere console."
 
-#: ../i2prouter:1806
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Sierlijk stoppen, kan tot 11 minuten duren."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Indien draaiende, stop en start opnieuw."
 
-#: ../i2prouter:1808
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Herstart enkel indien al draaiend."
 
-#: ../i2prouter:1809
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "De huidige status opvragen."
 
-#: ../i2prouter:1810
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Installeren om automatisch te starten wanneer het systeem opstart."
 
-#: ../i2prouter:1811
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Verwijderen."
 
-#: ../i2prouter:1812
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Vraag een Java thread dump indien draaiende."
 
-#: ../i2prouter:1825
-msgid "Please edit i2prouter and set the variable RUN_AS_USER"
-msgstr "Gelieve i2prouter te wijzigen en de variabele RUN_AS_USER in te stellen"
+#: ../i2prouter:1864
+msgid "Please edit /etc/default/i2p and set the variable RUN_AS_USER"
+msgstr ""
+"Gelieve /etc/default/i2p te wijzigen en de variabele RUN_AS_USER in te stellen"
 
-#: ../i2prouter:1830
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "I2P uitvoeren als root is *niet* aanbevolen."
 
-#: ../i2prouter:1833
-msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "Om toch als root uit te voeren, wijzig i2prouter en stel ALLOW_ROOT=true in."
+#: ../i2prouter:1872
+msgid "To run as root anyway, edit /etc/default/i2p and set ALLOW_ROOT=true."
+msgstr ""
+"Om toch als root uit te voeren, wijzig /etc/default/i2p en stel ALLOW_ROOT=true in."
diff --git a/installer/resources/locale/po/messages_pl.po b/installer/resources/locale/po/messages_pl.po
index f345ede4fbbb598a95c8a51a190b510c8ab31dc5..9f691a9d4e2e4cab7a7ae676ef15ea1849e5ac8c 100644
--- a/installer/resources/locale/po/messages_pl.po
+++ b/installer/resources/locale/po/messages_pl.po
@@ -2,197 +2,202 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # sebx, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:51+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2014-02-05 22:18+0000\n"
 "Last-Translator: sebx\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/pl/)\n"
+"Language-Team: Polish (http://www.transifex.com/projects/p/I2P/language/"
+"pl/)\n"
+"Language: pl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: pl\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Nie udało uruchomić się osłony"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME jest już uruchomione."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Uruchomione $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Czeka na $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "UWAGA: $APP_LONG_NAME mogło się nie uruchomić."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Musisz mieć prawa roota, aby wykonać daną czynność."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Trwa uruchamianie $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Zatrzymywanie $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME nie było uruchomione."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Nie można zatrzymać $APP_LONG_NAME."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Trwa czekanie na wyłączenie $APP_LONG_NAME"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Nie udało się wyłączyć $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "Zatrzymano $APP_LONG_NAME."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Zatrzymywanie $APP_LONG_NAME"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr " $APP_LONG_NAME nie jest włączone."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME jest uruchomione: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
-msgstr "$APP_LONG_NAME jest uruchomione: PID:$pid, Osłona:$STATUS, Java:$JAVASTATUS"
+msgstr ""
+"$APP_LONG_NAME jest uruchomione: PID:$pid, Osłona:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "The $APP_LONG_NAME daemon jest już zainstalowany."
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Instalacja deamona $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Instalacja nie jest obecnie obsługiwana dla $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Usuwanie deamona $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "Deamon $APP_LONG_NAME nie jest obecnie zainstalowany."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Usunięcie obecnie jest jest obsługiwane dla $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Polecenia:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Odpal w obecnej konsoli."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Uruchom w tle jako proces deamon."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
-msgstr "Zatrzymaj jeśli jest uruchomione jako deamon lub jest uruchomione w innej konsoli."
+msgstr ""
+"Zatrzymaj jeśli jest uruchomione jako deamon lub jest uruchomione w innej "
+"konsoli."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Wdzięczne zatrzymanie może potrwać nawet 11 minut."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Zatrzymaj jeśli działa i uruchom ponownie."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Zrestartuj tylko wtedy jeśli jest już uruchomione."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Zbadaj aktualny stan."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Zainstaluj aby uruchomić automatycznie przy starcie systemu."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Odinstaluj."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Zażądaj zrzutu wątków Java jeśli jest uruchomiona."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "ProszÄ™ edytuj i2prouter i ustaw zmiennÄ… RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Nie jest polecane uruchamianie I2P jako root."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr "Aby uruchomić jako root, edytuj i2prouter i ustaw ALLOW_ROOT=true."
diff --git a/installer/resources/locale/po/messages_pt.po b/installer/resources/locale/po/messages_pt.po
index ba0907e40e92c86552eda404369d82d57c1e0fd9..5a6f715fb28f78eafd2d6a20e3227218880250bb 100644
--- a/installer/resources/locale/po/messages_pt.po
+++ b/installer/resources/locale/po/messages_pt.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-11 15:44+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-06-17 20:59+0000\n"
 "Last-Translator: rafaelbf\n"
 "Language-Team: Portuguese (http://www.transifex.com/projects/p/I2P/language/"
@@ -21,182 +21,182 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Falha ao iniciar wrapper"
 
-#: ../i2prouter:908 ../i2prouter:935 ../i2prouter:1009 ../i2prouter:1037
-#: ../i2prouter:1061
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME já se encontra em funcionamento."
 
-#: ../i2prouter:919
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME Iniciado"
 
-#: ../i2prouter:942
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "À espera de $APP_LONG_NAME"
 
-#: ../i2prouter:989
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "Aviso: $APP_LONG_NAME pode ter falhado a ser iniciado."
 
-#: ../i2prouter:1003 ../i2prouter:1031 ../i2prouter:1240 ../i2prouter:1529
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Tem de ser root para realizar esta ação."
 
-#: ../i2prouter:1047
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "A Iniciar $APP_LONG_NAME"
 
-#: ../i2prouter:1072
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "A encerrar $APP_LONG_NAME"
 
-#: ../i2prouter:1076 ../i2prouter:1144 ../i2prouter:1697
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME não foi iniciado."
 
-#: ../i2prouter:1089 ../i2prouter:1097 ../i2prouter:1159 ../i2prouter:1167
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Incapaz de encerrar $APP_LONG_NAME."
 
-#: ../i2prouter:1115
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "À espera de $APP_LONG_NAME para encerrar."
 
-#: ../i2prouter:1129
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Falhou o encerramento de $APP_LONG_NAME."
 
-#: ../i2prouter:1132
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME Encerrado."
 
-#: ../i2prouter:1140
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "A parar $APP_LONG_NAME graciosamente"
 
-#: ../i2prouter:1186
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME não foi iniciado."
 
-#: ../i2prouter:1191
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME foi iniciado: PID:$pid"
 
-#: ../i2prouter:1194
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr ""
 "$APP_LONG_NAME foi iniciado: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1247 ../i2prouter:1259 ../i2prouter:1278 ../i2prouter:1295
-#: ../i2prouter:1362 ../i2prouter:1382 ../i2prouter:1396 ../i2prouter:1410
-#: ../i2prouter:1438 ../i2prouter:1476 ../i2prouter:1511
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "O  daemon $APP_LONG_NAME já foi instalado."
 
-#: ../i2prouter:1250 ../i2prouter:1265 ../i2prouter:1367 ../i2prouter:1399
-#: ../i2prouter:1413 ../i2prouter:1427 ../i2prouter:1441 ../i2prouter:1479
-#: ../i2prouter:1514
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "A instalar daemon $APP_LONG_NAME"
 
-#: ../i2prouter:1521
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "A instalação neste momento não é suportada para $DIST_OS"
 
-#: ../i2prouter:1537 ../i2prouter:1550 ../i2prouter:1564 ../i2prouter:1573
-#: ../i2prouter:1583 ../i2prouter:1607 ../i2prouter:1620 ../i2prouter:1632
-#: ../i2prouter:1650 ../i2prouter:1663 ../i2prouter:1677
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "A remover daemon $APP_LONG_NAME"
 
-#: ../i2prouter:1543 ../i2prouter:1558 ../i2prouter:1567 ../i2prouter:1577
-#: ../i2prouter:1588 ../i2prouter:1601 ../i2prouter:1613 ../i2prouter:1626
-#: ../i2prouter:1644 ../i2prouter:1657 ../i2prouter:1671 ../i2prouter:1682
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "O daemon $APP_LONG_NAME não se encontra instalado neste momento."
 
-#: ../i2prouter:1686
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "A remoção neste momento não é suportada para $DIST_OS"
 
-#: ../i2prouter:1773
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Comandos: "
 
-#: ../i2prouter:1774
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Inicie na consola atual."
 
-#: ../i2prouter:1775
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "A iniciar no background como processo daemon."
 
-#: ../i2prouter:1776
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Pare se iniciado como daemon ou noutra consola."
 
-#: ../i2prouter:1777
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Pare graciosamente, pode demorar ate 11 minutos."
 
-#: ../i2prouter:1778
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Pare se iniciado e depois inicie."
 
-#: ../i2prouter:1779
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Reinicie apenas se já estiver iniciado."
 
-#: ../i2prouter:1780
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Consultar o status atual."
 
-#: ../i2prouter:1781
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Instale para iniciar automaticamente quando o sistema iniciar."
 
-#: ../i2prouter:1782
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Desinstalar."
 
-#: ../i2prouter:1783
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Requisitar o histórico Java se iniciado."
 
-#: ../i2prouter:1796
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Favor editar o arquivo i2prouter e configurar a variável RUN_AS_USER"
 
-#: ../i2prouter:1801
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Iniciar I2P como permissões root *não* é recomendado."
 
-#: ../i2prouter:1804
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
 "Para executar como root mesmo assim, editar o i2prouter e configurar a "
diff --git a/installer/resources/locale/po/messages_pt_BR.po b/installer/resources/locale/po/messages_pt_BR.po
index 150a70c83a948ba9bb9fef55a324b1c23ea5dac8..21cdba79e75225dd1c0514fafbd8c289ae2a0fdd 100644
--- a/installer/resources/locale/po/messages_pt_BR.po
+++ b/installer/resources/locale/po/messages_pt_BR.po
@@ -2,198 +2,203 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
+# testsubject67 <deborinha97@hotmail.com>, 2014
 # blueboy, 2013
+# blueboy, 2015
 # blueboy, 2014
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:51+0000\n"
-"PO-Revision-Date: 2014-01-31 16:45+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
+"PO-Revision-Date: 2015-05-07 03:44+0000\n"
 "Last-Translator: blueboy\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/language/pt_BR/)\n"
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/I2P/"
+"language/pt_BR/)\n"
+"Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: pt_BR\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
-msgstr "Falha ao carregar o empacotador."
+msgstr "Falha ao carregar o encapsulador."
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME já está sendo executado."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Executando $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Esperando por $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "AVISO: $APP_LONG_NAME talvez tenha falhado ao inicializar."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Esta ação exige previlégios de root para ser realizada."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Inicializando $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Interrompendo $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME não estava sendo executado."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Impossibilitado de interromper $APP_LONG_NAME."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Aguardando $APP_LONG_NAME terminar"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Falha ao interromper $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
-msgstr ""
+msgstr "$APP_LONG_NAME parado."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
-msgstr ""
+msgstr "Graciosamente parando $APP_LONG_NAME"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
-msgstr ""
+msgstr "$APP_LONG_NAME não está sendo executado"
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
-msgstr ""
+msgstr "$APP_LONG_NAME está sendo executado: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
-msgstr ""
+msgstr "$APP_LONG_NAME está sendo executado: PID:$pid, Envoltório:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
-msgstr ""
+msgstr "O daemon $APP_LONG_NAME já está instalado"
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
-msgstr ""
+msgstr "Instalando o daemon $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "A instalação não possui atualmente suporte para $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
-msgstr ""
+msgstr "Removendo daemon $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
-msgstr ""
+msgstr "O daemon $APP_LONG_NAME não está instalado."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
-msgstr ""
+msgstr "Remoção não suportada por $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Comandos:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
-msgstr ""
+msgstr "Lançar em atual console."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Inicializar executando ao fundo, como um processo daemon."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Pare se estiver sendo executado como um daemon ou em um outro console."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
-msgstr ""
+msgstr "Graciosamente pare, poderá demorar até 11 minutos."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Pare, se estiver sendo executado, e então inicialize."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Reinicialize apenas se já estiver sendo executado."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
-msgstr ""
+msgstr "Duvide do status atual."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
-msgstr ""
+msgstr "Instalar para automaticamente começar com o sistema."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Desinstalar."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
-msgstr ""
+msgstr "Solicitar um despejo de thread se está sendo executado."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Por favor, edite i2prouter e especifique a variável RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Executar o roteador I2P como usuário root *não* é recomendado."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "De qualquer forma, se quiser mesmo executar o roteador como root, edite i2prouter e ponha ALLOW_ROOT=true."
+msgstr ""
+"De qualquer forma, se quiser mesmo executar o roteador como root, edite "
+"i2prouter e ponha ALLOW_ROOT=true."
diff --git a/installer/resources/locale/po/messages_ro.po b/installer/resources/locale/po/messages_ro.po
index 453785f61ce82f02fde71ccf6050b4fff49e731e..56a3a73c907cd3287ba5e35ab7a30add92730fe3 100644
--- a/installer/resources/locale/po/messages_ro.po
+++ b/installer/resources/locale/po/messages_ro.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:03+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-11-11 13:00+0000\n"
 "Last-Translator: polearnik <polearnik@mail.ru>\n"
 "Language-Team: Romanian (http://www.transifex.com/projects/p/I2P/language/"
@@ -20,181 +20,181 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
 "2:1));\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Încărcarea învelișului a eșuat"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME este deja pornit."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Pornirea $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Asteptarea $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "AVERTIZARE: $APP_LONG_NAME posibil nu au reușit să porneasca."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Trebuie să fie root pentru a efectua această acțiune."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Pornirea $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Oprirea $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME  nu este pornit."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Imposibil de a opri $APP_LONG_NAME"
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Asteptarea opririi $APP_LONG_NAME"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Oprirea $APP_LONG_NAME a esuat"
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME este oprit"
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Oprirea corecta a $APP_LONG_NAME"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME nu este pornit."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME este pornit: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr "$APP_LONG_NAME este pornit: PID:$pid,invelis:$STATUS Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "Demonul $APP_LONG_NAME este deja instalat"
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Instalarea demonului $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Instalarea nu este suportata în prezent pentru $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Stergerea demonului $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "Demonul $APP_LONG_NAME  nu este instalat"
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Ștergerea nu este suportata în prezent pentru $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Comenzi:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Pornirea in consola curenta"
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Începe în fundal ca un proces daemon."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Oprirea dacă rulează ca un demon sau într-o altă consolă."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Oprirea corecta poate ocupa peste 11 minute"
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Oprirea dacă rulează și apoi pornește."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Repornirea numai dacă deja rulează."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Interogarea stării curentă."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Instalare pentru pornirea automata la startul sistemului."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Dezinstalează"
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Solicitarea dump-ului firului Java daca este pornit"
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Vă rugăm să editați i2prouter și setați variabila RUN_AS_USER "
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Rularea I2P ca root *nu* este recomandată."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
 "Pentru a rula ca root, oricum, editati i2prouter  și setați ALLOW_ROOT = "
diff --git a/installer/resources/locale/po/messages_ru.po b/installer/resources/locale/po/messages_ru.po
index 90e4e8cb1c5737f6b2f68ced57a557b1898547a2..a46424585c8027a15f762189f87956d713660412 100644
--- a/installer/resources/locale/po/messages_ru.po
+++ b/installer/resources/locale/po/messages_ru.po
@@ -2,7 +2,7 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # varnav, 2013
 # nefelim4ag <nefelim4ag@gmail.com>, 2012
@@ -14,190 +14,195 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:51+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2014-01-11 08:32+0000\n"
 "Last-Translator: sr4d <sr4d@bitmessage.ch>\n"
-"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/language/ru_RU/)\n"
+"Language-Team: Russian (Russia) (http://www.transifex.com/projects/p/I2P/"
+"language/ru_RU/)\n"
+"Language: ru_RU\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: ru_RU\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Не удалось загрузить оболочку"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "Приложение \"$APP_LONG_NAME\" уже запущено."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Приложение \"$APP_LONG_NAME\" запущено"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Ожидание приложения \"$APP_LONG_NAME\""
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "Внимание: возможно, не удалось запустить $APP_LONG_NAME."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Для выполнения этого действия необходимо быть root-пользователем."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Запуск приложения \"$APP_LONG_NAME\""
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Остановка приложения \"$APP_LONG_NAME\""
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "Приложение \"$APP_LONG_NAME\" не было запущено."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Невозможно остановить приложение \"$APP_LONG_NAME\"."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Ожидание завершения работы приложения \"$APP_LONG_NAME\""
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Ошибка остановки $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "Остановленно $APP_LONG_NAME."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "$APP_LONG_NAME мягко останавливается"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME не запущен."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME запущено: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr "$APP_LONG_NAME запущено: PID:$pid, Оболочка:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "Демон $APP_LONG_NAME уже установлен."
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Установка демона $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "В данный момент установка на $DIST_OS не поддерживается"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Удаляется демон: $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "$APP_LONG_NAME демон сейчас не установлен."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Установка не поддерживается для $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Команды:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Запустить в текущей консоли."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Запустить в фоне как демона."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Остановить если демон запущен в другой консоли."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Остановить медленно, может отнять до 11 минут."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Остановить если запущен и запустить."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Перезапустить только если уже запущен."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Текущий статус очереди."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Установка запустится автоматически, во время запуска системы."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Удаление."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Запросить дамп нитей Java, если запущено."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
-msgstr "Пожалуйста, отредактируйте i2prouter и установите переменную RUN_AS_USER"
+msgstr ""
+"Пожалуйста, отредактируйте i2prouter и установите переменную RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Запускать I2P от имени root'а *НЕ* рекомендуется."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "Чтобы всё равно запустить под root'ом, отредактируйте i2prouter и установите ALLOW_ROOT=true."
+msgstr ""
+"Чтобы всё равно запустить под root'ом, отредактируйте i2prouter и установите "
+"ALLOW_ROOT=true."
diff --git a/installer/resources/locale/po/messages_sk.po b/installer/resources/locale/po/messages_sk.po
index 53d6303f167d9b29e2cb8a14671aca610aad8343..4a40f3f54bfc3127b2f9536ca9b416137cee5eb5 100644
--- a/installer/resources/locale/po/messages_sk.po
+++ b/installer/resources/locale/po/messages_sk.po
@@ -2,7 +2,7 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # Krantišek <jaksrn@gmail.com>, 2014
 # Svistwarrior273 <romanbeno273@gmail.com>, 2014
@@ -10,190 +10,194 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-19 23:51+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2014-04-15 15:38+0000\n"
 "Last-Translator: Svistwarrior273 <romanbeno273@gmail.com>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/I2P/language/sk/)\n"
+"Language-Team: Slovak (http://www.transifex.com/projects/p/I2P/language/"
+"sk/)\n"
+"Language: sk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: sk\n"
 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Nepodarilo sa načítať wrapper"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME je už spustená."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Spúšťa sa $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Čaká sa na $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "UPOZORNENIE: $APP_LONG_NAME môže pri štarte zlyhať."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Pre vykonanie tejto akcie musíš byť root."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Spúšťa sa $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Zastavuje sa $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME nebola sputená."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Nemožno zastaviť $APP_LONG_NAME."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Čakám na $APP_LONG_NAME pre ukončenie"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Nepodarilo sa zastaviť $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "Zastavené $APP_LONG_NAME."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Zastavuje sa $APP_LONG_NAME elegantne"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME nie je spustená."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME je spustená: PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
-msgstr "$APP_LONG_NAME je spustená: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
+msgstr ""
+"$APP_LONG_NAME je spustená: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "$APP_LONG_NAME daemon je už nainštalovaný."
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Inštaluje sa $APP_LONG_NAME daemon"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Inštalácia momentálne nie je podporovaná pre $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Odstraňuje sa $APP_LONG_NAME daemon"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "$APP_LONG_NAME daemon momentálne nie je nainštalovaný."
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Odstránenie momentálne nie je podporované pre $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Príkazy:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Spustiť v aktuálnej konzole."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Spustiť na pozadí ako daemon proces."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Zastaviť, ak je spustený ako daemon alebo v inej konzoli."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Zastaviť jemným spôsobom, môže to zabrať až 11 minút."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Zastaviť, ak je spustený a potom znova spustiť."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Reštartovať, iba ak je už spustený."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Poslať požiadavku na zistenie súčasného stavu."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Nainštalovať tak, aby sa spustil automaticky pri boote systému."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Odinštalovať."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Vyžiadať zrušenie vlákna Javy, ak je spustený."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Prosím upravte i2prouter a nastavte premennú RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Spúšťať I2P ako root *nie* je odporúčané."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "Ak ho chcete spustiť ako root aj tak, upravte i2prouter a nastavte ALLOW_ROOT=true."
+msgstr ""
+"Ak ho chcete spustiť ako root aj tak, upravte i2prouter a nastavte "
+"ALLOW_ROOT=true."
diff --git a/installer/resources/locale/po/messages_sv.po b/installer/resources/locale/po/messages_sv.po
index e1bd95f65a1222dd2000d6e5cfec74b3e438bb74..bfbfad9e830fc0fe63749116d22711adb717c880 100644
--- a/installer/resources/locale/po/messages_sv.po
+++ b/installer/resources/locale/po/messages_sv.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-01 20:05+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-09-11 22:20+0000\n"
 "Last-Translator: hottuna <i2p@robertfoss.se>\n"
 "Language-Team: Swedish (Sweden) (http://www.transifex.com/projects/p/I2P/"
@@ -20,181 +20,181 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Misslyckades vid laddning av wrapper"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME körs redan."
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "Kör $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "Väntar på $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "VARNING: $APP_LONG_NAME kan ha misslyckats att starta."
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Handlingen måste göras av root."
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "Startar $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "Stannar $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME kördes inte."
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "Kan inte stoppa $APP_LONG_NAME."
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "Väntar på att $APP_LONG_NAME ska avslutas"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "Misslyckades med att stanna $APP_LONG_NAME."
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "Stannad $APP_LONG_NAME."
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "Stannar $APP_LONG_NAME graciöst"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME körs inte."
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME kör: PID$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr "$APP_LONG_NAME kör:  PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "$APP_LONG_NAME demonen är redan installerad."
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "Installerar $APP_LONG_NAME demon"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "Installation stöds inte för $DIST_OS"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "Tar bort $APP_LONG_NAME demon"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "$APP_LONG_NAME demonen är inte installerad"
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "Borttagning stöds inte för $DIST_OS"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Kommandon:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Kör in nuvarande konsoll."
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Starta i bakgrunden som en demon-process."
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "Stanna om demon körs i annan konsoll."
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Stanna graciöst, kan ta upp till 11 minuter."
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Stanna vid drift och starta sedan."
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Starta om vid drift."
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Fråga efter nuvarande status."
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Installera så att programmet startar vid systemstart."
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Avinstallera."
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Fråga efter en Java thread dump vid drift."
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "Var god ändra i2prouter och set variabeln RUN_AS_USER"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "Att köra I2P som användare root är *inte* rekommenderat."
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr ""
 "För att köra som root oavsett, ändra i2prouter och sätt ALLOW_ROOT=true"
diff --git a/installer/resources/locale/po/messages_tr.po b/installer/resources/locale/po/messages_tr.po
index 38515ae82c96d9cb8d2c0dc60d774f4019b448cd..1e1ec48a739e054dc1e9fb56e38361877902e6fb 100644
--- a/installer/resources/locale/po/messages_tr.po
+++ b/installer/resources/locale/po/messages_tr.po
@@ -2,197 +2,201 @@
 # Copyright (C) 2012 The I2P Project
 # This file is distributed under the same license as the routerconsole package.
 # To contribute translations, see http://www.i2p2.de/newdevelopers
-# 
+#
 # Translators:
 # Kaya Zeren <kayazeren@gmail.com>, 2013
 msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
-"Report-Msgid-Bugs-To: https://trac.i2p2.de/\n"
-"POT-Creation-Date: 2013-07-04 16:43+0000\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-07-11 20:20+0000\n"
 "Last-Translator: Kaya Zeren <kayazeren@gmail.com>\n"
-"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/language/tr_TR/)\n"
+"Language-Team: Turkish (Turkey) (http://www.transifex.com/projects/p/I2P/"
+"language/tr_TR/)\n"
+"Language: tr_TR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: tr_TR\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "Sarıcı yüklenemedi"
 
-#: ../i2prouter:908 ../i2prouter:935 ../i2prouter:1009 ../i2prouter:1037
-#: ../i2prouter:1061
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME zaten çalışıyor."
 
-#: ../i2prouter:919
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME çalışıyor"
 
-#: ../i2prouter:942
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME bekleniyor"
 
-#: ../i2prouter:989
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "DİKKAT: $APP_LONG_NAME başlatılamamış olabilir."
 
-#: ../i2prouter:1003 ../i2prouter:1031 ../i2prouter:1240 ../i2prouter:1529
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "Bu iÅŸlemi ancak root yapabilir."
 
-#: ../i2prouter:1047
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME başlatılıyor"
 
-#: ../i2prouter:1072
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "$APP_LONG_NAME durduruluyor"
 
-#: ../i2prouter:1076 ../i2prouter:1144 ../i2prouter:1697
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME çalışmıyordu."
 
-#: ../i2prouter:1089 ../i2prouter:1097 ../i2prouter:1159 ../i2prouter:1167
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME durdurulamıyor."
 
-#: ../i2prouter:1115
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "$APP_LONG_NAME kapanması bekleniyor"
 
-#: ../i2prouter:1129
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME durdurulamadı."
 
-#: ../i2prouter:1132
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME durduruldu."
 
-#: ../i2prouter:1140
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "$APP_LONG_NAME düzgün şekilde kapatıldı"
 
-#: ../i2prouter:1186
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME çalışmıyor."
 
-#: ../i2prouter:1191
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME çalışıyor: PID:$pid"
 
-#: ../i2prouter:1194
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr "$APP_LONG_NAME çalışıyor: PID:$pid, Sarıcı:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1247 ../i2prouter:1259 ../i2prouter:1278 ../i2prouter:1295
-#: ../i2prouter:1362 ../i2prouter:1382 ../i2prouter:1396 ../i2prouter:1410
-#: ../i2prouter:1438 ../i2prouter:1476 ../i2prouter:1511
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "$APP_LONG_NAME arka plan hizmeti zaten yüklenmiş."
 
-#: ../i2prouter:1250 ../i2prouter:1265 ../i2prouter:1367 ../i2prouter:1399
-#: ../i2prouter:1413 ../i2prouter:1427 ../i2prouter:1441 ../i2prouter:1479
-#: ../i2prouter:1514
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "$APP_LONG_NAME arka plan hizmeti yükleniyor"
 
-#: ../i2prouter:1521
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "$DIST_OS üzerine yükleme desteklenmiyor"
 
-#: ../i2prouter:1537 ../i2prouter:1550 ../i2prouter:1564 ../i2prouter:1573
-#: ../i2prouter:1583 ../i2prouter:1607 ../i2prouter:1620 ../i2prouter:1632
-#: ../i2prouter:1650 ../i2prouter:1663 ../i2prouter:1677
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "$APP_LONG_NAME arka plan hizmeti kaldırılıyor"
 
-#: ../i2prouter:1543 ../i2prouter:1558 ../i2prouter:1567 ../i2prouter:1577
-#: ../i2prouter:1588 ../i2prouter:1601 ../i2prouter:1613 ../i2prouter:1626
-#: ../i2prouter:1644 ../i2prouter:1657 ../i2prouter:1671 ../i2prouter:1682
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "$APP_LONG_NAME arka plan hizmeti yüklü değil."
 
-#: ../i2prouter:1686
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "$DIST_OS üzerinden kaldırma desteklenmiyor"
 
-#: ../i2prouter:1773
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "Komutlar:"
 
-#: ../i2prouter:1774
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "Geçerli konsolda başlatın."
 
-#: ../i2prouter:1775
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "Arka plan hizmeti olarak başlatın."
 
-#: ../i2prouter:1776
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
-msgstr "Arka plan hizmeti olarak ya da başka bir konsolda çalışıyorsa durdurun."
+msgstr ""
+"Arka plan hizmeti olarak ya da başka bir konsolda çalışıyorsa durdurun."
 
-#: ../i2prouter:1777
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "Uygun şekilde kapatın. 11 dakika sürebilir."
 
-#: ../i2prouter:1778
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "Çalışıyorsa durdurun ve başlatın."
 
-#: ../i2prouter:1779
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "Yalnız zaten çalışıyorsa yeniden başlatın."
 
-#: ../i2prouter:1780
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "Geçerli durumu öğrenin."
 
-#: ../i2prouter:1781
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "Sistem açılırken kendiliğinden yüklensin."
 
-#: ../i2prouter:1782
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "Kaldırın."
 
-#: ../i2prouter:1783
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "Çalışıyorsa Java iş parçacığı dökümü isteyin."
 
-#: ../i2prouter:1796
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "i2prouter dosyasını düzenleyin ve RUN_AS_USER değişkenini ayarlayın"
 
-#: ../i2prouter:1801
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "I2P yazılımının root olarak çalıştırmanız *önerilmez*."
 
-#: ../i2prouter:1804
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
-msgstr "Root olarak çalıştırmak için i2prouter dosyasını düzenleyin ve ALLOW_ROOT=true ayarını yapın."
+msgstr ""
+"Root olarak çalıştırmak için i2prouter dosyasını düzenleyin ve "
+"ALLOW_ROOT=true ayarını yapın."
diff --git a/installer/resources/locale/po/messages_zh.po b/installer/resources/locale/po/messages_zh.po
index aeb3ce8594a56eb838c6ece0fb8cc8f47e1acedf..902cec7a7d766889c4fb6bc643a75b2b0a8303a8 100644
--- a/installer/resources/locale/po/messages_zh.po
+++ b/installer/resources/locale/po/messages_zh.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: I2P\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-12-01 19:57+0000\n"
+"POT-Creation-Date: 2015-07-17 01:16+0000\n"
 "PO-Revision-Date: 2013-07-11 07:19+0000\n"
 "Last-Translator: xtoaster <zhazhenzhong@gmail.com>\n"
 "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/I2P/"
@@ -20,180 +20,180 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: ../i2prouter:203
+#: ../i2prouter:221
 msgid "Failed to load the wrapper"
 msgstr "封装程序载入失败"
 
-#: ../i2prouter:925 ../i2prouter:949 ../i2prouter:1023 ../i2prouter:1051
-#: ../i2prouter:1072
+#: ../i2prouter:978 ../i2prouter:1006 ../i2prouter:1080 ../i2prouter:1108
+#: ../i2prouter:1129
 #, sh-format
 msgid "$APP_LONG_NAME is already running."
 msgstr "$APP_LONG_NAME 已运行。"
 
-#: ../i2prouter:936
+#: ../i2prouter:989
 #, sh-format
 msgid "Running $APP_LONG_NAME"
 msgstr "正在运行 $APP_LONG_NAME"
 
-#: ../i2prouter:956
+#: ../i2prouter:1013
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME"
 msgstr "正在等待 $APP_LONG_NAME"
 
-#: ../i2prouter:1003
+#: ../i2prouter:1060
 #, sh-format
 msgid "WARNING: $APP_LONG_NAME may have failed to start."
 msgstr "警告:$APP_LONG_NAME 可能启动失败。"
 
-#: ../i2prouter:1017 ../i2prouter:1045 ../i2prouter:1251 ../i2prouter:1540
+#: ../i2prouter:1074 ../i2prouter:1102 ../i2prouter:1308 ../i2prouter:1597
 msgid "Must be root to perform this action."
 msgstr "root 才能执行此操作。"
 
-#: ../i2prouter:1061
+#: ../i2prouter:1118
 #, sh-format
 msgid "Starting $APP_LONG_NAME"
 msgstr "正在启动 $APP_LONG_NAME"
 
-#: ../i2prouter:1083
+#: ../i2prouter:1140
 #, sh-format
 msgid "Stopping $APP_LONG_NAME"
 msgstr "正在停止 $APP_LONG_NAME"
 
-#: ../i2prouter:1087 ../i2prouter:1155 ../i2prouter:1708
+#: ../i2prouter:1144 ../i2prouter:1212 ../i2prouter:1765
 #, sh-format
 msgid "$APP_LONG_NAME was not running."
 msgstr "$APP_LONG_NAME 未运行"
 
-#: ../i2prouter:1100 ../i2prouter:1108 ../i2prouter:1170 ../i2prouter:1178
+#: ../i2prouter:1157 ../i2prouter:1165 ../i2prouter:1227 ../i2prouter:1235
 #, sh-format
 msgid "Unable to stop $APP_LONG_NAME."
 msgstr "无法停止 $APP_LONG_NAME"
 
-#: ../i2prouter:1126
+#: ../i2prouter:1183
 #, sh-format
 msgid "Waiting for $APP_LONG_NAME to exit"
 msgstr "正在等待 $APP_LONG_NAME 退出"
 
-#: ../i2prouter:1140
+#: ../i2prouter:1197
 #, sh-format
 msgid "Failed to stop $APP_LONG_NAME."
 msgstr "无法停止 $APP_LONG_NAME。"
 
-#: ../i2prouter:1143
+#: ../i2prouter:1200
 #, sh-format
 msgid "Stopped $APP_LONG_NAME."
 msgstr "$APP_LONG_NAME 已停止。"
 
-#: ../i2prouter:1151
+#: ../i2prouter:1208
 #, sh-format
 msgid "Stopping $APP_LONG_NAME gracefully"
 msgstr "正在等待 $APP_LONG_NAME 自然关闭"
 
-#: ../i2prouter:1197
+#: ../i2prouter:1254
 #, sh-format
 msgid "$APP_LONG_NAME is not running."
 msgstr "$APP_LONG_NAME 未运行"
 
-#: ../i2prouter:1202
+#: ../i2prouter:1259
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid"
 msgstr "$APP_LONG_NAME 已运行:PID:$pid"
 
-#: ../i2prouter:1205
+#: ../i2prouter:1262
 #, sh-format
 msgid "$APP_LONG_NAME is running: PID:$pid, Wrapper:$STATUS, Java:$JAVASTATUS"
 msgstr "$APP_LONG_NAME 已运行:PID:$pid, 封装:$STATUS, Java:$JAVASTATUS"
 
-#: ../i2prouter:1258 ../i2prouter:1270 ../i2prouter:1289 ../i2prouter:1306
-#: ../i2prouter:1373 ../i2prouter:1393 ../i2prouter:1407 ../i2prouter:1421
-#: ../i2prouter:1449 ../i2prouter:1487 ../i2prouter:1522
+#: ../i2prouter:1315 ../i2prouter:1327 ../i2prouter:1346 ../i2prouter:1363
+#: ../i2prouter:1430 ../i2prouter:1450 ../i2prouter:1464 ../i2prouter:1478
+#: ../i2prouter:1506 ../i2prouter:1544 ../i2prouter:1579
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is already installed."
 msgstr "后台服务 $APP_LONG_NAME 已运行。"
 
-#: ../i2prouter:1261 ../i2prouter:1276 ../i2prouter:1378 ../i2prouter:1410
-#: ../i2prouter:1424 ../i2prouter:1438 ../i2prouter:1452 ../i2prouter:1490
-#: ../i2prouter:1525
+#: ../i2prouter:1318 ../i2prouter:1333 ../i2prouter:1435 ../i2prouter:1467
+#: ../i2prouter:1481 ../i2prouter:1495 ../i2prouter:1509 ../i2prouter:1547
+#: ../i2prouter:1582
 #, sh-format
 msgid "Installing the $APP_LONG_NAME daemon"
 msgstr "正在安装后台服务 $APP_LONG_NAME"
 
-#: ../i2prouter:1532
+#: ../i2prouter:1589
 #, sh-format
 msgid "Install not currently supported for $DIST_OS"
 msgstr "暂不支持 $DIST_OS 平台上的安装"
 
-#: ../i2prouter:1548 ../i2prouter:1561 ../i2prouter:1575 ../i2prouter:1584
-#: ../i2prouter:1594 ../i2prouter:1618 ../i2prouter:1631 ../i2prouter:1643
-#: ../i2prouter:1661 ../i2prouter:1674 ../i2prouter:1688
+#: ../i2prouter:1605 ../i2prouter:1618 ../i2prouter:1632 ../i2prouter:1641
+#: ../i2prouter:1651 ../i2prouter:1675 ../i2prouter:1688 ../i2prouter:1700
+#: ../i2prouter:1718 ../i2prouter:1731 ../i2prouter:1745
 #, sh-format
 msgid "Removing $APP_LONG_NAME daemon"
 msgstr "正在删除后台服务 $APP_LONG_NAME"
 
-#: ../i2prouter:1554 ../i2prouter:1569 ../i2prouter:1578 ../i2prouter:1588
-#: ../i2prouter:1599 ../i2prouter:1612 ../i2prouter:1624 ../i2prouter:1637
-#: ../i2prouter:1655 ../i2prouter:1668 ../i2prouter:1682 ../i2prouter:1693
+#: ../i2prouter:1611 ../i2prouter:1626 ../i2prouter:1635 ../i2prouter:1645
+#: ../i2prouter:1656 ../i2prouter:1669 ../i2prouter:1681 ../i2prouter:1694
+#: ../i2prouter:1712 ../i2prouter:1725 ../i2prouter:1739 ../i2prouter:1750
 #, sh-format
 msgid "The $APP_LONG_NAME daemon is not currently installed."
 msgstr "后台服务 $APP_LONG_NAME 未安装。"
 
-#: ../i2prouter:1697
+#: ../i2prouter:1754
 #, sh-format
 msgid "Remove not currently supported for $DIST_OS"
 msgstr "暂不支持 $DIST_OS 平台上的删除"
 
-#: ../i2prouter:1784
+#: ../i2prouter:1841
 msgid "Commands:"
 msgstr "命令:"
 
-#: ../i2prouter:1785
+#: ../i2prouter:1842
 msgid "Launch in the current console."
 msgstr "从当前控制台中启动。"
 
-#: ../i2prouter:1786
+#: ../i2prouter:1843
 msgid "Start in the background as a daemon process."
 msgstr "作为服务进程从后台启动。"
 
-#: ../i2prouter:1787
+#: ../i2prouter:1844
 msgid "Stop if running as a daemon or in another console."
 msgstr "关闭作为服务进程或从其他控制台启动的I2P。"
 
-#: ../i2prouter:1788
+#: ../i2prouter:1845
 msgid "Stop gracefully, may take up to 11 minutes."
 msgstr "自然关闭,可以需要最多11分钟。"
 
-#: ../i2prouter:1789
+#: ../i2prouter:1846
 msgid "Stop if running and then start."
 msgstr "先终止(如果运行)再启动。"
 
-#: ../i2prouter:1790
+#: ../i2prouter:1847
 msgid "Restart only if already running."
 msgstr "重启(仅在已运行时)。"
 
-#: ../i2prouter:1791
+#: ../i2prouter:1848
 msgid "Query the current status."
 msgstr "查询当前状态。"
 
-#: ../i2prouter:1792
+#: ../i2prouter:1849
 msgid "Install to start automatically when system boots."
 msgstr "安装为随系统启动。"
 
-#: ../i2prouter:1793
+#: ../i2prouter:1850
 msgid "Uninstall."
 msgstr "卸载。"
 
-#: ../i2prouter:1794
+#: ../i2prouter:1851
 msgid "Request a Java thread dump if running."
 msgstr "请求Java转储(如果在运行)。"
 
-#: ../i2prouter:1807
+#: ../i2prouter:1864
 msgid "Please edit i2prouter and set the variable RUN_AS_USER"
 msgstr "请编辑 i2prouter 设置 RUN_AS_USER 变量"
 
-#: ../i2prouter:1812
+#: ../i2prouter:1869
 msgid "Running I2P as the root user is *not* recommended."
 msgstr "推荐 *不要* 以 root 身份运行 I2P 。"
 
-#: ../i2prouter:1815
+#: ../i2prouter:1872
 msgid "To run as root anyway, edit i2prouter and set ALLOW_ROOT=true."
 msgstr "要以root运行,请编辑 i2prouter 并设置 ALLOW_ROOT=true。"
diff --git a/installer/resources/man/eepget.1 b/installer/resources/man/eepget.1
index 8e4a4e3c45b66356dfd877ebf15e9ac582e4bed4..c24e0fe0cedece2b2c2908cf978c98cef3026d8c 100644
--- a/installer/resources/man/eepget.1
+++ b/installer/resources/man/eepget.1
@@ -1,4 +1,4 @@
-.TH EEEPGET 1 "February 5, 2014" "" "Eepget - I2P Downloader"
+.TH EEEPGET 1 "September 18, 2015" "" "Eepget - I2P Downloader"
 
 .SH NAME
 Eepget \- I2P downloader
@@ -15,7 +15,7 @@ regular Internet are supported.
 .P
 Eepget is able to cope with slow or unstable network connections; if a download
 is not successful because of a network problem, it will keep retrying until the
-whole file has been retrieved (by default up to three times).  If supported by
+whole file has been retrieved (if the -n option is set).  If supported by
 the remote server, eepget will instruct the server to continue the download
 from the point of interruption.
 
@@ -53,7 +53,7 @@ Controls the progress display. \fB\ markSize \fP is the number of bytes one '#'
 .B
 \fB\-n\fR retries
 .TP
-Specify the number of times to retry downloading if the download isn't successful. If this option is not specified, eepget will retry downloading the file 5 times.
+Specify the number of times to retry downloading if the download isn't successful. If this option is not specified, eepget will not retry.
 .TP
 
 .B
diff --git a/installer/resources/themes/console/images/exchanged.png b/installer/resources/themes/console/images/exchanged.png
new file mode 100644
index 0000000000000000000000000000000000000000..0e72a2c8eb4c029882416035b86e87b0b3cc17eb
Binary files /dev/null and b/installer/resources/themes/console/images/exchanged.png differ
diff --git a/installer/resources/themes/console/images/i2pwiki_logo.png b/installer/resources/themes/console/images/i2pwiki_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..c08805eada7af7796a740385b4587d6618daecca
Binary files /dev/null and b/installer/resources/themes/console/images/i2pwiki_logo.png differ
diff --git a/installer/resources/themes/console/images/lenta_main_logo.png b/installer/resources/themes/console/images/lenta_main_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..c43be5f4ae9f3ab2d7aa9590d6ca475ae7bf648d
Binary files /dev/null and b/installer/resources/themes/console/images/lenta_main_logo.png differ
diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css
index 62b7969f30d68bbf6c32eba85fe8f0bb42a050dd..24e34751ecbf73a211a9f794589135edbcb2e315 100644
--- a/installer/resources/themes/console/light/console.css
+++ b/installer/resources/themes/console/light/console.css
@@ -250,7 +250,12 @@ div.newsheadings {
 
 div.newsheadings li {
      list-style: none outside url('images/newsbullet_mini.png');
-     margin: 0 -4px 2px 8px;
+     margin: 4px -4px 2px 10px;
+     line-height: 120%;
+}
+
+div.newsheadings li:first-child {
+     margin-top: 0;
 }
 
 div.tunnels {
diff --git a/installer/resources/themes/snark/ubergine/snark.css b/installer/resources/themes/snark/ubergine/snark.css
index f2e09b4f94cb3aecc395c33c8879e767e9c3983b..facb2fae5cd9dc37ecf669be745f7e05eb832dc0 100644
--- a/installer/resources/themes/snark/ubergine/snark.css
+++ b/installer/resources/themes/snark/ubergine/snark.css
@@ -656,12 +656,6 @@ input.add {
      min-height: 22px;
 }
 
-input.create {
-     background: #989 url('images/create.png') no-repeat 2px center;
-     padding: 2px 3px 2px 20px !important;
-     min-height: 22px;
-}
-
 input.cancel {
      background: #989 url('../../console/images/cancel.png') no-repeat 2px center;
      padding: 2px 3px 2px 20px !important;
@@ -686,6 +680,18 @@ input.reload {
      min-height: 22px;
 }
 
+input.starttorrent {
+     background: #989 url('images/start.png') no-repeat 2px center;
+     padding: 2px 3px 2px 20px !important;
+     min-height: 22px;
+}
+
+input.stoptorrent {
+     background: #989 url('images/stop.png') no-repeat 2px center;
+     padding: 2px 3px 2px 20px !important;
+     min-height: 22px;
+}
+
 select {
      background: #333;
      background: url('/themes/snark/ubergine/images/graytile.png') !important;
diff --git a/installer/resources/themes/snark/vanilla/snark.css b/installer/resources/themes/snark/vanilla/snark.css
index ddbcd8e8c5e72897488b386f337bf7b2ac00efa8..b5ab1155b3ae2953942472170d0de4c24b5f2c76 100644
--- a/installer/resources/themes/snark/vanilla/snark.css
+++ b/installer/resources/themes/snark/vanilla/snark.css
@@ -694,6 +694,18 @@ input.reload {
      min-height: 22px;
 }
 
+input.starttorrent {
+     background: #f3efc7 url('images/start.png') no-repeat 2px center;
+     padding: 2px 3px 2px 20px !important;
+     min-height: 22px;
+}
+
+input.stoptorrent {
+     background: #f3efc7 url('images/stop.png') no-repeat 2px center;
+     padding: 2px 3px 2px 20px !important;
+     min-height: 22px;
+}
+
 select {
      background: #fff;
 /*     background: url('/themes/snark/ubergine/images/graytile.png') !important;*/
diff --git a/router/java/src/net/i2p/data/i2np/DataMessage.java b/router/java/src/net/i2p/data/i2np/DataMessage.java
index c77ec5df0f55f10b3583274b66aa4eb8f1af0f11..f1505397ea01f3ee8682abce1670173f4c294a5b 100644
--- a/router/java/src/net/i2p/data/i2np/DataMessage.java
+++ b/router/java/src/net/i2p/data/i2np/DataMessage.java
@@ -49,7 +49,7 @@ public class DataMessage extends FastI2NPMessageImpl {
         long size = DataHelper.fromLong(data, curIndex, 4);
         curIndex += 4;
         if (size > MAX_SIZE)
-            throw new I2NPMessageException("wtf, size=" + size);
+            throw new I2NPMessageException("too large msg, size=" + size);
         _data = new byte[(int)size];
         System.arraycopy(data, curIndex, _data, 0, (int)size);
     }
diff --git a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
index e4e32377ce9799e60aa5ccd4870de9f5ae6e1b6d..9669d6f91fa5f176dffaf2049bfb9a56ac1345a6 100644
--- a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
+++ b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
@@ -357,8 +357,8 @@ public class DeliveryInstructions extends DataStructureImpl {
         int offset = 0;
         offset += getAdditionalInfo(rv, offset);
         if (offset != additionalSize)
-            //_log.log(Log.CRIT, "wtf, additionalSize = " + additionalSize + ", offset = " + offset);
-            throw new IllegalStateException("wtf, additionalSize = " + additionalSize + ", offset = " + offset);
+            //_log.log(Log.CRIT, "size mismatch, additionalSize = " + additionalSize + ", offset = " + offset);
+            throw new IllegalStateException("size mismatch, additionalSize = " + additionalSize + ", offset = " + offset);
         return rv;
     }
 
diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageReader.java b/router/java/src/net/i2p/data/i2np/I2NPMessageReader.java
index 1acd53e59fdd853cc15d81265a58f503ea2c13f5..f253cfed22a46660292a60fa43cdd47685bd011b 100644
--- a/router/java/src/net/i2p/data/i2np/I2NPMessageReader.java
+++ b/router/java/src/net/i2p/data/i2np/I2NPMessageReader.java
@@ -164,7 +164,7 @@ public class I2NPMessageReader {
                         _listener.disconnected(I2NPMessageReader.this);
                         cancelRunner();
                     } catch (Exception e) {
-                        _log.log(Log.CRIT, "wtf, error reading", e);
+                        _log.log(Log.CRIT, "error reading msg!", e);
                         _listener.readError(I2NPMessageReader.this, e);
                         _listener.disconnected(I2NPMessageReader.this);
                         cancelRunner();
diff --git a/router/java/src/net/i2p/data/i2np/TunnelGatewayMessage.java b/router/java/src/net/i2p/data/i2np/TunnelGatewayMessage.java
index b25e3fccc21611e8ec2b6b603ca92b1ea60f5924..d908ca4d1962f9112ae613773177f956866a2941 100644
--- a/router/java/src/net/i2p/data/i2np/TunnelGatewayMessage.java
+++ b/router/java/src/net/i2p/data/i2np/TunnelGatewayMessage.java
@@ -62,7 +62,7 @@ public class TunnelGatewayMessage extends FastI2NPMessageImpl {
         if (_msg != null)
             throw new IllegalStateException();
         if (msg == null)
-            throw new IllegalArgumentException("wtf, dont set me to null");
+            throw new IllegalArgumentException("dont set me to null!");
         _msg = msg; 
     }
     
@@ -137,7 +137,7 @@ public class TunnelGatewayMessage extends FastI2NPMessageImpl {
         //handler.readMessage(data, curIndex);
         //_msg = handler.lastRead();
         //if (_msg == null)
-        //    throw new I2NPMessageException("wtf, message read has no payload?");
+        //    throw new I2NPMessageException("impossible? message read has no payload?!");
 
         // NEW WAY save lots of effort at the IBGW by reading as an UnknownI2NPMessage instead
         // This will save a lot of object churn and processing,
diff --git a/router/java/src/net/i2p/data/i2np/UnknownI2NPMessage.java b/router/java/src/net/i2p/data/i2np/UnknownI2NPMessage.java
index 791f8126ae0cd361b1df418bfd30eb11c05b0639..72bcc081e81102321a821eea8c6862280bdb76c7 100644
--- a/router/java/src/net/i2p/data/i2np/UnknownI2NPMessage.java
+++ b/router/java/src/net/i2p/data/i2np/UnknownI2NPMessage.java
@@ -48,7 +48,7 @@ public class UnknownI2NPMessage extends FastI2NPMessageImpl {
             throw new IllegalStateException();
         if (type != _type) throw new I2NPMessageException("Message type is incorrect for this message");
         if (dataSize > MAX_SIZE)
-            throw new I2NPMessageException("wtf, size=" + dataSize);
+            throw new I2NPMessageException("size mismatch, too big, size=" + dataSize);
         _data = new byte[dataSize];
         System.arraycopy(data, offset, _data, 0, dataSize);
     }
diff --git a/router/java/src/net/i2p/data/router/RouterAddress.java b/router/java/src/net/i2p/data/router/RouterAddress.java
index ca0f94d08abb79eddaa71201f38210460268bf4c..e7cd0d6842ab6f5ec5ef08c33463636eae16efff 100644
--- a/router/java/src/net/i2p/data/router/RouterAddress.java
+++ b/router/java/src/net/i2p/data/router/RouterAddress.java
@@ -17,6 +17,8 @@ import java.util.Date;
 import java.util.Map;
 import java.util.Properties;
 
+import org.apache.http.conn.util.InetAddressUtils;
+
 import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
 import net.i2p.data.DataStructureImpl;
@@ -219,8 +221,8 @@ public class RouterAddress extends DataStructureImpl {
         if (host != null) {
             rv = Addresses.getIP(host);
             if (rv != null &&
-                (host.replaceAll("[0-9\\.]", "").length() == 0 ||
-                 host.replaceAll("[0-9a-fA-F:]", "").length() == 0)) {
+                (InetAddressUtils.isIPv4Address(host) ||
+                 InetAddressUtils.isIPv6Address(host))) {
                 _ip = rv;
             }
         }
diff --git a/router/java/src/net/i2p/data/router/RouterInfo.java b/router/java/src/net/i2p/data/router/RouterInfo.java
index cb977a8648b2ea6e39bd73634b80106168e56002..0d60c6dc03eb47771d62f02198f79ef6701d1b37 100644
--- a/router/java/src/net/i2p/data/router/RouterInfo.java
+++ b/router/java/src/net/i2p/data/router/RouterInfo.java
@@ -308,7 +308,7 @@ public class RouterInfo extends DatabaseEntry {
      */
     protected byte[] getBytes() throws DataFormatException {
         if (_byteified != null) return _byteified;
-        if (_identity == null) throw new DataFormatException("Router identity isn't set? wtf!");
+        if (_identity == null) throw new DataFormatException("Router identity isn't set?!");
 
         //long before = Clock.getInstance().now();
         ByteArrayOutputStream out = new ByteArrayOutputStream(2*1024);
@@ -339,7 +339,7 @@ public class RouterInfo extends DatabaseEntry {
                     // WARNING this sort algorithm cannot be changed, as it must be consistent
                     // network-wide. The signature is not checked at readin time, but only
                     // later, and the hashes are stored in a Set, not a List.
-                    peers = (Collection<Hash>) SortHelper.sortStructures(peers);
+                    peers = SortHelper.sortStructures(peers);
                 for (Hash peerHash : peers) {
                     peerHash.writeBytes(out);
                 }
diff --git a/router/java/src/net/i2p/data/router/RouterKeyGenerator.java b/router/java/src/net/i2p/data/router/RouterKeyGenerator.java
index 69e6aaceca317488cce3034b2d7e705dc5d7740a..02e49ede5aea720d8fffd0759f1272bdbe255222 100644
--- a/router/java/src/net/i2p/data/router/RouterKeyGenerator.java
+++ b/router/java/src/net/i2p/data/router/RouterKeyGenerator.java
@@ -52,6 +52,8 @@ public class RouterKeyGenerator extends RoutingKeyGenerator {
     public RouterKeyGenerator(I2PAppContext context) {
         _log = context.logManager().getLog(RoutingKeyGenerator.class);
         _context = context;
+        // make sure GMT is set, azi2phelper Vuze plugin is disabling static JVM TZ setting in Router.java
+        _fmt.setCalendar(_cal);
         // ensure non-null mod data
         generateDateBasedModData();
     }
@@ -61,14 +63,10 @@ public class RouterKeyGenerator extends RoutingKeyGenerator {
     private volatile long _nextMidnight;
     private volatile long _lastChanged;
 
-    private final static Calendar _cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
+    private final Calendar _cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT"));
     private static final String FORMAT = "yyyyMMdd";
     private static final int LENGTH = FORMAT.length();
-    private final static SimpleDateFormat _fmt = new SimpleDateFormat(FORMAT, Locale.US);
-    static {
-        // make sure GMT is set, azi2phelper Vuze plugin is disabling static JVM TZ setting in Router.java
-        _fmt.setCalendar(_cal);
-    }
+    private final SimpleDateFormat _fmt = new SimpleDateFormat(FORMAT, Locale.US);
 
     /**
      *  The current (today's) mod data.
diff --git a/router/java/src/net/i2p/data/router/SortHelper.java b/router/java/src/net/i2p/data/router/SortHelper.java
index 0c40fa3edab3716f53e4e19797c411e96ab82ff5..c7cea3c6f438d9621ed20c2c61e34ee6b284bded 100644
--- a/router/java/src/net/i2p/data/router/SortHelper.java
+++ b/router/java/src/net/i2p/data/router/SortHelper.java
@@ -31,12 +31,11 @@ class SortHelper {
      *  WARNING - this sort order must be consistent network-wide, so while the order is arbitrary,
      *  it cannot be changed.
      *  Why? Just because it has to be consistent so signing will work.
-     *  How to spec as returning the same type as the param?
      *  DEPRECATED - Only used by RouterInfo.
      *
      *  @return a new list
      */
-    public static List<? extends DataStructure> sortStructures(Collection<? extends DataStructure> dataStructures) {
+    public static <T extends DataStructure> List<T> sortStructures(Collection<T> dataStructures) {
         if (dataStructures == null) return Collections.emptyList();
 
         // This used to use Hash.toString(), which is insane, since a change to toString()
@@ -52,7 +51,7 @@ class SortHelper {
         //for (DataStructure struct : tm.values()) {
         //    rv.add(struct);
         //}
-        ArrayList<DataStructure> rv = new ArrayList<DataStructure>(dataStructures);
+        ArrayList<T> rv = new ArrayList<T>(dataStructures);
         sortStructureList(rv);
         return rv;
     }
diff --git a/router/java/src/net/i2p/router/Banlist.java b/router/java/src/net/i2p/router/Banlist.java
index 41fb9612d748bd808bdaa55eb756c4861907d0f0..984be5ec6960683c2856e071f17897372414fbf8 100644
--- a/router/java/src/net/i2p/router/Banlist.java
+++ b/router/java/src/net/i2p/router/Banlist.java
@@ -162,11 +162,11 @@ public class Banlist {
      */
     public boolean banlistRouter(Hash peer, String reason, String reasonCode, String transport, long expireOn) {
         if (peer == null) {
-            _log.error("wtf, why did we try to banlist null?", new Exception("banfaced"));
+            _log.error("why did we try to banlist null?", new Exception("banfaced"));
             return false;
         }
         if (peer.equals(_context.routerHash())) {
-            _log.error("wtf, why did we try to banlist ourselves?", new Exception("banfaced"));
+            _log.error("why did we try to banlist ourselves?", new Exception("banfaced"));
             return false;
         }
         boolean wasAlready = false;
diff --git a/router/java/src/net/i2p/router/Blocklist.java b/router/java/src/net/i2p/router/Blocklist.java
index 4e931f6656374fd9232e54f7a9bfe57bb31a2426..3ad8e7387507513ea489f484f8d5d2d3595cc5b1 100644
--- a/router/java/src/net/i2p/router/Blocklist.java
+++ b/router/java/src/net/i2p/router/Blocklist.java
@@ -917,7 +917,7 @@ public class Blocklist {
         singles.addAll(_singleIPBlocklist);
         if (!(singles.isEmpty() && _singleIPv6Blocklist.isEmpty())) {
             out.write("<table><tr><th align=\"center\" colspan=\"2\"><b>");
-            out.write(_("IPs Banned Until Restart"));
+            out.write(_t("IPs Banned Until Restart"));
             out.write("</b></td></tr>");
             // first 0 - 127
             for (Integer ii : singles) {
@@ -954,11 +954,11 @@ public class Blocklist {
         }
         if (_blocklistSize > 0) {
             out.write("<table><tr><th align=\"center\" colspan=\"2\"><b>");
-            out.write(_("IPs Permanently Banned"));
+            out.write(_t("IPs Permanently Banned"));
             out.write("</b></th></tr><tr><td align=\"center\" width=\"50%\"><b>");
-            out.write(_("From"));
+            out.write(_t("From"));
             out.write("</b></td><td align=\"center\" width=\"50%\"><b>");
-            out.write(_("To"));
+            out.write(_t("To"));
             out.write("</b></td></tr>");
             int max = Math.min(_blocklistSize, MAX_DISPLAY);
             int displayed = 0;
@@ -994,7 +994,7 @@ public class Blocklist {
             out.write("</table>");
         } else {
             out.write("<br><i>");
-            out.write(_("none"));
+            out.write(_t("none"));
             out.write("</i>");
         }
         out.flush();
@@ -1030,7 +1030,7 @@ public class Blocklist {
     private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
 
     /** translate */
-    private String _(String key) {
+    private String _t(String key) {
         return Translate.getString(key, _context, BUNDLE_NAME);
     }
 
diff --git a/router/java/src/net/i2p/router/CommSystemFacade.java b/router/java/src/net/i2p/router/CommSystemFacade.java
index e9c050762fea74a5a99fc6bfc46f5c9419af2624..2b96255b96ae1972789a627651403e691e5733c9 100644
--- a/router/java/src/net/i2p/router/CommSystemFacade.java
+++ b/router/java/src/net/i2p/router/CommSystemFacade.java
@@ -48,7 +48,7 @@ public abstract class CommSystemFacade implements Service {
     public boolean haveInboundCapacity(int pct) { return true; }
     public boolean haveOutboundCapacity(int pct) { return true; }
     public boolean haveHighOutboundCapacity() { return true; }
-    public List getMostRecentErrorMessages() { return Collections.emptyList(); }
+    public List<String> getMostRecentErrorMessages() { return Collections.emptyList(); }
     
     /**
      * Median clock skew of connected peers in seconds, or null if we cannot answer.
diff --git a/router/java/src/net/i2p/router/JobQueue.java b/router/java/src/net/i2p/router/JobQueue.java
index bebd9c6e12de6f1bd457bfd3387b861c811059df..141f348bf04d459762b5d849c9a5bb48e1a4d60b 100644
--- a/router/java/src/net/i2p/router/JobQueue.java
+++ b/router/java/src/net/i2p/router/JobQueue.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import net.i2p.data.DataHelper;
 import net.i2p.router.message.HandleGarlicMessageJob;
 import net.i2p.router.networkdb.kademlia.HandleFloodfillDatabaseLookupMessageJob;
+import net.i2p.router.RouterClock;
 import net.i2p.util.Clock;
 import net.i2p.util.I2PThread;
 import net.i2p.util.Log;
@@ -340,7 +341,7 @@ public class JobQueue {
     public void startup() {
         _alive = true;
         I2PThread pumperThread = new I2PThread(_pumper, "Job Queue Pumper", true);
-        //pumperThread.setPriority(I2PThread.NORM_PRIORITY+1);
+        pumperThread.setPriority(Thread.NORM_PRIORITY + 1);
         pumperThread.start();
     }
 
@@ -516,10 +517,12 @@ public class JobQueue {
      * max number of runners.
      *
      */
-    private final class QueuePumper implements Runnable, Clock.ClockUpdateListener {
+    private final class QueuePumper implements Runnable, Clock.ClockUpdateListener, RouterClock.ClockShiftListener {
         public QueuePumper() { 
             _context.clock().addUpdateListener(this);
+            ((RouterClock) _context.clock()).addShiftListener(this);
         }
+
         public void run() {
             try {
                 while (_alive) {
@@ -589,9 +592,11 @@ public class JobQueue {
                     } catch (InterruptedException ie) {}
                 } // while (_alive)
             } catch (Throwable t) {
-                _context.clock().removeUpdateListener(this);
                 if (_log.shouldLog(Log.ERROR))
-                    _log.error("wtf, pumper killed", t);
+                    _log.error("pumper killed?!", t);
+            } finally {
+                _context.clock().removeUpdateListener(this);
+                ((RouterClock) _context.clock()).removeShiftListener(this);
             }
         }
 
@@ -602,6 +607,22 @@ public class JobQueue {
             }
         }
 
+        /**
+         *  Clock shift listener.
+         *  Only adjust timings for negative shifts.
+         *  For positive shifts, just wake up the pumper.
+         *  @since 0.9.23
+         */
+        public void clockShift(long delta) {
+            if (delta < 0) {
+                offsetChanged(delta);
+            } else {
+                synchronized (_jobLock) {
+                    _jobLock.notifyAll();
+                }
+            }
+        }
+
     }
     
     /**
diff --git a/router/java/src/net/i2p/router/JobQueueRunner.java b/router/java/src/net/i2p/router/JobQueueRunner.java
index a3ed2da14c45712aa14216b350312fe9657a3059..ecc4cd954a7937d2372a1cf2dc0ee800184d02d0 100644
--- a/router/java/src/net/i2p/router/JobQueueRunner.java
+++ b/router/java/src/net/i2p/router/JobQueueRunner.java
@@ -21,6 +21,7 @@ class JobQueueRunner extends I2PThread {
         _id = id;
         _keepRunning = true;
         _log = _context.logManager().getLog(JobQueueRunner.class);
+        setPriority(NORM_PRIORITY + 1);
         // all createRateStat in JobQueue
         //_state = 1;
     }
@@ -117,7 +118,7 @@ class JobQueueRunner extends I2PThread {
                 //if ( (jobNum % 10) == 0)
                 //    System.gc();
             } catch (Throwable t) {
-                _log.log(Log.CRIT, "WTF, error running?", t);
+                _log.log(Log.CRIT, "error running?", t);
             }
         }
         //_state = 16;
diff --git a/router/java/src/net/i2p/router/JobTiming.java b/router/java/src/net/i2p/router/JobTiming.java
index 98d8e67c7fced05cb5018d89b7c350fc1d99e1f3..f934f1556d4c595893f68e40432bded72245a6ce 100644
--- a/router/java/src/net/i2p/router/JobTiming.java
+++ b/router/java/src/net/i2p/router/JobTiming.java
@@ -8,6 +8,7 @@ package net.i2p.router;
  *
  */
 
+import net.i2p.router.RouterClock;
 import net.i2p.util.Clock;
 
 /**
@@ -15,7 +16,7 @@ import net.i2p.util.Clock;
  *
  * For use by the router only. Not to be used by applications or plugins.
  */
-public class JobTiming implements Clock.ClockUpdateListener {
+public class JobTiming implements Clock.ClockUpdateListener, RouterClock.ClockShiftListener {
     private volatile long _start;
     private volatile long _actualStart;
     private volatile long _actualEnd;
@@ -81,4 +82,8 @@ public class JobTiming implements Clock.ClockUpdateListener {
         if (_actualEnd != 0)
             _actualEnd += delta;
     }
+
+    public void clockShift(long delta) {
+        offsetChanged(delta);
+    }
 }
diff --git a/router/java/src/net/i2p/router/KeyManager.java b/router/java/src/net/i2p/router/KeyManager.java
index 2807e8fe7fc37683729d3db8179b2241a04fc4e2..3317b92903180a2a20356c426ae1396200869cf8 100644
--- a/router/java/src/net/i2p/router/KeyManager.java
+++ b/router/java/src/net/i2p/router/KeyManager.java
@@ -60,6 +60,11 @@ public class KeyManager {
         _leaseSetKeys = new ConcurrentHashMap<Hash, LeaseSetKeys>();
     }
     
+    /**
+     *  Read keys in from disk, blocking
+     *
+     *  @deprecated we never read keys in anymore
+     */
     public void startup() {
         // run inline so keys are loaded immediately
         (new SynchronizeKeysJob()).runJob();
@@ -79,17 +84,29 @@ public class KeyManager {
         queueWrite();
     }
 
-    /** router */
-    public PrivateKey getPrivateKey() { return _privateKey; }
+    /**
+     * Router key
+     * @return will be null on error or before startup() or setKeys() is called
+     */
+    public synchronized PrivateKey getPrivateKey() { return _privateKey; }
 
-    /** router */
-    public PublicKey getPublicKey() { return _publicKey; }
+    /**
+     * Router key
+     * @return will be null on error or before startup() or setKeys() is called
+     */
+    public synchronized PublicKey getPublicKey() { return _publicKey; }
 
-    /** router */
-    public SigningPrivateKey getSigningPrivateKey() { return _signingPrivateKey; }
+    /**
+     * Router key
+     * @return will be null on error or before startup() or setKeys() is called
+     */
+    public synchronized SigningPrivateKey getSigningPrivateKey() { return _signingPrivateKey; }
 
-    /** router */
-    public SigningPublicKey getSigningPublicKey() { return _signingPublicKey; }
+    /**
+     * Router key
+     * @return will be null on error or before startup() or setKeys() is called
+     */
+    public synchronized SigningPublicKey getSigningPublicKey() { return _signingPublicKey; }
     
     /** client */
     public void registerKeys(Destination dest, SigningPrivateKey leaseRevocationPrivateKey, PrivateKey endpointDecryptionKey) {
@@ -216,6 +233,11 @@ public class KeyManager {
                 _signingPublicKey  = (SigningPublicKey) readin;
         }
 
+        /**
+         *  @param param non-null, filled-in if exists is true, or without data if exists is false
+         *  @param exists write to file if true, read from file if false
+         *  @return structure or null on read error
+         */
         private DataStructure syncKey(File keyFile, DataStructure structure, boolean exists) {
             OutputStream out = null;
             InputStream in = null;
diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java
index 68621597e741205c20279a281873f89e677d088f..426da4a757cc9796c47ab2a1d439bfa2292e7f28 100644
--- a/router/java/src/net/i2p/router/Router.java
+++ b/router/java/src/net/i2p/router/Router.java
@@ -20,7 +20,7 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import gnu.getopt.Getopt;
 
-import net.i2p.client.I2PSessionImpl;
+import net.i2p.client.impl.I2PSessionImpl;
 import net.i2p.crypto.SigUtil;
 import net.i2p.data.Base64;
 import net.i2p.data.Certificate;
@@ -62,7 +62,7 @@ import net.i2p.util.Translate;
 /**
  * Main driver for the router.
  *
- * For embedded use, instantiate and then call runRouter().
+ * For embedded use, instantiate, call setKillVMOnEnd(false), and then call runRouter().
  *
  */
 public class Router implements RouterClock.ClockShiftListener {
@@ -72,11 +72,11 @@ public class Router implements RouterClock.ClockShiftListener {
     /** full path */
     private String _configFilename;
     private RouterInfo _routerInfo;
+    private final Object _routerInfoLock = new Object();
     /** not for external use */
     public final Object routerInfoFileLock = new Object();
     private final Object _configFileLock = new Object();
     private long _started;
-    private boolean _higherVersionSeen;
     private boolean _killVMOnEnd;
     private int _gracefulExitCode;
     private I2PThread.OOMEventListener _oomListener;
@@ -391,13 +391,12 @@ public class Router implements RouterClock.ClockShiftListener {
         CryptoChecker.warnUnavailableCrypto(_context);
 
         _routerInfo = null;
-        _higherVersionSeen = false;
         if (_log.shouldLog(Log.INFO))
             _log.info("New router created with config file " + _configFilename);
         _oomListener = new OOMListener(_context);
 
         _shutdownHook = new ShutdownHook(_context);
-        _gracefulShutdownDetector = new I2PAppThread(new GracefulShutdown(_context), "Graceful shutdown hook", true);
+        _gracefulShutdownDetector = new I2PAppThread(new GracefulShutdown(_context), "Graceful ShutdownHook", true);
         _gracefulShutdownDetector.setPriority(Thread.NORM_PRIORITY + 1);
         _gracefulShutdownDetector.start();
         
@@ -489,34 +488,26 @@ public class Router implements RouterClock.ClockShiftListener {
      *  Our current router info.
      *  Warning, may be null if called very early.
      */
-    public RouterInfo getRouterInfo() { return _routerInfo; }
+    public RouterInfo getRouterInfo() {
+        synchronized (_routerInfoLock) {
+            return _routerInfo;
+        }
+    }
 
     /**
      *  Caller must ensure info is valid - no validation done here.
      *  Not for external use.
      */
     public void setRouterInfo(RouterInfo info) { 
-        _routerInfo = info; 
+        synchronized (_routerInfoLock) {
+            _routerInfo = info; 
+        }
         if (_log.shouldLog(Log.INFO))
             _log.info("setRouterInfo() : " + info, new Exception("I did it"));
         if (info != null)
             _context.jobQueue().addJob(new PersistRouterInfoJob(_context));
     }
 
-    /**
-     * True if the router has tried to communicate with another router who is running a higher
-     * incompatible protocol version.  
-     * @deprecated unused
-     */
-    public boolean getHigherVersionSeen() { return _higherVersionSeen; }
-
-    /**
-     * True if the router has tried to communicate with another router who is running a higher
-     * incompatible protocol version.  
-     * @deprecated unused
-     */
-    public void setHigherVersionSeen(boolean seen) { _higherVersionSeen = seen; }
-    
     /**
      *  Used only by routerconsole.. to be deprecated?
      */
@@ -570,9 +561,9 @@ public class Router implements RouterClock.ClockShiftListener {
         if (!SystemVersion.isAndroid())
             I2PThread.addOOMEventListener(_oomListener);
         
-        _context.keyManager().startup();
-        
-        setupHandlers();
+        // message handlers
+        _context.inNetMessagePool().registerHandlerJobBuilder(GarlicMessage.MESSAGE_TYPE, new GarlicMessageHandler(_context));
+
         //if (ALLOW_DYNAMIC_KEYS) {
         //    if ("true".equalsIgnoreCase(_context.getProperty(Router.PROP_HIDDEN, "false")))
         //        killKeys();
@@ -581,7 +572,7 @@ public class Router implements RouterClock.ClockShiftListener {
         _context.messageValidator().startup();
         _context.tunnelDispatcher().startup();
         _context.inNetMessagePool().startup();
-        startupQueue();
+        _context.jobQueue().runQueue(1);
         //_context.jobQueue().addJob(new CoalesceStatsJob(_context));
         _context.simpleTimer2().addPeriodicEvent(new CoalesceStatsEvent(_context), COALESCE_TIME);
         _context.jobQueue().addJob(new UpdateRoutingKeyModifierJob(_context));
@@ -620,6 +611,7 @@ public class Router implements RouterClock.ClockShiftListener {
      * This is synchronized with saveConfig().
      * Not for external use.
      */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     public void readConfig() {
         synchronized(_configFileLock) {
             String f = getConfigFilename();
@@ -817,7 +809,17 @@ public class Router implements RouterClock.ClockShiftListener {
     public void rebuildRouterInfo(boolean blockingRebuild) {
         if (_log.shouldLog(Log.INFO))
             _log.info("Rebuilding new routerInfo");
+        synchronized (_routerInfoLock) {
+            locked_rebuildRouterInfo(blockingRebuild);
+        }
+    }
         
+
+    /**
+     * Rebuild and republish our routerInfo since something significant 
+     * has changed.
+     */
+    private void locked_rebuildRouterInfo(boolean blockingRebuild) {
         RouterInfo ri = null;
         if (_routerInfo != null)
             ri = new RouterInfo(_routerInfo);
@@ -835,7 +837,7 @@ public class Router implements RouterClock.ClockShiftListener {
             addCapabilities(ri);
             SigningPrivateKey key = _context.keyManager().getSigningPrivateKey();
             if (key == null) {
-                _log.log(Log.CRIT, "Internal error - signing private key not known?  wtf");
+                _log.log(Log.CRIT, "Internal error - signing private key not known? Impossible?");
                 return;
             }
             ri.sign(key);
@@ -894,7 +896,7 @@ public class Router implements RouterClock.ClockShiftListener {
             ri.addCapability(force.charAt(0));
         } else if (bwLim < 12) {
             ri.addCapability(CAPABILITY_BW12);
-        } else if (bwLim <= 32) {
+        } else if (bwLim <= 48) {
             ri.addCapability(CAPABILITY_BW32);
         } else if (bwLim <= 64) {
             ri.addCapability(CAPABILITY_BW64);
@@ -957,7 +959,10 @@ public class Router implements RouterClock.ClockShiftListener {
     }
     
     public boolean isHidden() {
-        RouterInfo ri = _routerInfo;
+        RouterInfo ri;
+        synchronized (_routerInfoLock) {
+            ri = _routerInfo;
+        }
         if ( (ri != null) && (ri.isHidden()) )
             return true;
         String h = _context.getProperty(PROP_HIDDEN_HIDDEN);
@@ -1062,15 +1067,6 @@ public class Router implements RouterClock.ClockShiftListener {
             saveConfig(PROP_JBIGI, loaded);
     }
     
-    private void startupQueue() {
-        _context.jobQueue().runQueue(1);
-    }
-    
-    private void setupHandlers() {
-        _context.inNetMessagePool().registerHandlerJobBuilder(GarlicMessage.MESSAGE_TYPE, new GarlicMessageHandler(_context));
-        //_context.inNetMessagePool().registerHandlerJobBuilder(TunnelMessage.MESSAGE_TYPE, new TunnelMessageHandler(_context));
-    }
-    
     /** shut down after all tunnels are gone */
     public static final int EXIT_GRACEFUL = 2;
     /** shut down immediately */
@@ -1145,7 +1141,7 @@ public class Router implements RouterClock.ClockShiftListener {
                 _log.warn("Running shutdown task " + task.getClass());
             try {
                 //task.run();
-                Thread t = new Thread(task, "Shutdown task " + task.getClass().getName());
+                Thread t = new I2PAppThread(task, "Shutdown task " + task.getClass().getName());
                 t.setDaemon(true);
                 t.start();
                 try {
@@ -1396,6 +1392,7 @@ public class Router implements RouterClock.ClockShiftListener {
      * @return success
      * @since 0.8.13
      */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     public boolean saveConfig(Map toAdd, Collection<String> toRemove) {
         synchronized(_configFileLock) {
             if (toAdd != null)
@@ -1425,8 +1422,10 @@ public class Router implements RouterClock.ClockShiftListener {
         _eventLog.addEvent(EventLog.CLOCK_SHIFT, Long.toString(delta));
         // update the routing key modifier
         _context.routerKeyGenerator().generateDateBasedModData();
-        if (_context.commSystem().countActivePeers() <= 0)
-            return;
+        // Commented because this check makes no sense (#1014)
+        // .. and 'active' is relative to our broken time.
+        //if (_context.commSystem().countActivePeers() <= 0)
+        //    return;
         if (delta > 0)
             _log.error("Restarting after large clock shift forward by " + DataHelper.formatDuration(delta));
         else
@@ -1455,7 +1454,7 @@ public class Router implements RouterClock.ClockShiftListener {
         ((RouterClock) _context.clock()).removeShiftListener(this);
         // Let's not stop accepting tunnels, etc
         //_started = _context.clock().now();
-        Thread t = new Thread(new Restarter(_context), "Router Restart");
+        Thread t = new I2PThread(new Restarter(_context), "Router Restart");
         t.setPriority(Thread.NORM_PRIORITY + 1);
         t.start();
     }    
@@ -1562,7 +1561,7 @@ public class Router implements RouterClock.ClockShiftListener {
         if (f.exists()) {
             long lastWritten = f.lastModified();
             if (System.currentTimeMillis()-lastWritten > LIVELINESS_DELAY) {
-                System.err.println("WARN: Old router was not shut down gracefully, deleting router.ping");
+                System.err.println("WARN: Old router was not shut down gracefully, deleting " + f);
                 f.delete();
             } else {
                 return false;
diff --git a/router/java/src/net/i2p/router/RouterContext.java b/router/java/src/net/i2p/router/RouterContext.java
index 31dbb49b37a6b3bbba565cac3f6f9ec3435fbb19..87bc22b0b25a9f0c14f8034f3c1f74dd0161b22d 100644
--- a/router/java/src/net/i2p/router/RouterContext.java
+++ b/router/java/src/net/i2p/router/RouterContext.java
@@ -28,7 +28,6 @@ import net.i2p.router.transport.FIFOBandwidthLimiter;
 import net.i2p.router.transport.OutboundMessageRegistry;
 import net.i2p.router.tunnel.TunnelDispatcher;
 import net.i2p.router.tunnel.pool.TunnelPoolManager;
-import net.i2p.update.UpdateManager;
 import net.i2p.util.KeyRing;
 import net.i2p.util.I2PProperties.I2PPropertyCallback;
 import net.i2p.util.SystemVersion;
@@ -64,7 +63,6 @@ public class RouterContext extends I2PAppContext {
     private Banlist _banlist;
     private Blocklist _blocklist;
     private MessageValidator _messageValidator;
-    private UpdateManager _updateManager;
     //private MessageStateMonitor _messageStateMonitor;
     private RouterThrottle _throttle;
     private RouterAppManager _appManager;
diff --git a/router/java/src/net/i2p/router/RouterThrottleImpl.java b/router/java/src/net/i2p/router/RouterThrottleImpl.java
index 66a31acce26279a7f402137262253d3ee1fa609d..aafdea9fd6fddc2a1e54033ac9a54ca67a8c54c2 100644
--- a/router/java/src/net/i2p/router/RouterThrottleImpl.java
+++ b/router/java/src/net/i2p/router/RouterThrottleImpl.java
@@ -29,7 +29,7 @@ class RouterThrottleImpl implements RouterThrottle {
     // TODO reduce
     private static final long JOB_LAG_LIMIT_TUNNEL = 500;
     private static final String PROP_MAX_TUNNELS = "router.maxParticipatingTunnels";
-    private static final int DEFAULT_MAX_TUNNELS = 5000;
+    private static final int DEFAULT_MAX_TUNNELS = 10*1000;
     private static final String PROP_MAX_PROCESSINGTIME = "router.defaultProcessingTimeThrottle";
     private static final long DEFAULT_REJECT_STARTUP_TIME = 10*60*1000;
     private static final String PROP_REJECT_STARTUP_TIME = "router.rejectStartupTime";
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 98bd96d4eda2be114bd00bdd087b6be7b6a865e2..f7d70ed0aa6b54fa9329f93adb9baf354b141a81 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
     /** deprecated */
     public final static String ID = "Monotone";
     public final static String VERSION = CoreVersion.VERSION;
-    public final static long BUILD = 32;
+    public final static long BUILD = 24;
 
     /** for example "-test" */
     public final static String EXTRA = "-rc";
diff --git a/router/java/src/net/i2p/router/TunnelManagerFacade.java b/router/java/src/net/i2p/router/TunnelManagerFacade.java
index 2a35d0c9707e0730a9e14af613b7b11d57287a58..5b3e000ac046141f95e26f05f80224ac1f6affde 100644
--- a/router/java/src/net/i2p/router/TunnelManagerFacade.java
+++ b/router/java/src/net/i2p/router/TunnelManagerFacade.java
@@ -146,6 +146,21 @@ public interface TunnelManagerFacade extends Service {
      *
      */
     public void buildTunnels(Destination client, ClientTunnelSettings settings);
+
+    /**
+     *  Add another destination to the same tunnels.
+     *  Must have same encryption key and a different signing key.
+     *  @throws IllegalArgumentException if not
+     *  @return success
+     *  @since 0.9.21
+     */
+    public boolean addAlias(Destination dest, ClientTunnelSettings settings, Destination existingClient);
+
+    /**
+     *  Remove another destination to the same tunnels.
+     *  @since 0.9.21
+     */
+    public void removeAlias(Destination dest);
     
     public TunnelPoolSettings getInboundSettings();
     public TunnelPoolSettings getOutboundSettings();
diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java
index 329cf5eaedf15b05c4d464b41c2a6901de435e33..24184cc141e40910a275133ffa9db3bbdcebe279 100644
--- a/router/java/src/net/i2p/router/TunnelPoolSettings.java
+++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java
@@ -1,11 +1,13 @@
 package net.i2p.router;
 
+import java.util.Set;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 
 import net.i2p.data.Base64;
 import net.i2p.data.Hash;
+import net.i2p.util.ConcurrentHashSet;
 import net.i2p.util.NativeBigInteger;
 import net.i2p.util.RandomSource;
 import net.i2p.util.SystemVersion;
@@ -31,6 +33,8 @@ public class TunnelPoolSettings {
     private final Properties _unknownOptions;
     private Hash _randomKey;
     private int _priority;
+    private final Set<Hash> _aliases;
+    private Hash _aliasOf;
     
     /** prefix used to override the router's defaults for clients */
     // unimplemented
@@ -72,11 +76,11 @@ public class TunnelPoolSettings {
     private static final int    DEFAULT_LENGTH_VARIANCE = 0;
     /** expl only */
     private static final int    DEFAULT_IB_EXPL_LENGTH = 2;
-    //private static final int    DEFAULT_OB_EXPL_LENGTH = isSlow ? 2 : 3;
-    private static final int    DEFAULT_OB_EXPL_LENGTH = 2;
+    private static final int    DEFAULT_OB_EXPL_LENGTH = isSlow ? 2 : 3;
+    //private static final int    DEFAULT_OB_EXPL_LENGTH = 2;
     private static final int    DEFAULT_IB_EXPL_LENGTH_VARIANCE = isSlow ? 0 : 1;
-    //private static final int    DEFAULT_OB_EXPL_LENGTH_VARIANCE = 0;
-    private static final int    DEFAULT_OB_EXPL_LENGTH_VARIANCE = isSlow ? 0 : 1;
+    private static final int    DEFAULT_OB_EXPL_LENGTH_VARIANCE = 0;
+    //private static final int    DEFAULT_OB_EXPL_LENGTH_VARIANCE = isSlow ? 0 : 1;
 
     public static final boolean DEFAULT_ALLOW_ZERO_HOP = true;
     public static final int     DEFAULT_IP_RESTRICTION = 2;    // class B (/16)
@@ -119,6 +123,10 @@ public class TunnelPoolSettings {
         _randomKey = generateRandomKey();
         if (_isExploratory && !_isInbound)
             _priority = EXPLORATORY_PRIORITY;
+        if (!_isExploratory)
+            _aliases = new ConcurrentHashSet<Hash>(4);
+        else
+            _aliases = null;
     }
     
     /** how many tunnels should be available at all times */
@@ -206,6 +214,34 @@ public class TunnelPoolSettings {
     
     /** what destination is this a client tunnel for (or null if exploratory) */
     public Hash getDestination() { return _destination; }
+    
+    /**
+     *  Other destinations that use the same tunnel (or null if exploratory)
+     *  Modifiable, concurrent, not a copy
+     *  @since 0.9.21
+     */
+    public Set<Hash> getAliases() {
+        return _aliases;
+    }
+
+    /**
+     *  Other destination that this is an alias of (or null).
+     *  If non-null, don't build tunnels.
+     *  @since 0.9.21
+     */
+    public Hash getAliasOf() {
+        return _aliasOf;
+    }
+
+
+    /**
+     *  Set other destination that this is an alias of (or null).
+     *  If non-null, don't build tunnels.
+     *  @since 0.9.21
+     */
+    public void setAliasOf(Hash h) {
+        _aliasOf = h;
+    }
 
     /**
      *  random key used for peer ordering
@@ -235,7 +271,7 @@ public class TunnelPoolSettings {
     public int getPriority() { return _priority; }
 
     public Properties getUnknownOptions() { return _unknownOptions; }
-    
+
     /**
      *  Defaults in props are NOT honored.
      *  In-JVM client side must promote defaults to the primary map.
diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
index 10a480c78e56349266b784d1c96f89d3034b48df..d94bb897b057a864c83134044014f5064b767c6b 100644
--- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
@@ -16,6 +16,7 @@ import java.io.OutputStream;
 import java.net.Socket;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -39,6 +40,7 @@ import net.i2p.data.i2cp.SendMessageMessage;
 import net.i2p.data.i2cp.SendMessageExpiresMessage;
 import net.i2p.data.i2cp.SessionConfig;
 import net.i2p.data.i2cp.SessionId;
+import net.i2p.data.i2cp.SessionStatusMessage;
 import net.i2p.router.Job;
 import net.i2p.router.JobImpl;
 import net.i2p.router.RouterContext;
@@ -51,6 +53,9 @@ import net.i2p.util.SimpleTimer;
 /**
  * Bridge the router and the client - managing state for a client.
  *
+ * As of release 0.9.21, multiple sessions are supported on a single
+ * I2CP connection. These sessions share tunnels and some configuration.
+ *
  * @author jrandom
  */
 class ClientConnectionRunner {
@@ -61,21 +66,16 @@ class ClientConnectionRunner {
     private final Socket _socket;
     /** output stream of the socket that I2CP messages bound to the client should be written to */
     private OutputStream _out;
-    /** session ID of the current client */
-    private SessionId _sessionId;
-    /** user's config */
-    private SessionConfig _config;
+
+    private final ConcurrentHashMap<Hash, SessionParams> _sessions;
+
     private String _clientVersion;
     /**
      *  Mapping of MessageId to Payload, storing messages for retrieval.
      *  Unused for i2cp.fastReceive = "true" (_dontSendMSMOnRecive = true)
      */
     private final Map<MessageId, Payload> _messages; 
-    /** lease set request state, or null if there is no request pending on at the moment */
-    private LeaseRequestState _leaseRequest;
     private int _consecutiveLeaseRequestFails;
-    /** currently allocated leaseSet, or null if none is allocated */
-    private LeaseSet _currentLeaseSet;
     /**
      *  Set of messageIds created but not yet ACCEPTED.
      *  Unused for i2cp.messageReliability = "none" (_dontSendMSM = true)
@@ -83,7 +83,7 @@ class ClientConnectionRunner {
     private final Set<MessageId> _acceptedPending;
     /** thingy that does stuff */
     protected I2CPMessageReader _reader;
-    /** just for this destination */
+    /** Used for all sessions, which must all have the same crypto keys */
     private SessionKeyManager _sessionKeyManager;
     /** 
      * This contains the last 10 MessageIds that have had their (non-ack) status 
@@ -91,7 +91,6 @@ class ClientConnectionRunner {
      */
     private final List<MessageId> _alreadyProcessed;
     private ClientWriterRunner _writer;
-    private Hash _destHashCache;
     /** are we, uh, dead */
     private volatile boolean _dead;
     /** For outbound traffic. true if i2cp.messageReliability = "none"; @since 0.8.1 */
@@ -108,11 +107,31 @@ class ClientConnectionRunner {
 
     private static final int MAX_LEASE_FAILS = 5;
     private static final int BUF_SIZE = 32*1024;
+    private static final int MAX_SESSIONS = 4;
 
     /** @since 0.9.2 */
     private static final String PROP_TAGS = "crypto.tagsToSend";
     private static final String PROP_THRESH = "crypto.lowTagThreshold";
 
+    /**
+     *  For multisession
+     *  @since 0.9.21
+     */
+    private static class SessionParams {
+        final Destination dest;
+        final boolean isPrimary;
+        SessionId sessionId;
+        SessionConfig config;
+        LeaseRequestState leaseRequest;
+        Rerequest rerequestTimer;
+        LeaseSet currentLeaseSet;
+
+        SessionParams(Destination d, boolean isPrimary) {
+            dest = d;
+            this.isPrimary = isPrimary;
+        }
+    }
+
     /**
      * Create a new runner against the given socket
      *
@@ -124,6 +143,7 @@ class ClientConnectionRunner {
         _socket = socket;
         // unused for fastReceive
         _messages = new ConcurrentHashMap<MessageId, Payload>();
+        _sessions = new ConcurrentHashMap<Hash, SessionParams>(4);
         _alreadyProcessed = new ArrayList<MessageId>();
         _acceptedPending = new ConcurrentHashSet<MessageId>();
         _messageId = new AtomicInteger(_context.random().nextInt());
@@ -168,8 +188,7 @@ class ClientConnectionRunner {
         // router may be null in unit tests
         if ((_context.router() == null || _context.router().isAlive()) &&
             _log.shouldWarn()) 
-            _log.warn("Stop the I2CP connection!  current leaseSet: " 
-                      + _currentLeaseSet, new Exception("Stop client connection"));
+            _log.warn("Stop the I2CP connection!", new Exception("Stop client connection"));
         _dead = true;
         // we need these keys to unpublish the leaseSet
         if (_reader != null) _reader.stopReading();
@@ -180,21 +199,61 @@ class ClientConnectionRunner {
         if (_sessionKeyManager != null)
             _sessionKeyManager.shutdown();
         _manager.unregisterConnection(this);
-        if (_currentLeaseSet != null)
-            _context.netDb().unpublish(_currentLeaseSet);
-        _leaseRequest = null;
+        for (SessionParams sp : _sessions.values()) {
+            LeaseSet ls = sp.currentLeaseSet;
+            if (ls != null)
+                _context.netDb().unpublish(ls);
+            if (!sp.isPrimary)
+                _context.tunnelManager().removeAlias(sp.dest);
+        }
         synchronized (_alreadyProcessed) {
             _alreadyProcessed.clear();
         }
-        //_config = null;
-        //_manager = null;
+        _sessions.clear();
     }
     
     /**
      *  Current client's config,
-     *  will be null before session is established
+     *  will be null if session not found
+     *  IS subsession aware.
+     *  @since 0.9.21 added hash param
      */
-    public SessionConfig getConfig() { return _config; }
+    public SessionConfig getConfig(Hash h) {
+        SessionParams sp  = _sessions.get(h);
+        if (sp == null)
+            return null;
+        return sp.config;
+    }
+    
+    /**
+     *  Current client's config,
+     *  will be null if session not found
+     *  IS subsession aware.
+     *  Returns null if id is null.
+     *  @since 0.9.21 added id param
+     */
+    public SessionConfig getConfig(SessionId id) {
+        if (id == null)
+            return null;
+        for (SessionParams sp : _sessions.values()) {
+            if (id.equals(sp.sessionId))
+                return sp.config;
+        }
+        return null;
+    }
+    
+    /**
+     *  Primary client's config,
+     *  will be null if session not set up
+     *  @since 0.9.21
+     */
+    public SessionConfig getPrimaryConfig() {
+        for (SessionParams sp : _sessions.values()) {
+            if (sp.isPrimary)
+                return sp.config;
+        }
+        return null;
+    }
 
     /**
      *  The client version.
@@ -216,41 +275,200 @@ class ClientConnectionRunner {
     /** current client's sessionkeymanager */
     public SessionKeyManager getSessionKeyManager() { return _sessionKeyManager; }
 
-    /** currently allocated leaseSet */
-    public LeaseSet getLeaseSet() { return _currentLeaseSet; }
-    void setLeaseSet(LeaseSet ls) { _currentLeaseSet = ls; }
+    /**
+     *  Currently allocated leaseSet.
+     *  IS subsession aware. Returns primary leaseset only.
+     *  @return leaseSet or null if not yet set or unknown hash
+     *  @since 0.9.21 added hash parameter
+     */
+    public LeaseSet getLeaseSet(Hash h) {
+        SessionParams sp = _sessions.get(h);
+        if (sp == null)
+            return null;
+        return sp.currentLeaseSet;
+    }
+
+    /**
+     *  Currently allocated leaseSet.
+     *  IS subsession aware.
+     */
+    void setLeaseSet(LeaseSet ls) {
+        Hash h = ls.getDestination().calculateHash();
+        SessionParams sp = _sessions.get(h);
+        if (sp == null)
+            return;
+        sp.currentLeaseSet = ls;
+    }
 
     /**
      *  Equivalent to getConfig().getDestination().calculateHash();
      *  will be null before session is established
+     *  Not subsession aware. Returns primary session hash.
+     *  Don't use if you can help it.
+     *
+     *  @return primary hash or null if not yet set
+     */
+    public Hash getDestHash() {
+        SessionConfig cfg = getPrimaryConfig();
+        if (cfg != null)
+            return cfg.getDestination().calculateHash();
+        return null;
+    }
+
+    /**
+     *  Return the hash for the given ID
+     *  @return hash or null if unknown
+     *  @since 0.9.21
      */
-    public Hash getDestHash() { return _destHashCache; }
+    public Hash getDestHash(SessionId id) {
+        if (id == null)
+            return null;
+        for (Map.Entry<Hash, SessionParams> e : _sessions.entrySet()) {
+            if (id.equals(e.getValue().sessionId))
+                return e.getKey();
+        }
+        return null;
+    }
+
+    /**
+     *  Return the dest for the given ID
+     *  @return dest or null if unknown
+     *  @since 0.9.21
+     */
+    public Destination getDestination(SessionId id) {
+        if (id == null)
+            return null;
+        for (SessionParams sp : _sessions.values()) {
+            if (id.equals(sp.sessionId))
+                return sp.dest;
+        }
+        return null;
+    }
+    
+    /**
+     *  Subsession aware.
+     *
+     *  @param h the local target
+     *  @return current client's sessionId or null if not yet set or not a valid hash
+     *  @since 0.9.21
+     */
+    SessionId getSessionId(Hash h) {
+        SessionParams sp = _sessions.get(h);
+        if (sp == null)
+            return null;
+        return sp.sessionId;
+    }
+    
+    /**
+     *  Subsession aware.
+     *
+     *  @return all current client's sessionIds, non-null
+     *  @since 0.9.21
+     */
+    List<SessionId> getSessionIds() {
+        List<SessionId> rv = new ArrayList<SessionId>(_sessions.size());
+        for (SessionParams sp : _sessions.values()) {
+            SessionId id = sp.sessionId;
+            if (id != null)
+                rv.add(id);
+        }
+        return rv;
+    }
     
     /**
-     * @return current client's sessionId or null if not yet set
+     *  Subsession aware.
+     *
+     *  @return all current client's destinations, non-null
+     *  @since 0.9.21
      */
-    SessionId getSessionId() { return _sessionId; }
+    List<Destination> getDestinations() {
+        List<Destination> rv = new ArrayList<Destination>(_sessions.size());
+        for (SessionParams sp : _sessions.values()) {
+            rv.add(sp.dest);
+        }
+        return rv;
+    }
 
     /**
      *  To be called only by ClientManager.
      *
+     *  @param hash for the session
      *  @throws IllegalStateException if already set
+     *  @since 0.9.21 added hash param
      */
-    void setSessionId(SessionId id) {
-        if (_sessionId != null)
+    void setSessionId(Hash hash, SessionId id) {
+        if (hash == null)
             throw new IllegalStateException();
-        _sessionId = id;
+        if (id == null)
+            throw new NullPointerException();
+        SessionParams sp = _sessions.get(hash);
+        if (sp == null || sp.sessionId != null)
+            throw new IllegalStateException();
+        sp.sessionId = id;
+     }
+    
+    /**
+     *  Kill the session. Caller must kill runner if none left.
+     *
+     *  @since 0.9.21
+     */
+    void removeSession(SessionId id) {
+        if (id == null)
+            return;
+        boolean isPrimary = false;
+        for (Iterator<SessionParams> iter = _sessions.values().iterator(); iter.hasNext(); ) {
+            SessionParams sp = iter.next();
+            if (id.equals(sp.sessionId)) {
+                if (_log.shouldLog(Log.INFO))
+                    _log.info("Destroying client session " + id);
+                iter.remove();
+                // Tell client manger
+                _manager.unregisterSession(id, sp.dest);
+                LeaseSet ls = sp.currentLeaseSet;
+                if (ls != null)
+                    _context.netDb().unpublish(ls);
+                isPrimary = sp.isPrimary;
+                if (!isPrimary)
+                    _context.tunnelManager().removeAlias(sp.dest);
+                break;
+            }
+        }
+        if (isPrimary && !_sessions.isEmpty()) {
+            // kill all the others also
+            for (SessionParams sp : _sessions.values()) {
+                if (_log.shouldLog(Log.INFO))
+                    _log.info("Destroying remaining client subsession " + sp.sessionId);
+                _manager.unregisterSession(sp.sessionId, sp.dest);
+                LeaseSet ls = sp.currentLeaseSet;
+                if (ls != null)
+                    _context.netDb().unpublish(ls);
+                _context.tunnelManager().removeAlias(sp.dest);
+            }
+        }
     }
 
-    /** data for the current leaseRequest, or null if there is no active leaseSet request */
-    LeaseRequestState getLeaseRequest() { return _leaseRequest; }
+    /**
+     *  Data for the current leaseRequest, or null if there is no active leaseSet request.
+     *  Not subsession aware. Returns primary ID only.
+     *  @since 0.9.21 added hash param
+     */
+    LeaseRequestState getLeaseRequest(Hash h) {
+        SessionParams sp = _sessions.get(h);
+        if (sp == null)
+            return null;
+        return sp.leaseRequest;
+    }
 
     /** @param req non-null */
     public void failLeaseRequest(LeaseRequestState req) { 
         boolean disconnect = false;
+        Hash h = req.getRequested().getDestination().calculateHash();
+        SessionParams sp = _sessions.get(h);
+        if (sp == null)
+            return;
         synchronized (this) {
-            if (_leaseRequest == req) {
-                _leaseRequest = null;
+            if (sp.leaseRequest == req) {
+                sp.leaseRequest = null;
                 disconnect = ++_consecutiveLeaseRequestFails > MAX_LEASE_FAILS;
             }
         }
@@ -291,19 +509,34 @@ class ClientConnectionRunner {
      *  @return SessionStatusMessage return code, 1 for success, != 1 for failure
      */
     public int sessionEstablished(SessionConfig config) {
-        _destHashCache = config.getDestination().calculateHash();
+        Destination dest = config.getDestination();
+        Hash destHash = dest.calculateHash();
         if (_log.shouldLog(Log.DEBUG))
-            _log.debug("SessionEstablished called for destination " + _destHashCache.toBase64());
-        _config = config;
+            _log.debug("SessionEstablished called for destination " + destHash);
+        if (_sessions.size() > MAX_SESSIONS)
+            return SessionStatusMessage.STATUS_REFUSED;
+        boolean isPrimary = _sessions.isEmpty();
+        if (!isPrimary) {
+            // all encryption keys must be the same
+            for (SessionParams sp : _sessions.values()) {
+                if (!dest.getPublicKey().equals(sp.dest.getPublicKey()))
+                    return SessionStatusMessage.STATUS_INVALID;
+            }
+        }
+        SessionParams sp = new SessionParams(dest, isPrimary);
+        sp.config = config;
+        SessionParams old = _sessions.putIfAbsent(destHash, sp);
+        if (old != null)
+            return SessionStatusMessage.STATUS_INVALID;
         // We process a few options here, but most are handled by the tunnel manager.
         // The ones here can't be changed later.
         Properties opts = config.getOptions();
-        if (opts != null) {
+        if (isPrimary && opts != null) {
             _dontSendMSM = "none".equals(opts.getProperty(I2PClient.PROP_RELIABILITY, "").toLowerCase(Locale.US));
             _dontSendMSMOnReceive = Boolean.parseBoolean(opts.getProperty(I2PClient.PROP_FAST_RECEIVE));
         }
         // per-destination session key manager to prevent rather easy correlation
-        if (_sessionKeyManager == null) {
+        if (isPrimary && _sessionKeyManager == null) {
             int tags = TransientSessionKeyManager.DEFAULT_TAGS;
             int thresh = TransientSessionKeyManager.LOW_THRESHOLD;
             if (opts != null) {
@@ -317,10 +550,8 @@ class ClientConnectionRunner {
                 }
             }
             _sessionKeyManager = new TransientSessionKeyManager(_context, tags, thresh);
-        } else {
-            _log.error("SessionEstablished called for twice for destination " + _destHashCache.toBase64().substring(0,4));
         }
-        return _manager.destinationEstablished(this);
+        return _manager.destinationEstablished(this, dest);
     }
     
     /** 
@@ -331,14 +562,21 @@ class ClientConnectionRunner {
      *
      *  Do not use for status = STATUS_SEND_ACCEPTED; use ackSendMessage() for that.
      *
+     *  @param dest the client
      *  @param id the router's ID for this message
      *  @param messageNonce the client's ID for this message
      *  @param status see I2CP MessageStatusMessage for success/failure codes
      */
-    void updateMessageDeliveryStatus(MessageId id, long messageNonce, int status) {
+    void updateMessageDeliveryStatus(Destination dest, MessageId id, long messageNonce, int status) {
         if (_dead || messageNonce <= 0)
             return;
-        _context.jobQueue().addJob(new MessageDeliveryStatusUpdate(id, messageNonce, status));
+        SessionParams sp = _sessions.get(dest.calculateHash());
+        if (sp == null)
+            return;
+        SessionId sid = sp.sessionId;
+        if (sid == null)
+            return;  // sid = new SessionId(foo) ???
+        _context.jobQueue().addJob(new MessageDeliveryStatusUpdate(sid, id, messageNonce, status));
     }
 
     /** 
@@ -346,19 +584,23 @@ class ClientConnectionRunner {
      * updated.  This takes care of all the LeaseRequestState stuff (including firing any jobs)
      */
     void leaseSetCreated(LeaseSet ls) {
-        LeaseRequestState state = null;
+        Hash h = ls.getDestination().calculateHash();
+        SessionParams sp = _sessions.get(h);
+        if (sp == null)
+            return;
+        LeaseRequestState state;
         synchronized (this) {
-            state = _leaseRequest;
+            state = sp.leaseRequest;
             if (state == null) {
                 if (_log.shouldLog(Log.WARN))
                     _log.warn("LeaseRequest is null and we've received a new lease?! perhaps this is odd... " + ls);
                 return;
             } else {
                 state.setIsSuccessful(true);
-                _currentLeaseSet = ls;
+                setLeaseSet(ls);
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug("LeaseSet created fully: " + state + " / " + ls);
-                _leaseRequest = null;
+                sp.leaseRequest = null;
                 _consecutiveLeaseRequestFails = 0;
             }
         }
@@ -427,12 +669,12 @@ class ClientConnectionRunner {
 
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("** Receiving message " + id.getMessageId() + " with payload of size " 
-                       + payload.getSize() + " for session " + _sessionId.getSessionId());
+                       + payload.getSize() + " for session " + message.getSessionId());
         //long beforeDistribute = _context.clock().now();
         // the following blocks as described above
-        SessionConfig cfg = _config;
-        if (cfg != null)
-            _manager.distributeMessage(cfg.getDestination(), dest, payload,
+        Destination fromDest = getDestination(message.getSessionId());
+        if (fromDest != null)
+            _manager.distributeMessage(fromDest, dest, payload,
                                        id, message.getNonce(), expiration, flags);
         // else log error?
         //long timeToDistribute = _context.clock().now() - beforeDistribute;
@@ -452,11 +694,9 @@ class ClientConnectionRunner {
      * @param id OUR id for the message
      * @param nonce HIS id for the message
      */
-    void ackSendMessage(MessageId id, long nonce) {
+    void ackSendMessage(SessionId sid, MessageId id, long nonce) {
         if (_dontSendMSM || nonce == 0)
             return;
-        SessionId sid = _sessionId;
-        if (sid == null) return;
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("Acking message send [accepted]" + id + " / " + nonce + " for sessionId " 
                        + sid);
@@ -480,6 +720,9 @@ class ClientConnectionRunner {
      *
      * Note that no failure indication is available.
      * Fails silently on e.g. queue overflow to client, client dead, etc.
+     *
+     * @param toDest non-null
+     * @param fromDest generally null when from remote, non-null if from local
      */ 
     void receiveMessage(Destination toDest, Destination fromDest, Payload payload) {
         if (_dead) return;
@@ -489,13 +732,33 @@ class ClientConnectionRunner {
         j.runJob();
     }
     
+    /**
+     * Asynchronously deliver the message to the current runner
+     *
+     * Note that no failure indication is available.
+     * Fails silently on e.g. queue overflow to client, client dead, etc.
+     *
+     * @param toHash non-null
+     * @param fromDest generally null when from remote, non-null if from local
+     * @since 0.9.21
+     */ 
+    void receiveMessage(Hash toHash, Destination fromDest, Payload payload) {
+        SessionParams sp = _sessions.get(toHash);
+        if (sp == null) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("No session found for receiveMessage()");
+            return;
+        }
+        receiveMessage(sp.dest, fromDest, payload);
+    }
+    
     /**
      * Send async abuse message to the client
      *
      */
-    public void reportAbuse(String reason, int severity) {
+    public void reportAbuse(Destination dest, String reason, int severity) {
         if (_dead) return;
-        _context.jobQueue().addJob(new ReportAbuseJob(_context, this, reason, severity));
+        _context.jobQueue().addJob(new ReportAbuseJob(_context, this, dest, reason, severity));
     }
         
     /**
@@ -504,13 +767,17 @@ class ClientConnectionRunner {
      * within the timeout specified, queue up the onFailedJob.  This call does not
      * block.
      *
+     * Job args are always null, may need some fixups if we start using them.
+     *
+     * @param h the Destination's hash
      * @param set LeaseSet with requested leases - this object must be updated to contain the 
      *            signed version (as well as any changed/added/removed Leases)
+     *            The LeaseSet contains Leases and destination only, it is unsigned.
      * @param expirationTime ms to wait before failing
      * @param onCreateJob Job to run after the LeaseSet is authorized, null OK
      * @param onFailedJob Job to run after the timeout passes without receiving authorization, null OK
      */
-    void requestLeaseSet(LeaseSet set, long expirationTime, Job onCreateJob, Job onFailedJob) {
+    void requestLeaseSet(Hash h, LeaseSet set, long expirationTime, Job onCreateJob, Job onFailedJob) {
         if (_dead) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Requesting leaseSet from a dead client: " + set);
@@ -518,6 +785,12 @@ class ClientConnectionRunner {
                 _context.jobQueue().addJob(onFailedJob);
             return;
         }
+        SessionParams sp = _sessions.get(h);
+        if (sp == null) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Requesting leaseSet for an unknown sesssion");
+            return;
+        }
         // We can't use LeaseSet.equals() here because the dest, keys, and sig on
         // the new LeaseSet are null. So we compare leases one by one.
         // In addition, the client rewrites the expiration time of all the leases to
@@ -528,12 +801,16 @@ class ClientConnectionRunner {
         //  so the comparison will always work.
         int leases = set.getLeaseCount();
         // synch so _currentLeaseSet isn't changed out from under us
+        LeaseSet current = null;
+        Destination dest = sp.dest;
+        LeaseRequestState state;
         synchronized (this) {
-            if (_currentLeaseSet != null && _currentLeaseSet.getLeaseCount() == leases) {
+            current = sp.currentLeaseSet;
+            if (current != null && current.getLeaseCount() == leases) {
                 for (int i = 0; i < leases; i++) {
-                    if (! _currentLeaseSet.getLease(i).getTunnelId().equals(set.getLease(i).getTunnelId()))
+                    if (! current.getLease(i).getTunnelId().equals(set.getLease(i).getTunnelId()))
                         break;
-                    if (! _currentLeaseSet.getLease(i).getGateway().equals(set.getLease(i).getGateway()))
+                    if (! current.getLease(i).getGateway().equals(set.getLease(i).getGateway()))
                         break;
                     if (i == leases - 1) {
                         if (_log.shouldLog(Log.INFO))
@@ -544,31 +821,51 @@ class ClientConnectionRunner {
                     }
                 }
             }
-        }
-        if (_log.shouldLog(Log.INFO))
-            _log.info("Current leaseSet " + _currentLeaseSet + "\nNew leaseSet " + set);
-        LeaseRequestState state = null;
-        synchronized (this) {
-            state = _leaseRequest;
+
+            if (_log.shouldLog(Log.INFO))
+                _log.info("Current leaseSet " + current + "\nNew leaseSet " + set);
+
+            state = sp.leaseRequest;
             if (state != null) {
-                if (_log.shouldLog(Log.DEBUG))
-                    _log.debug("Already requesting " + state);
                 LeaseSet requested = state.getRequested();
                 LeaseSet granted = state.getGranted();
                 long ours = set.getEarliestLeaseDate();
                 if ( ( (requested != null) && (requested.getEarliestLeaseDate() > ours) ) || 
                      ( (granted != null) && (granted.getEarliestLeaseDate() > ours) ) ) {
                     // theirs is newer
+                    if (_log.shouldLog(Log.DEBUG))
+                        _log.debug("Already requesting, theirs newer, do nothing: " + state);
                 } else {
                     // ours is newer, so wait a few secs and retry
-                    _context.simpleTimer2().addEvent(new Rerequest(set, expirationTime, onCreateJob, onFailedJob), 3*1000);
+                    set.setDestination(dest);
+                    Rerequest timer = new Rerequest(set, expirationTime, onCreateJob, onFailedJob);
+                    sp.rerequestTimer = timer;
+                    _context.simpleTimer2().addEvent(timer, 3*1000);
+                    if (_log.shouldLog(Log.DEBUG))
+                        _log.debug("Already requesting, ours newer, wait 3 sec: " + state);
                 }
                 // fire onCreated?
                 return; // already requesting
             } else {
-                _leaseRequest = state = new LeaseRequestState(onCreateJob, onFailedJob, _context.clock().now() + expirationTime, set);
-                if (_log.shouldLog(Log.DEBUG))
-                    _log.debug("New request: " + state);
+                set.setDestination(dest);
+                if (current == null && _context.tunnelManager().getOutboundClientTunnelCount(h) <= 0) {
+                    // at startup of a client, where we don't have a leaseset, wait for
+                    // an outbound tunnel also, so the client doesn't start sending data
+                    // before we are ready
+                    Rerequest timer = new Rerequest(set, expirationTime, onCreateJob, onFailedJob);
+                    sp.rerequestTimer = timer;
+                    _context.simpleTimer2().addEvent(timer, 1000);
+                    if (_log.shouldLog(Log.DEBUG))
+                        _log.debug("No current LS but no OB tunnels, wait 1 sec for " + h);
+                    return;
+                } else {
+                    // so the timer won't fire off with an older LS request
+                    sp.rerequestTimer = null;
+                    sp.leaseRequest = state = new LeaseRequestState(onCreateJob, onFailedJob,
+                                                                _context.clock().now() + expirationTime, set);
+                    if (_log.shouldLog(Log.DEBUG))
+                        _log.debug("New request: " + state);
+                }
             }
         }
         _context.jobQueue().addJob(new RequestLeaseSetJob(_context, this, state));
@@ -580,6 +877,7 @@ class ClientConnectionRunner {
         private final Job _onCreate;
         private final Job _onFailed;
 
+        /** @param ls dest must be set */
         public Rerequest(LeaseSet ls, long expirationTime, Job onCreate, Job onFailed) {
             _ls = ls;
             _expirationTime = expirationTime;
@@ -588,7 +886,21 @@ class ClientConnectionRunner {
         }
 
         public void timeReached() {
-            requestLeaseSet(_ls, _expirationTime, _onCreate, _onFailed);
+            Hash h = _ls.getDestination().calculateHash();
+            SessionParams sp = _sessions.get(h);
+            if (sp == null) {
+                if (_log.shouldLog(Log.WARN))
+                    _log.warn("cancelling rerequest, session went away: " + h);
+                return;
+            }
+            synchronized(ClientConnectionRunner.this) {
+                if (sp.rerequestTimer != Rerequest.this) {
+                    if (_log.shouldLog(Log.WARN))
+                        _log.warn("cancelling rerequest, newer request came in: " + h);
+                    return;
+                }
+            }
+            requestLeaseSet(h, _ls, _expirationTime, _onCreate, _onFailed);
         }
     }
     
@@ -697,6 +1009,7 @@ class ClientConnectionRunner {
     private static final int MAX_REQUEUE = 60;  // 30 sec.
     
     private class MessageDeliveryStatusUpdate extends JobImpl {
+        private final SessionId _sessId;
         private final MessageId _messageId;
         private final long _messageNonce;
         private final int _status;
@@ -710,8 +1023,9 @@ class ClientConnectionRunner {
          *  @param messageNonce the client's ID for this message
          *  @param status see I2CP MessageStatusMessage for success/failure codes
          */
-        public MessageDeliveryStatusUpdate(MessageId id, long messageNonce, int status) {
+        public MessageDeliveryStatusUpdate(SessionId sid, MessageId id, long messageNonce, int status) {
             super(ClientConnectionRunner.this._context);
+            _sessId = sid;
             _messageId = id;
             _messageNonce = messageNonce;
             _status = status;
@@ -727,7 +1041,7 @@ class ClientConnectionRunner {
 
             MessageStatusMessage msg = new MessageStatusMessage();
             msg.setMessageId(_messageId.getMessageId());
-            msg.setSessionId(_sessionId.getSessionId());
+            msg.setSessionId(_sessId.getSessionId());
             // has to be >= 0, it is initialized to -1
             msg.setNonce(_messageNonce);
             msg.setSize(0);
@@ -738,12 +1052,12 @@ class ClientConnectionRunner {
                     // bug requeueing forever? failsafe
                     _log.error("Abandon update for message " + _messageId + " to " 
                           + MessageStatusMessage.getStatusString(msg.getStatus()) 
-                          + " for session " + _sessionId.getSessionId());
+                          + " for " + _sessId);
                 } else {
                     if (_log.shouldLog(Log.WARN))
                         _log.warn("Almost send an update for message " + _messageId + " to "
                           + MessageStatusMessage.getStatusString(msg.getStatus())
-                          + " for session " + _sessionId.getSessionId()
+                          + " for " + _sessId
                           + " before they knew the messageId!  delaying .5s");
                     _lastTried = _context.clock().now();
                     requeue(REQUEUE_DELAY);
@@ -778,14 +1092,14 @@ class ClientConnectionRunner {
                 if (_log.shouldLog(Log.DEBUG))
                     _log.info("Updating message status for message " + _messageId + " to " 
                               + MessageStatusMessage.getStatusString(msg.getStatus()) 
-                              + " for session " + _sessionId.getSessionId() 
+                              + " for " + _sessId
                               + " (with nonce=2), retrying after " 
                               + (_context.clock().now() - _lastTried));
             } else {
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug("Updating message status for message " + _messageId + " to " 
                                + MessageStatusMessage.getStatusString(msg.getStatus()) 
-                               + " for session " + _sessionId.getSessionId() + " (with nonce=2)");
+                               + " for " + _sessId + " (with nonce=2)");
             }
 
             try {
diff --git a/router/java/src/net/i2p/router/client/ClientListenerRunner.java b/router/java/src/net/i2p/router/client/ClientListenerRunner.java
index 8510fa0719f5de7bb6344243c4db5987c31e87eb..10e92410641e360527bf51e0554ac439a2aedd67 100644
--- a/router/java/src/net/i2p/router/client/ClientListenerRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientListenerRunner.java
@@ -18,6 +18,7 @@ import net.i2p.client.I2PClient;
 import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
 import net.i2p.util.Log;
+import net.i2p.util.PortMapper;
 
 /**
  * Listen for connections on the specified port, and toss them onto the client manager's
@@ -78,13 +79,18 @@ class ClientListenerRunner implements Runnable {
     protected void runServer() {
         _running = true;
         int curDelay = 1000;
+        final String portMapperService = (this instanceof SSLClientListenerRunner) ? PortMapper.SVC_I2CP_SSL
+                                                                                   : PortMapper.SVC_I2CP;
         while (_running) {
             try {
                 _socket = getServerSocket();
                 
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug("ServerSocket created, before accept: " + _socket);
-                
+                if (_port > 0) {
+                    // not for DomainClientListenerRunner
+                    _context.portMapper().register(portMapperService, _socket.getInetAddress().getHostAddress(), _port);
+                }                
                 curDelay = 1000;
                 _listening = true;
                 while (_running) {
@@ -93,6 +99,7 @@ class ClientListenerRunner implements Runnable {
                         if (validate(socket)) {
                             if (_log.shouldLog(Log.DEBUG))
                                 _log.debug("Connection received");
+                            socket.setKeepAlive(true);
                             runConnection(socket);
                         } else {
                             if (_log.shouldLog(Log.WARN))
@@ -114,6 +121,11 @@ class ClientListenerRunner implements Runnable {
             } catch (IOException ioe) {
                 if (isAlive()) 
                     _log.error("Error listening on port " + _port, ioe);
+            } finally {
+                if (_port > 0) {
+                    // not for DomainClientListenerRunner
+                    _context.portMapper().unregister(portMapperService);
+                }                
             }
             
             _listening = false;
diff --git a/router/java/src/net/i2p/router/client/ClientManager.java b/router/java/src/net/i2p/router/client/ClientManager.java
index e94f202d9149322a52a67b8074be7b81138ed2a9..6665409a034c83d76b6d895d97b303a7e71bbfb7 100644
--- a/router/java/src/net/i2p/router/client/ClientManager.java
+++ b/router/java/src/net/i2p/router/client/ClientManager.java
@@ -55,9 +55,11 @@ class ClientManager {
     protected final List<ClientListenerRunner> _listeners;
     // Destination --> ClientConnectionRunner
     // Locked for adds/removes but not lookups
+    // If a runner has multiple sessions it will be in here multiple times, one for each dest
     private final Map<Destination, ClientConnectionRunner>  _runners;
     // Same as what's in _runners, but for fast lookup by Hash
     // Locked for adds/removes but not lookups
+    // If a runner has multiple sessions it will be in here multiple times, one for each dest
     private final Map<Hash, ClientConnectionRunner>  _runnersByHash;
     // ClientConnectionRunner for clients w/out a Dest yet
     private final Set<ClientConnectionRunner> _pendingRunners;
@@ -214,24 +216,44 @@ class ClientManager {
         }
     }
     
+    /**
+     *  Remove all sessions for this runner.
+     */
     public void unregisterConnection(ClientConnectionRunner runner) {
-        _log.warn("Unregistering (dropping) a client connection");
         synchronized (_pendingRunners) {
             _pendingRunners.remove(runner);
         }
-        if ( (runner.getConfig() != null) && (runner.getConfig().getDestination() != null) ) {
-            // after connection establishment
-            Destination dest = runner.getConfig().getDestination();
-            synchronized (_runners) {
-                SessionId id = runner.getSessionId();
-                if (id != null)
-                    _runnerSessionIds.remove(id);
+
+        List<SessionId> ids = runner.getSessionIds();
+        List<Destination> dests = runner.getDestinations();
+        if (_log.shouldLog(Log.WARN))
+            _log.warn("Unregistering (dropping) a client connection with ids: " + ids);
+        synchronized (_runners) {
+            for (SessionId id : ids) {
+                _runnerSessionIds.remove(id);
+            }
+            for (Destination dest : dests) {
                 _runners.remove(dest);
                 _runnersByHash.remove(dest.calculateHash());
             }
         }
     }
     
+    /**
+     *  Remove only the following session. Does not remove the runner if it has more.
+     *
+     *  @since 0.9.21
+     */
+    public void unregisterSession(SessionId id, Destination dest) {
+        if (_log.shouldLog(Log.WARN))
+            _log.warn("Unregistering client session "  + id);
+        synchronized (_runners) {
+            _runnerSessionIds.remove(id);
+            _runners.remove(dest);
+            _runnersByHash.remove(dest.calculateHash());
+        }
+    }
+    
     /**
      *  Add to the clients list. Check for a dup destination.
      *  Side effect: Sets the session ID of the runner.
@@ -239,8 +261,7 @@ class ClientManager {
      *
      *  @return SessionStatusMessage return code, 1 for success, != 1 for failure
      */
-    public int destinationEstablished(ClientConnectionRunner runner) {
-        Destination dest = runner.getConfig().getDestination();
+    public int destinationEstablished(ClientConnectionRunner runner, Destination dest) {
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("DestinationEstablished called for destination " + dest.calculateHash().toBase64());
 
@@ -255,9 +276,10 @@ class ClientManager {
             } else {
                 SessionId id = locked_getNextSessionId();
                 if (id != null) {
-                    runner.setSessionId(id);
+                    Hash h = dest.calculateHash();
+                    runner.setSessionId(h, id);
                     _runners.put(dest, runner);
-                    _runnersByHash.put(dest.calculateHash(), runner);
+                    _runnersByHash.put(h, runner);
                     rv = SessionStatusMessage.STATUS_CREATED;
                 } else {
                     rv = SessionStatusMessage.STATUS_REFUSED;
@@ -323,8 +345,11 @@ class ClientManager {
                 // sender went away
                 return;
             }
-            ClientMessage msg = new ClientMessage(toDest, payload, runner.getConfig(),
-                                                  runner.getConfig().getDestination(), msgId,
+            SessionConfig config = runner.getConfig(fromDest.calculateHash());
+            if (config == null)
+                return;
+            ClientMessage msg = new ClientMessage(toDest, payload, config,
+                                                  fromDest, msgId,
                                                   messageNonce, expiration, flags);
             _ctx.clientMessagePool().add(msg, true);
         }
@@ -362,7 +387,7 @@ class ClientManager {
             // note that receiveMessage() does not indicate a failure,
             // so a queue overflow is not recognized. we always return success.
             if (_from != null) {
-                _from.updateMessageDeliveryStatus(_msgId, _messageNonce, MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL);
+                _from.updateMessageDeliveryStatus(_fromDest, _msgId, _messageNonce, MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL);
             }
         }
     }
@@ -378,7 +403,8 @@ class ClientManager {
      *
      * @param dest Destination from which the LeaseSet's authorization should be requested
      * @param set LeaseSet with requested leases - this object must be updated to contain the 
-     *            signed version (as well as any changed/added/removed Leases)
+     *            signed version (as well as any changed/added/removed Leases).
+     *            The LeaseSet contains Leases only; it is unsigned and does not have the destination set.
      * @param timeout ms to wait before failing
      * @param onCreateJob Job to run after the LeaseSet is authorized
      * @param onFailedJob Job to run after the timeout passes without receiving authorization
@@ -386,20 +412,33 @@ class ClientManager {
     public void requestLeaseSet(Destination dest, LeaseSet set, long timeout, Job onCreateJob, Job onFailedJob) {
         ClientConnectionRunner runner = getRunner(dest);
         if (runner == null) {
-            if (_log.shouldLog(Log.ERROR))
+            if (_log.shouldLog(Log.WARN))
                 _log.warn("Cannot request the lease set, as we can't find a client runner for " 
                           + dest.calculateHash().toBase64() + ".  disconnected?");
             _ctx.jobQueue().addJob(onFailedJob);
         } else {
-            runner.requestLeaseSet(set, timeout, onCreateJob, onFailedJob);
+            runner.requestLeaseSet(dest.calculateHash(), set, timeout, onCreateJob, onFailedJob);
         }
     }
 
+    /**
+     * Request that a particular client authorize the Leases contained in the 
+     * LeaseSet.
+     *
+     * @param dest Destination from which the LeaseSet's authorization should be requested
+     * @param ls  LeaseSet with requested leases - this object must be updated to contain the 
+     *            signed version (as well as any changed/added/removed Leases).
+     *            The LeaseSet contains Leases only; it is unsigned and does not have the destination set.
+     */
     public void requestLeaseSet(Hash dest, LeaseSet ls) {
         ClientConnectionRunner runner = getRunner(dest);
         if (runner != null)  {
             // no need to fire off any jobs...
-            runner.requestLeaseSet(ls, REQUEST_LEASESET_TIMEOUT, null, null);
+            runner.requestLeaseSet(dest, ls, REQUEST_LEASESET_TIMEOUT, null, null);
+        } else {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Cannot request the lease set, as we can't find a client runner for " 
+                          + dest + ".  disconnected?");
         }
     }
     
@@ -425,7 +464,9 @@ class ClientManager {
         if (destHash == null) return true;
         ClientConnectionRunner runner = getRunner(destHash);
         if (runner == null) return true;
-        return !Boolean.parseBoolean(runner.getConfig().getOptions().getProperty(ClientManagerFacade.PROP_CLIENT_ONLY));
+        SessionConfig config = runner.getConfig(destHash);
+        if (config == null) return true;
+        return !Boolean.parseBoolean(config.getOptions().getProperty(ClientManagerFacade.PROP_CLIENT_ONLY));
     }
 
     /**
@@ -452,7 +493,7 @@ class ClientManager {
     public SessionConfig getClientSessionConfig(Destination dest) {
         ClientConnectionRunner runner = getRunner(dest);
         if (runner != null)
-            return runner.getConfig();
+            return runner.getConfig(dest.calculateHash());
         else
             return null;
     }
@@ -490,7 +531,7 @@ class ClientManager {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Delivering status " + status + " to " 
                            + fromDest.calculateHash() + " for message " + id);
-            runner.updateMessageDeliveryStatus(id, messageNonce, status);
+            runner.updateMessageDeliveryStatus(fromDest, id, messageNonce, status);
         } else {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Cannot deliver status " + status + " to " 
@@ -514,7 +555,7 @@ class ClientManager {
         if (dest != null) {
             ClientConnectionRunner runner = getRunner(dest);
             if (runner != null) {
-                runner.reportAbuse(reason, severity);
+                runner.reportAbuse(dest, reason, severity);
             }
         } else {
             for (Destination d : _runners.keySet()) {
@@ -592,21 +633,25 @@ class ClientManager {
 
         public void runJob() {
             ClientConnectionRunner runner;
-            if (_msg.getDestination() != null) 
-                runner = getRunner(_msg.getDestination());
+            Destination dest = _msg.getDestination();
+            if (dest != null) 
+                runner = getRunner(dest);
             else 
                 runner = getRunner(_msg.getDestinationHash());
 
             if (runner != null) {
                 //_ctx.statManager().addRateData("client.receiveMessageSize", 
                 //                                   _msg.getPayload().getSize(), 0);
-                runner.receiveMessage(_msg.getDestination(), null, _msg.getPayload());
+                if (dest != null)
+                    runner.receiveMessage(dest, null, _msg.getPayload());
+                else
+                    runner.receiveMessage(_msg.getDestinationHash(), null, _msg.getPayload());
             } else {
                 // no client connection...
                 // we should pool these somewhere...
                 if (_log.shouldLog(Log.WARN))
                     _log.warn("Message received but we don't have a connection to " 
-                              + _msg.getDestination() + "/" + _msg.getDestinationHash() 
+                              + dest + "/" + _msg.getDestinationHash() 
                               + " currently.  DROPPED");
             }
         }
@@ -634,9 +679,10 @@ class ClientManager {
                     continue;
                 if (runner.isDead())
                     continue;
-                if (runner.getConfig() == null)
+                SessionConfig cfg = runner.getPrimaryConfig();
+                if (cfg == null)
                     continue;  // simple session or no session yet
-                if (runner.getLeaseSet() == null)
+                if (runner.getLeaseSet(cfg.getDestination().calculateHash()) == null)
                     continue;  // don't confuse client while waiting for CreateLeaseSet msg
                 try {
                     // only send version if the client can handle it (0.8.7 or greater)
diff --git a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
index 6168ab7946e0c1ae6b264b4fee4d1acf357b11c9..385d3bd2bef8e07431415d25565e39206cc5c581 100644
--- a/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
+++ b/router/java/src/net/i2p/router/client/ClientManagerFacadeImpl.java
@@ -90,7 +90,7 @@ public class ClientManagerFacadeImpl extends ClientManagerFacade implements Inte
         for (Destination dest : _manager.getRunnerDestinations()) {
             ClientConnectionRunner runner = _manager.getRunner(dest);
             if ( (runner == null) || (runner.getIsDead())) continue;
-            LeaseSet ls = runner.getLeaseSet();
+            LeaseSet ls = runner.getLeaseSet(dest.calculateHash());
             if (ls == null)
                 continue; // still building
             long howLongAgo = _context.clock().now() - ls.getEarliestLeaseDate();
@@ -115,6 +115,7 @@ public class ClientManagerFacadeImpl extends ClientManagerFacade implements Inte
      * @param dest Destination from which the LeaseSet's authorization should be requested
      * @param set LeaseSet with requested leases - this object must be updated to contain the 
      *            signed version (as well as any changed/added/removed Leases)
+     *            The LeaseSet contains Leases only; it is unsigned and does not have the destination set.
      * @param timeout ms to wait before failing
      * @param onCreateJob Job to run after the LeaseSet is authorized
      * @param onFailedJob Job to run after the timeout passes without receiving authorization
@@ -126,6 +127,15 @@ public class ClientManagerFacadeImpl extends ClientManagerFacade implements Inte
             _log.error("Null manager on requestLeaseSet!");
     }
     
+    /**
+     * Request that a particular client authorize the Leases contained in the 
+     * LeaseSet.
+     *
+     * @param dest Destination from which the LeaseSet's authorization should be requested
+     * @param set LeaseSet with requested leases - this object must be updated to contain the 
+     *            signed version (as well as any changed/added/removed Leases).
+     *            The LeaseSet contains Leases only; it is unsigned and does not have the destination set.
+     */
     public void requestLeaseSet(Hash dest, LeaseSet set) { 
         if (_manager != null)
             _manager.requestLeaseSet(dest, set);
diff --git a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java
index e20039b6ecce28ed7b53a1ef35f2cceb300b5eda..d5697571e0981cddfbf463472550ef340f157595 100644
--- a/router/java/src/net/i2p/router/client/ClientMessageEventListener.java
+++ b/router/java/src/net/i2p/router/client/ClientMessageEventListener.java
@@ -8,6 +8,7 @@ package net.i2p.router.client;
  *
  */
 
+import java.util.List;
 import java.util.Properties;
 
 import net.i2p.CoreVersion;
@@ -30,6 +31,7 @@ import net.i2p.data.i2cp.I2CPMessageException;
 import net.i2p.data.i2cp.I2CPMessageReader;
 import net.i2p.data.i2cp.MessageId;
 import net.i2p.data.i2cp.MessagePayloadMessage;
+import net.i2p.data.i2cp.MessageStatusMessage;
 import net.i2p.data.i2cp.ReceiveMessageBeginMessage;
 import net.i2p.data.i2cp.ReceiveMessageEndMessage;
 import net.i2p.data.i2cp.ReconfigureSessionMessage;
@@ -80,7 +82,11 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
      *
      */
     public void messageReceived(I2CPMessageReader reader, I2CPMessage message) {
-        if (_runner.isDead()) return;
+        if (_runner.isDead()) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Received but runner dead: \n" + message);
+            return;
+        }
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("Message received: \n" + message);
         int type = message.getType();
@@ -190,7 +196,6 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
     private void handleSetDate(SetDateMessage message) {
         //_context.clock().setNow(message.getDate().getTime());
     }
-	
     
     /** 
      * Handle a CreateSessionMessage.
@@ -204,12 +209,13 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
      */
     private void handleCreateSession(CreateSessionMessage message) {
         SessionConfig in = message.getSessionConfig();
+        Destination dest = in.getDestination();
         if (in.verifySignature()) {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug("Signature verified correctly on create session message");
         } else {
             // For now, we do NOT send a SessionStatusMessage - see javadoc above
-            int itype = in.getDestination().getCertificate().getCertificateType();
+            int itype = dest.getCertificate().getCertificateType();
             SigType stype = SigType.getByCode(itype);
             if (stype == null || !stype.isAvailable()) {
                 _log.error("Client requested unsupported signature type " + itype);
@@ -235,7 +241,7 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
         if (!checkAuth(inProps))
             return;
 
-        SessionId id = _runner.getSessionId();
+        SessionId id = _runner.getSessionId(dest.calculateHash());
         if (id != null) {
             _runner.disconnectClient("Already have session " + id);
             return;
@@ -244,11 +250,22 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
         // Copy over the whole config structure so we don't later corrupt it on
         // the client side if we change settings or later get a
         // ReconfigureSessionMessage
-        SessionConfig cfg = new SessionConfig(in.getDestination());
+        SessionConfig cfg = new SessionConfig(dest);
         cfg.setSignature(in.getSignature());
         Properties props = new Properties();
-        props.putAll(in.getOptions());
+        boolean isPrimary = _runner.getSessionIds().isEmpty();
+        if (!isPrimary) {
+            // all the primary options, then the overrides from the alias
+            SessionConfig pcfg = _runner.getPrimaryConfig();
+            if (pcfg != null) {
+                props.putAll(pcfg.getOptions());
+            } else {
+                _log.error("no primary config?");
+            }
+        }
+        props.putAll(inProps);
         cfg.setOptions(props);
+        // this sets the session id
         int status = _runner.sessionEstablished(cfg);
         if (status != SessionStatusMessage.STATUS_CREATED) {
             // For now, we do NOT send a SessionStatusMessage - see javadoc above
@@ -264,11 +281,33 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
             _runner.disconnectClient(msg);
             return;
         }
-        sendStatusMessage(status);
+        // get the new session ID
+        id = _runner.getSessionId(dest.calculateHash());
 
         if (_log.shouldLog(Log.INFO))
-            _log.info("Session " + _runner.getSessionId() + " established for " + _runner.getDestHash());
-        startCreateSessionJob();
+            _log.info("Session " + id + " established for " + dest.calculateHash());
+        if (isPrimary) {
+            sendStatusMessage(id, status);
+            startCreateSessionJob(cfg);
+        } else {
+            SessionConfig pcfg = _runner.getPrimaryConfig();
+            if (pcfg != null) {
+                ClientTunnelSettings settings = new ClientTunnelSettings(dest.calculateHash());
+                settings.readFromProperties(props);
+                // addAlias() sends the create lease set msg, so we have to send the SMS first
+                sendStatusMessage(id, status);
+                boolean ok = _context.tunnelManager().addAlias(dest, settings, pcfg.getDestination());
+                if (!ok) {
+                    _log.error("Add alias failed");
+                    // FIXME cleanup
+                }
+            } else {
+                _log.error("no primary config?");
+                status = SessionStatusMessage.STATUS_INVALID;
+                sendStatusMessage(id, status);
+                // FIXME cleanup
+            }
+        }
     }
     
     /**
@@ -314,8 +353,8 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
      *  @since 0.9.8
      *
      */
-    protected void startCreateSessionJob() {
-        _context.jobQueue().addJob(new CreateSessionJob(_context, _runner));
+    protected void startCreateSessionJob(SessionConfig config) {
+        _context.jobQueue().addJob(new CreateSessionJob(_context, config));
     }
     
     /**
@@ -324,11 +363,32 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
      *
      */
     private void handleSendMessage(SendMessageMessage message) {
-        SessionConfig cfg = _runner.getConfig();
+        SessionId sid = message.getSessionId();
+        SessionConfig cfg = _runner.getConfig(sid);
         if (cfg == null) {
+            List<SessionId> current = _runner.getSessionIds();
+            String msg = "SendMessage invalid session: " + sid + " current: " + current;
             if (_log.shouldLog(Log.ERROR))
-                _log.error("SendMessage w/o session");
-            _runner.disconnectClient("SendMessage w/o session");
+                _log.error(msg);
+            // Just drop the message for now, don't kill the whole socket...
+            // bugs on client side, esp. prior to 0.9.21, may cause sending
+            // of messages before the session is established
+            //_runner.disconnectClient(msg);
+            // do this instead:
+            if (sid != null && message.getNonce() > 0) {
+                MessageStatusMessage status = new MessageStatusMessage();
+                status.setMessageId(_runner.getNextMessageId());
+                status.setSessionId(sid.getSessionId());
+                status.setSize(0);
+                status.setNonce(message.getNonce()); 
+                status.setStatus(MessageStatusMessage.STATUS_SEND_FAILURE_BAD_SESSION);
+                try {
+                    _runner.doSend(status);
+                } catch (I2CPMessageException ime) {
+                    if (_log.shouldLog(Log.WARN))
+                        _log.warn("Error writing out the message status message", ime);
+                }
+            }
             return;
         }
         if (_log.shouldLog(Log.DEBUG))
@@ -336,10 +396,11 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
         long beforeDistribute = _context.clock().now();
         MessageId id = _runner.distributeMessage(message);
         long timeToDistribute = _context.clock().now() - beforeDistribute;
-        _runner.ackSendMessage(id, message.getNonce());
+        // TODO validate session id
+        _runner.ackSendMessage(sid, id, message.getNonce());
         _context.statManager().addRateData("client.distributeTime", timeToDistribute);
-        if ( (timeToDistribute > 50) && (_log.shouldLog(Log.INFO)) )
-            _log.info("Took too long to distribute the message (which holds up the ack): " + timeToDistribute);
+        if ( (timeToDistribute > 50) && (_log.shouldLog(Log.DEBUG)) )
+            _log.debug("Took too long to distribute the message (which holds up the ack): " + timeToDistribute);
     }
 
     
@@ -350,10 +411,11 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
     private void handleReceiveBegin(ReceiveMessageBeginMessage message) {
         if (_runner.isDead()) return;
         if (_log.shouldLog(Log.DEBUG))
-            _log.debug("Handling recieve begin: id = " + message.getMessageId());
+            _log.debug("Handling receive begin: id = " + message.getMessageId());
         MessagePayloadMessage msg = new MessagePayloadMessage();
         msg.setMessageId(message.getMessageId());
-        msg.setSessionId(_runner.getSessionId().getSessionId());
+        // TODO validate session id
+        msg.setSessionId(message.getSessionId());
         Payload payload = _runner.getPayload(new MessageId(message.getMessageId()));
         if (payload == null) {
             if (_log.shouldLog(Log.WARN))
@@ -372,7 +434,7 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
     }
     
     /**
-     * The client told us that the message has been recieved completely.  This currently
+     * The client told us that the message has been received completely.  This currently
      * does not do any security checking prior to removing the message from the 
      * pending queue, though it should.
      *
@@ -382,24 +444,38 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
     }
     
     private void handleDestroySession(DestroySessionMessage message) {
-        if (_log.shouldLog(Log.INFO))
-            _log.info("Destroying client session " + _runner.getSessionId());
-        _runner.stopRunning();
+        SessionId id = message.getSessionId();
+        if (id != null) {
+            _runner.removeSession(id);
+        } else {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("destroy session with null ID");
+        }
+        int left = _runner.getSessionIds().size();
+        if (left <= 0 || id == null) {
+            _runner.stopRunning();
+        } else {
+            if (_log.shouldLog(Log.INFO))
+                _log.info("Still " + left + " sessions left");
+        }
     }
     
     /** override for testing */
-    protected void handleCreateLeaseSet(CreateLeaseSetMessage message) {	
+    protected void handleCreateLeaseSet(CreateLeaseSetMessage message) {
         if ( (message.getLeaseSet() == null) || (message.getPrivateKey() == null) || (message.getSigningPrivateKey() == null) ) {
             if (_log.shouldLog(Log.ERROR))
                 _log.error("Null lease set granted: " + message);
             _runner.disconnectClient("Invalid CreateLeaseSetMessage");
             return;
         }
-        SessionConfig cfg = _runner.getConfig();
+        SessionId id = message.getSessionId();
+        SessionConfig cfg = _runner.getConfig(id);
         if (cfg == null) {
+            List<SessionId> current = _runner.getSessionIds();
+            String msg = "CreateLeaseSet invalid session: " + id + " current: " + current;
             if (_log.shouldLog(Log.ERROR))
-                _log.error("CreateLeaseSet w/o session");
-            _runner.disconnectClient("CreateLeaseSet w/o session");
+                _log.error(msg);
+            _runner.disconnectClient(msg);
             return;
         }
         Destination dest = cfg.getDestination();
@@ -446,8 +522,7 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
             return;
         }
         if (_log.shouldLog(Log.INFO))
-            _log.info("New lease set granted for destination " 
-                      + _runner.getDestHash());
+            _log.info("New lease set granted for destination " + dest);
 
         // leaseSetCreated takes care of all the LeaseRequestState stuff (including firing any jobs)
         _runner.leaseSetCreated(message.getLeaseSet());
@@ -455,6 +530,7 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
 
     /** override for testing */
     protected void handleDestLookup(DestLookupMessage message) {
+        // no session id in DLM
         _context.jobQueue().addJob(new LookupDestJob(_context, _runner, message.getHash(),
                                                      _runner.getDestHash()));
     }
@@ -464,10 +540,23 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
      * @since 0.9.11
      */
     protected void handleHostLookup(HostLookupMessage message) {
+        SessionId sid = message.getSessionId();
+        Hash h;
+        if (sid != null) {
+            h = _runner.getDestHash(sid);
+        } else {
+            // fixup if necessary
+            if (message.getReqID() >= 0)
+                sid = new SessionId(65535);
+            h = null;
+        }
+        if (h == null) {
+            h = _runner.getDestHash();
+            // h may still be null, an LS lookup for b32 will go out expl. tunnels
+        }
         _context.jobQueue().addJob(new LookupDestJob(_context, _runner, message.getReqID(),
-                                                     message.getTimeout(), message.getSessionId(),
-                                                     message.getHash(), message.getHostname(),
-                                                     _runner.getDestHash()));
+                                                     message.getTimeout(), sid,
+                                                     message.getHash(), message.getHostname(), h));
     }
 
     /**
@@ -482,23 +571,27 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
      * In-JVM client side must promote defaults to the primary map.
      */
     private void handleReconfigureSession(ReconfigureSessionMessage message) {
-        SessionConfig cfg = _runner.getConfig();
+        SessionId id = message.getSessionId();
+        SessionConfig cfg = _runner.getConfig(id);
         if (cfg == null) {
+            List<SessionId> current = _runner.getSessionIds();
+            String msg = "ReconfigureSession invalid session: " + id + " current: " + current;
             if (_log.shouldLog(Log.ERROR))
-                _log.error("ReconfigureSession w/o session");
-            _runner.disconnectClient("ReconfigureSession w/o session");
+                _log.error(msg);
+            //sendStatusMessage(id, SessionStatusMessage.STATUS_INVALID);
+            _runner.disconnectClient(msg);
             return;
         }
         if (_log.shouldLog(Log.INFO))
             _log.info("Updating options - old: " + cfg + " new: " + message.getSessionConfig());
         if (!message.getSessionConfig().getDestination().equals(cfg.getDestination())) {
             _log.error("Dest mismatch");
-            sendStatusMessage(SessionStatusMessage.STATUS_INVALID);
+            sendStatusMessage(id, SessionStatusMessage.STATUS_INVALID);
             _runner.stopRunning();
             return;
         }
+        Hash dest = cfg.getDestination().calculateHash();
         cfg.getOptions().putAll(message.getSessionConfig().getOptions());
-        Hash dest = _runner.getDestHash();
         ClientTunnelSettings settings = new ClientTunnelSettings(dest);
         Properties props = new Properties();
         props.putAll(cfg.getOptions());
@@ -507,14 +600,11 @@ class ClientMessageEventListener implements I2CPMessageReader.I2CPMessageEventLi
                                                     settings.getInboundSettings());
         _context.tunnelManager().setOutboundSettings(dest,
                                                      settings.getOutboundSettings());
-        sendStatusMessage(SessionStatusMessage.STATUS_UPDATED);
+        sendStatusMessage(id, SessionStatusMessage.STATUS_UPDATED);
     }
     
-    private void sendStatusMessage(int status) {
+    private void sendStatusMessage(SessionId id, int status) {
         SessionStatusMessage msg = new SessionStatusMessage();
-        SessionId id = _runner.getSessionId();
-        if (id == null)
-            id = ClientManager.UNKNOWN_SESSION_ID;
         msg.setSessionId(id);
         msg.setStatus(status);
         try {
diff --git a/router/java/src/net/i2p/router/client/CreateSessionJob.java b/router/java/src/net/i2p/router/client/CreateSessionJob.java
index af01a496cb71af4ab4510239ae7d41bb7af0d302..558dba8e7249dd5b71073370fcee159b354f792d 100644
--- a/router/java/src/net/i2p/router/client/CreateSessionJob.java
+++ b/router/java/src/net/i2p/router/client/CreateSessionJob.java
@@ -26,25 +26,20 @@ import net.i2p.util.Log;
  */
 class CreateSessionJob extends JobImpl {
     private final Log _log;
-    private final ClientConnectionRunner _runner;
+    private final SessionConfig _config;
     
-    public CreateSessionJob(RouterContext context, ClientConnectionRunner runner) {
+    public CreateSessionJob(RouterContext context, SessionConfig config) {
         super(context);
         _log = context.logManager().getLog(CreateSessionJob.class);
-        _runner = runner;
+        _config = config;
         if (_log.shouldLog(Log.DEBUG))
-            _log.debug("CreateSessionJob for runner " + _runner + " / config: " + _runner.getConfig());
+            _log.debug("CreateSessionJob for config: " + config);
     }
     
     public String getName() { return "Request tunnels for a new client"; }
+
     public void runJob() {
-        SessionConfig cfg = _runner.getConfig();
-        if ( (cfg == null) || (cfg.getDestination() == null) ) {
-            if (_log.shouldLog(Log.ERROR))
-                _log.error("No session config on runner " + _runner);
-            return;
-        }
-        Hash dest = cfg.getDestination().calculateHash();
+        Hash dest = _config.getDestination().calculateHash();
         if (_log.shouldLog(Log.INFO))
             _log.info("Requesting lease set for destination " + dest);
         ClientTunnelSettings settings = new ClientTunnelSettings(dest);
@@ -61,10 +56,10 @@ class CreateSessionJob extends JobImpl {
         // XXX props.putAll(Router.getInstance().getConfigMap());
         
         // override them by the client's settings
-        props.putAll(cfg.getOptions());
+        props.putAll(_config.getOptions());
         
         // and load 'em up (using anything not yet set as the software defaults)
         settings.readFromProperties(props);
-        getContext().tunnelManager().buildTunnels(cfg.getDestination(), settings);
+        getContext().tunnelManager().buildTunnels(_config.getDestination(), settings);
     }
 }
diff --git a/router/java/src/net/i2p/router/client/LeaseRequestState.java b/router/java/src/net/i2p/router/client/LeaseRequestState.java
index 03bc2e4fa7fba35a4a7aeed85955e8eea909b38b..2fb6b9760728529e1f71ec96d3fe15ad90ef7f0b 100644
--- a/router/java/src/net/i2p/router/client/LeaseRequestState.java
+++ b/router/java/src/net/i2p/router/client/LeaseRequestState.java
@@ -30,6 +30,9 @@ class LeaseRequestState {
 
     /**
      *  @param expiration absolute time, when the request expires (not when the LS expires)
+     *  @param requested LeaseSet with requested leases - this object must be updated to contain the 
+     *             signed version (as well as any changed/added/removed Leases)
+     *             The LeaseSet contains Leases and destination only, it is unsigned.
      */
     public LeaseRequestState(Job onGranted, Job onFailed, long expiration, LeaseSet requested) {
         _onGranted = onGranted;
@@ -40,6 +43,7 @@ class LeaseRequestState {
     
     /** created lease set from client - FIXME always null */
     public LeaseSet getGranted() { return _grantedLeaseSet; }
+
     /** FIXME unused - why? */
     public void setGranted(LeaseSet ls) { _grantedLeaseSet = ls; }
 
diff --git a/router/java/src/net/i2p/router/client/MessageReceivedJob.java b/router/java/src/net/i2p/router/client/MessageReceivedJob.java
index 0ee148282ab53dcb51fa59a36d2b5faf43c0c12e..3614d1693077e06f699c8ba194ab71d6d0e75da4 100644
--- a/router/java/src/net/i2p/router/client/MessageReceivedJob.java
+++ b/router/java/src/net/i2p/router/client/MessageReceivedJob.java
@@ -14,6 +14,7 @@ import net.i2p.data.i2cp.I2CPMessageException;
 import net.i2p.data.i2cp.MessageId;
 import net.i2p.data.i2cp.MessagePayloadMessage;
 import net.i2p.data.i2cp.MessageStatusMessage;
+import net.i2p.data.i2cp.SessionId;
 import net.i2p.router.JobImpl;
 import net.i2p.router.RouterContext;
 import net.i2p.util.Log;
@@ -26,14 +27,20 @@ import net.i2p.util.Log;
 class MessageReceivedJob extends JobImpl {
     private final Log _log;
     private final ClientConnectionRunner _runner;
+    private final Destination _toDest;
     private final Payload _payload;
     private final boolean _sendDirect;
 
+    /**
+     *  @param toDest non-null, required to pick session
+     *  @param fromDest ignored, generally null
+     */
     public MessageReceivedJob(RouterContext ctx, ClientConnectionRunner runner, Destination toDest,
                               Destination fromDest, Payload payload, boolean sendDirect) {
         super(ctx);
         _log = ctx.logManager().getLog(MessageReceivedJob.class);
         _runner = runner;
+        _toDest = toDest;
         _payload = payload;
         _sendDirect = sendDirect;
     }
@@ -43,8 +50,8 @@ class MessageReceivedJob extends JobImpl {
     public void runJob() {
         if (_runner.isDead()) return;
         MessageId id = null;
-        long nextID = _runner.getNextMessageId();
         try {
+            long nextID = _runner.getNextMessageId();
             if (_sendDirect) {
                 sendMessage(nextID);
             } else {
@@ -55,7 +62,7 @@ class MessageReceivedJob extends JobImpl {
         } catch (I2CPMessageException ime) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Error writing out the message", ime);
-            if (!_sendDirect)
+            if (id != null && !_sendDirect)
                 _runner.removePayload(id);
         }
     }
@@ -69,7 +76,13 @@ class MessageReceivedJob extends JobImpl {
         //               + " (with nonce=1)", new Exception("available"));
         MessageStatusMessage msg = new MessageStatusMessage();
         msg.setMessageId(id.getMessageId());
-        msg.setSessionId(_runner.getSessionId().getSessionId());
+        SessionId sid = _runner.getSessionId(_toDest.calculateHash());
+        if (sid == null) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("No session for " + _toDest.calculateHash());
+            return;
+        }
+        msg.setSessionId(sid.getSessionId());
         msg.setSize(size);
         // has to be >= 0, it is initialized to -1
         msg.setNonce(1);
@@ -84,7 +97,13 @@ class MessageReceivedJob extends JobImpl {
     private void sendMessage(long id) throws I2CPMessageException {
         MessagePayloadMessage msg = new MessagePayloadMessage();
         msg.setMessageId(id);
-        msg.setSessionId(_runner.getSessionId().getSessionId());
+        SessionId sid = _runner.getSessionId(_toDest.calculateHash());
+        if (sid == null) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("No session for " + _toDest.calculateHash());
+            return;
+        }
+        msg.setSessionId(sid.getSessionId());
         msg.setPayload(_payload);
         _runner.doSend(msg);
     }
diff --git a/router/java/src/net/i2p/router/client/ReportAbuseJob.java b/router/java/src/net/i2p/router/client/ReportAbuseJob.java
index 8dd36ac3cad98fb19261f39a63696d5f0372be6f..c24e5e9bafebe0916c17ce87d8b6104625b0d540 100644
--- a/router/java/src/net/i2p/router/client/ReportAbuseJob.java
+++ b/router/java/src/net/i2p/router/client/ReportAbuseJob.java
@@ -8,10 +8,12 @@ package net.i2p.router.client;
  *
  */
 
+import net.i2p.data.Destination;
 import net.i2p.data.i2cp.AbuseReason;
 import net.i2p.data.i2cp.AbuseSeverity;
 import net.i2p.data.i2cp.I2CPMessageException;
 import net.i2p.data.i2cp.ReportAbuseMessage;
+import net.i2p.data.i2cp.SessionId;
 import net.i2p.router.JobImpl;
 import net.i2p.router.RouterContext;
 import net.i2p.util.Log;
@@ -23,17 +25,22 @@ import net.i2p.util.Log;
 class ReportAbuseJob extends JobImpl {
     private final Log _log;
     private final ClientConnectionRunner _runner;
+    private final Destination _dest;
     private final String _reason;
     private final int _severity;
-    public ReportAbuseJob(RouterContext context, ClientConnectionRunner runner, String reason, int severity) {
+
+    public ReportAbuseJob(RouterContext context, ClientConnectionRunner runner,
+                          Destination dest, String reason, int severity) {
         super(context);
         _log = context.logManager().getLog(ReportAbuseJob.class);
         _runner = runner;
+        _dest = dest;
         _reason = reason;
         _severity = severity;
     }
     
     public String getName() { return "Report Abuse"; }
+
     public void runJob() {
         if (_runner.isDead()) return;
         AbuseReason res = new AbuseReason();
@@ -41,9 +48,11 @@ class ReportAbuseJob extends JobImpl {
         AbuseSeverity sev = new AbuseSeverity();
         sev.setSeverity(_severity);
         ReportAbuseMessage msg = new ReportAbuseMessage();
-        msg.setMessageId(null);
         msg.setReason(res);
-        msg.setSessionId(_runner.getSessionId());
+        SessionId id = _runner.getSessionId(_dest.calculateHash());
+        if (id == null)
+            return;
+        msg.setSessionId(id);
         msg.setSeverity(sev);
         try {
             _runner.doSend(msg);
diff --git a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
index 9b07978f661f3efea7c03b1638c38d1d7c784bcb..81a3b6354f2ce8924c1da6167ab8f57b5f401cac 100644
--- a/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
+++ b/router/java/src/net/i2p/router/client/RequestLeaseSetJob.java
@@ -16,6 +16,7 @@ import net.i2p.data.i2cp.I2CPMessage;
 import net.i2p.data.i2cp.I2CPMessageException;
 import net.i2p.data.i2cp.RequestLeaseSetMessage;
 import net.i2p.data.i2cp.RequestVariableLeaseSetMessage;
+import net.i2p.data.i2cp.SessionId;
 import net.i2p.router.JobImpl;
 import net.i2p.router.RouterContext;
 import net.i2p.util.Log;
@@ -63,13 +64,16 @@ class RequestLeaseSetJob extends JobImpl {
         //    _log.debug("Adding fudge " + fudge);
         endTime += fudge;
 
+        SessionId id = _runner.getSessionId(requested.getDestination().calculateHash());
+        if (id == null)
+            return;
         I2CPMessage msg;
         if (getContext().getProperty(PROP_VARIABLE, DFLT_VARIABLE) &&
             (_runner instanceof QueuedClientConnectionRunner ||
              RequestVariableLeaseSetMessage.isSupported(_runner.getClientVersion()))) {
             // new style - leases will have individual expirations
             RequestVariableLeaseSetMessage rmsg = new RequestVariableLeaseSetMessage();
-            rmsg.setSessionId(_runner.getSessionId());
+            rmsg.setSessionId(id);
             for (int i = 0; i < requested.getLeaseCount(); i++) {
                 Lease lease = requested.getLease(i);
                 if (lease.getEndDate().getTime() < endTime) {
@@ -90,7 +94,7 @@ class RequestLeaseSetJob extends JobImpl {
             RequestLeaseSetMessage rmsg = new RequestLeaseSetMessage();
             Date end = new Date(endTime);
             rmsg.setEndDate(end);
-            rmsg.setSessionId(_runner.getSessionId());
+            rmsg.setSessionId(id);
             for (int i = 0; i < requested.getLeaseCount(); i++) {
                 Lease lease = requested.getLease(i);
                 rmsg.addEndpoint(lease.getGateway(),
@@ -144,8 +148,7 @@ class RequestLeaseSetJob extends JobImpl {
                 CheckLeaseRequestStatus.this.getContext().statManager().addRateData("client.requestLeaseSetTimeout", 1);
                 if (_log.shouldLog(Log.ERROR)) {
                     long waited = System.currentTimeMillis() - _start;
-                    _log.error("Failed to receive a leaseSet in the time allotted (" + waited + "): " + _requestState + " for " 
-                             + _runner.getConfig().getDestination().calculateHash().toBase64());
+                    _log.error("Failed to receive a leaseSet in the time allotted (" + waited + "): " + _requestState);
                 }
                 if (_requestState.getOnFailed() != null)
                     RequestLeaseSetJob.this.getContext().jobQueue().addJob(_requestState.getOnFailed());
diff --git a/router/java/src/net/i2p/router/dummy/DummyTunnelManagerFacade.java b/router/java/src/net/i2p/router/dummy/DummyTunnelManagerFacade.java
index 5de3db1a35e950519684e41583608fef4690e5f7..96dceea18e8aa95ac0259a70ec969af99cca639e 100644
--- a/router/java/src/net/i2p/router/dummy/DummyTunnelManagerFacade.java
+++ b/router/java/src/net/i2p/router/dummy/DummyTunnelManagerFacade.java
@@ -50,6 +50,8 @@ public class DummyTunnelManagerFacade implements TunnelManagerFacade {
     public int getOutboundClientTunnelCount(Hash destination) { return 0; }
     public long getLastParticipatingExpiration() { return -1; }
     public void buildTunnels(Destination client, ClientTunnelSettings settings) {}
+    public boolean addAlias(Destination dest, ClientTunnelSettings settings, Destination existingClient) { return false; }
+    public void removeAlias(Destination dest) {}
     public TunnelPoolSettings getInboundSettings() { return null; }
     public TunnelPoolSettings getOutboundSettings() { return null; }
     public TunnelPoolSettings getInboundSettings(Hash client) { return null; }
diff --git a/router/java/src/net/i2p/router/dummy/VMCommSystem.java b/router/java/src/net/i2p/router/dummy/VMCommSystem.java
index e6c310d7c7321c6a97b2b951925bd35f72993d03..13b8aff0a244c6b748e8a240548e541c3d80eb90 100644
--- a/router/java/src/net/i2p/router/dummy/VMCommSystem.java
+++ b/router/java/src/net/i2p/router/dummy/VMCommSystem.java
@@ -122,7 +122,7 @@ public class VMCommSystem extends CommSystemFacade {
 
                 _ctx.inNetMessagePool().add(msg, null, _from);
             } catch (Exception e) {
-                _log.error("wtf, error reading/formatting a VM message?", e);
+                _log.error("Error reading/formatting a VM message? Something is not right...", e);
             }
         }
         public String getName() { return "Receive Message"; }
diff --git a/router/java/src/net/i2p/router/message/SendMessageDirectJob.java b/router/java/src/net/i2p/router/message/SendMessageDirectJob.java
index cc7a337cc5ef7147ea021bbaab8c47e1d5995a87..6a4871e6c4d4703c21582482ed7e177ba86b22b6 100644
--- a/router/java/src/net/i2p/router/message/SendMessageDirectJob.java
+++ b/router/java/src/net/i2p/router/message/SendMessageDirectJob.java
@@ -43,22 +43,40 @@ public class SendMessageDirectJob extends JobImpl {
     private boolean _sent;
     private long _searchOn;
     
+    /**
+     * @param toPeer may be ourselves
+     */
     public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, int timeoutMs, int priority) {
         this(ctx, message, toPeer, null, null, null, null, timeoutMs, priority);
     }
 
-    public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, ReplyJob onSuccess, Job onFail, MessageSelector selector, int timeoutMs, int priority) {
+    /**
+     * @param toPeer may be ourselves
+     * @param onSuccess may be null
+     * @param onFail may be null
+     * @param selector be null
+     */
+    public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, ReplyJob onSuccess,
+                                Job onFail, MessageSelector selector, int timeoutMs, int priority) {
         this(ctx, message, toPeer, null, onSuccess, onFail, selector, timeoutMs, priority);
     }
 
-    public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, Job onSend, ReplyJob onSuccess, Job onFail, MessageSelector selector, int timeoutMs, int priority) {
+    /**
+     * @param toPeer may be ourselves
+     * @param onSend may be null
+     * @param onSuccess may be null
+     * @param onFail may be null
+     * @param selector be null
+     */
+    public SendMessageDirectJob(RouterContext ctx, I2NPMessage message, Hash toPeer, Job onSend, ReplyJob onSuccess,
+                                Job onFail, MessageSelector selector, int timeoutMs, int priority) {
         super(ctx);
         _log = getContext().logManager().getLog(SendMessageDirectJob.class);
         _message = message;
         _targetHash = toPeer;
         if (timeoutMs < 10*1000) {
             if (_log.shouldLog(Log.WARN))
-                _log.warn("Very little time given [" + timeoutMs + "], resetting to 5s", new Exception("stingy bastard"));
+                _log.warn("Very little time given [" + timeoutMs + "], resetting to 5s", new Exception("stingy caller!"));
             _expiration = ctx.clock().now() + 10*1000;
         } else {
             _expiration = timeoutMs + ctx.clock().now();
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java
index bb75b682535f1b699584aba6f99a29d5076cfb0e..768511fc9ca53347986d1152ecef78c0b3d20f5e 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/ExploreJob.java
@@ -78,7 +78,7 @@ class ExploreJob extends SearchJob {
      * @param expiration when the search should stop
      * @param peer the peer to send it to
      *
-     * @return a DatabaseLookupMessage or GarlicMessage
+     * @return a DatabaseLookupMessage or GarlicMessage or null on error
      */
     @Override
     protected I2NPMessage buildMessage(TunnelId replyTunnelId, Hash replyGateway, long expiration, RouterInfo peer) {
@@ -146,6 +146,7 @@ class ExploreJob extends SearchJob {
                               ' ' + sess.key + ' ' + sess.tag);
                 msg.setReplySession(sess.key, sess.tag);
             }
+            // may be null
             outMsg = MessageWrapper.wrap(getContext(), msg, peer);
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug(getJobId() + ": Encrypted exploratory DLM for " + getState().getTarget() + " to " +
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java
index 99d8c62658a6c959a1e3369c9d6d7873e2bd19ac..37ce81bf75709af2005fd5410de7d7b220a7b1ce 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillDatabaseStoreMessageHandler.java
@@ -28,7 +28,7 @@ public class FloodfillDatabaseStoreMessageHandler implements HandlerJobBuilder {
         _context = context;
         _facade = facade;
         // following are for HFDSMJ
-        context.statManager().createRateStat("netDb.storeHandled", "How many netDb store messages have we handled?", "NetworkDatabase", new long[] { 60*60*1000l });
+        context.statManager().createRateStat("netDb.storeHandled", "How many netDb store messages have we handled?", "NetworkDatabase", new long[] { 60*1000, 60*60*1000l });
         context.statManager().createRateStat("netDb.storeLeaseSetHandled", "How many leaseSet store messages have we handled?", "NetworkDatabase", new long[] { 60*60*1000l });
         context.statManager().createRateStat("netDb.storeRouterInfoHandled", "How many routerInfo store messages have we handled?", "NetworkDatabase", new long[] { 60*60*1000l });
         context.statManager().createRateStat("netDb.storeRecvTime", "How long it takes to handle the local store part of a dbStore?", "NetworkDatabase", new long[] { 60*60*1000l });
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
index 53eb0be4a2278182c03292ecf2e774529e5ad9cb..2c1a929d9b61088870b7591d5ac6b0d7215563aa 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
@@ -6,6 +6,7 @@ import net.i2p.crypto.SigType;
 import net.i2p.data.Hash;
 import net.i2p.data.router.RouterAddress;
 import net.i2p.data.router.RouterInfo;
+import net.i2p.router.Job;
 import net.i2p.router.JobImpl;
 import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
@@ -55,13 +56,27 @@ class FloodfillMonitorJob extends JobImpl {
             } else {
                 getContext().router().eventLog().addEvent(EventLog.NOT_FLOODFILL);
             }
-            getContext().router().rebuildRouterInfo();
+            getContext().router().rebuildRouterInfo(true);
+            Job routerInfoFlood = new FloodfillRouterInfoFloodJob(getContext(), _facade);
+            if(getContext().router().getUptime() < 5*60*1000) {
+                // Needed to prevent race if router.floodfillParticipant=true (not auto)
+                routerInfoFlood.getTiming().setStartAfter(getContext().clock().now() + 5*60*1000);
+                getContext().jobQueue().addJob(routerInfoFlood);
+                if(_log.shouldLog(Log.DEBUG)) {
+                    _log.logAlways(Log.DEBUG, "Deferring our FloodfillRouterInfoFloodJob run because of low uptime.");
+                }
+            } else {
+                routerInfoFlood.runJob();
+                if(_log.shouldLog(Log.DEBUG)) {
+                    _log.logAlways(Log.DEBUG, "Running FloodfillRouterInfoFloodJob");
+                }
+            }
         }
         if (_log.shouldLog(Log.INFO))
             _log.info("Should we be floodfill? " + ff);
         int delay = (REQUEUE_DELAY / 2) + getContext().random().nextInt(REQUEUE_DELAY);
         // there's a lot of eligible non-floodfills, keep them from all jumping in at once
-        // To do: somehow assess the size of the network to make this adaptive?
+        // TODO: somehow assess the size of the network to make this adaptive?
         if (!ff)
             delay *= 4; // this was 7, reduced for moar FFs --zab
         requeue(delay);
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java
index a02013a5f82fe1049ab39617f6dd6f9c09c278e7..0df3b32902ded2216089a7aa2382dad0834439fa 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java
@@ -40,7 +40,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
      *  Was 7 through release 0.9; 5 for 0.9.1.
      *  4 as of 0.9.2; 3 as of 0.9.9
      */
-    private static final int MAX_TO_FLOOD = 3;
+    public static final int MAX_TO_FLOOD = 3;
     
     private static final int FLOOD_PRIORITY = OutNetMessage.PRIORITY_NETDB_FLOOD;
     private static final int FLOOD_TIMEOUT = 30*1000;
@@ -129,7 +129,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
      */
     @Override
     public void publish(RouterInfo localRouterInfo) throws IllegalArgumentException {
-        if (localRouterInfo == null) throw new IllegalArgumentException("wtf, null localRouterInfo?");
+        if (localRouterInfo == null) throw new IllegalArgumentException("impossible: null localRouterInfo?");
         // should this be after super? why not publish locally?
         if (_context.router().isHidden()) return; // DE-nied!
         super.publish(localRouterInfo);
@@ -173,7 +173,8 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
      *  @since 0.7.11
      */
     boolean shouldThrottleLookup(Hash from, TunnelId id) {
-        return _lookupThrottler.shouldThrottle(from, id);
+        // null before startup
+        return _lookupThrottler == null || _lookupThrottler.shouldThrottle(from, id);
     }
 
     /**
@@ -277,7 +278,7 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad
     @Override
     protected PeerSelector createPeerSelector() { return new FloodfillPeerSelector(_context); }
     
-    synchronized void setFloodfillEnabled(boolean yes) {
+    public synchronized void setFloodfillEnabled(boolean yes) {
         _floodfillEnabled = yes;
         if (yes && _floodThrottler == null) {
             _floodThrottler = new FloodThrottler();
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillRouterInfoFloodJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillRouterInfoFloodJob.java
new file mode 100644
index 0000000000000000000000000000000000000000..9ac4f739122b5f52ebc6f992ebe4f9e8c52cfeb0
--- /dev/null
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillRouterInfoFloodJob.java
@@ -0,0 +1,64 @@
+package net.i2p.router.networkdb.kademlia;
+
+import java.util.Collections;
+import java.util.List;
+
+import net.i2p.data.Hash;
+import net.i2p.data.i2np.DatabaseStoreMessage;
+import net.i2p.data.router.RouterAddress;
+import net.i2p.data.router.RouterInfo;
+import net.i2p.router.JobImpl;
+import net.i2p.router.OutNetMessage;
+import net.i2p.router.Router;
+import net.i2p.router.RouterContext;
+import net.i2p.stat.Rate;
+import net.i2p.stat.RateStat;
+import net.i2p.util.Log;
+
+/**
+ * Job to flood nearby floodfill routers with our RI.
+ * Speeds up integration of new ffs. Created for #1195.
+ * Also called when opting out of ff to call off the hounds ASAP.
+ * Currently floods FNDF.MAX_TO_FLOOD * 2 routers nearest to us.
+ *
+ * @since 0.9.21
+ */
+class FloodfillRouterInfoFloodJob extends JobImpl {
+    private final Log _log;
+    private final FloodfillNetworkDatabaseFacade _facade;
+    
+    private static final int FLOOD_PEERS = 2 * FloodfillNetworkDatabaseFacade.MAX_TO_FLOOD;
+    
+    public FloodfillRouterInfoFloodJob(RouterContext context, FloodfillNetworkDatabaseFacade facade) {
+        super(context);
+        _facade = facade;
+        _log = context.logManager().getLog(FloodfillRouterInfoFloodJob.class);
+    }
+    
+    public String getName() { return "Flood our RouterInfo to nearby floodfills"; }
+
+    public void runJob() {
+        FloodfillPeerSelector sel = (FloodfillPeerSelector)_facade.getPeerSelector();
+        DatabaseStoreMessage dsm;
+        OutNetMessage outMsg;
+        RouterInfo nextPeerInfo;
+        
+        List<Hash> peers = sel.selectFloodfillParticipants(getContext().routerHash(), FLOOD_PEERS, null);
+        
+        for(Hash ri: peers) {
+            // Iterate through list of nearby (ff) peers
+            dsm          = new DatabaseStoreMessage(getContext());
+            dsm.setMessageExpiration(getContext().clock().now() + 10*1000);
+            dsm.setEntry(getContext().router().getRouterInfo());
+            nextPeerInfo = getContext().netDb().lookupRouterInfoLocally(ri);
+            if(nextPeerInfo == null) {
+                continue;
+            }
+            outMsg       = new OutNetMessage(getContext(), dsm, getContext().clock().now()+10*1000, OutNetMessage.PRIORITY_MY_NETDB_STORE, nextPeerInfo);
+            getContext().outNetMessagePool().add(outMsg); // Whoosh!
+            if(_log.shouldLog(Log.DEBUG)) {
+                _log.logAlways(Log.DEBUG, "Sending our RI to: " + nextPeerInfo.getHash());
+            }
+        }
+    }
+}
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java
index 5618d256459f57a592b44571a4f339c8bb4aaa98..b7ad0465fa721fe927dc18359ecdceaf5cb1a46c 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillStoreJob.java
@@ -20,6 +20,8 @@ import net.i2p.util.Log;
 /**
  *  This extends StoreJob to fire off a FloodfillVerifyStoreJob after success.
  *
+ *  Stores through this class always request a reply.
+ *
  */
 class FloodfillStoreJob extends StoreJob {    
     private final FloodfillNetworkDatabaseFacade _facade;
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java
index ffb6d77f00f4106a84bef18b9303b9a4f93e4966..56fd1f0eb83f4cc86c02a69eeb374ca70bf14e21 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/HandleFloodfillDatabaseStoreMessageJob.java
@@ -14,14 +14,19 @@ import java.util.Date;
 import net.i2p.data.DatabaseEntry;
 import net.i2p.data.Hash;
 import net.i2p.data.LeaseSet;
+import net.i2p.data.TunnelId;
 import net.i2p.data.router.RouterAddress;
 import net.i2p.data.router.RouterIdentity;
 import net.i2p.data.router.RouterInfo;
 import net.i2p.data.i2np.DatabaseStoreMessage;
 import net.i2p.data.i2np.DeliveryStatusMessage;
+import net.i2p.data.i2np.TunnelGatewayMessage;
+import net.i2p.router.Job;
 import net.i2p.router.JobImpl;
+import net.i2p.router.OutNetMessage;
 import net.i2p.router.RouterContext;
 import net.i2p.router.TunnelInfo;
+import net.i2p.router.message.SendMessageDirectJob;
 import net.i2p.util.Log;
 
 /**
@@ -34,8 +39,15 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
     private final RouterIdentity _from;
     private Hash _fromHash;
     private final FloodfillNetworkDatabaseFacade _facade;
+    private final static int REPLY_TIMEOUT = 60*1000;
+    private final static int MESSAGE_PRIORITY = OutNetMessage.PRIORITY_NETDB_REPLY;
 
-    public HandleFloodfillDatabaseStoreMessageJob(RouterContext ctx, DatabaseStoreMessage receivedMessage, RouterIdentity from, Hash fromHash, FloodfillNetworkDatabaseFacade facade) {
+    /**
+     * @param receivedMessage must never have reply token set if it came down a tunnel
+     */
+    public HandleFloodfillDatabaseStoreMessageJob(RouterContext ctx, DatabaseStoreMessage receivedMessage,
+                                                  RouterIdentity from, Hash fromHash,
+                                                  FloodfillNetworkDatabaseFacade facade) {
         super(ctx);
         _log = ctx.logManager().getLog(getClass());
         _message = receivedMessage;
@@ -136,6 +148,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
                 // somebody has our keys... 
                 if (getContext().routerHash().equals(key)) {
                     //getContext().statManager().addRateData("netDb.storeLocalRouterInfoAttempt", 1, 0);
+                    // This is initiated by PeerTestJob from another peer
                     // throw rather than return, so that we send the ack below (prevent easy attack)
                     dontBlamePeer = true;
                     throw new IllegalArgumentException("Peer attempted to store our RouterInfo");
@@ -170,15 +183,18 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
             if (_log.shouldLog(Log.ERROR))
                 _log.error("Invalid DatabaseStoreMessage data type - " + entry.getType() 
                            + ": " + _message);
+            // don't ack or flood
+            return;
         }
         
         long recvEnd = System.currentTimeMillis();
         getContext().statManager().addRateData("netDb.storeRecvTime", recvEnd-recvBegin);
         
-        // ack even if invalid or unsupported
+        // ack even if invalid
+        // in particular, ack our own RI (from PeerTestJob)
         // TODO any cases where we shouldn't?
         if (_message.getReplyToken() > 0)
-            sendAck();
+            sendAck(key);
         long ackEnd = System.currentTimeMillis();
         
         if (_from != null)
@@ -215,7 +231,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
                 // ERR: see comment in HandleDatabaseLookupMessageJob regarding hidden mode
                 //else if (!_message.getRouterInfo().isHidden())
                 long floodEnd = System.currentTimeMillis();
-                getContext().statManager().addRateData("netDb.storeFloodNew", floodEnd-floodBegin);
+                getContext().statManager().addRateData("netDb.storeFloodNew", floodEnd-floodBegin, 60*1000);
             } else {
                 // don't flood it *again*
                 getContext().statManager().addRateData("netDb.storeFloodOld", 1);
@@ -223,7 +239,7 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
         }
     }
     
-    private void sendAck() {
+    private void sendAck(Hash storedKey) {
         DeliveryStatusMessage msg = new DeliveryStatusMessage(getContext());
         msg.setMessageId(_message.getReplyToken());
         // Randomize for a little protection against clock-skew fingerprinting.
@@ -231,31 +247,62 @@ public class HandleFloodfillDatabaseStoreMessageJob extends JobImpl {
         // TODO just set to 0?
         // TODO we have no session to garlic wrap this with, needs new message
         msg.setArrival(getContext().clock().now() - getContext().random().nextInt(3*1000));
-        /*
-        if (FloodfillNetworkDatabaseFacade.floodfillEnabled(getContext())) {
-            // no need to do anything but send it where they ask
+        // may be null
+        TunnelId replyTunnel = _message.getReplyTunnel();
+        // A store of our own RI, only if we are not FF
+        DatabaseStoreMessage msg2;
+        if ((getContext().netDb().floodfillEnabled() && !getContext().router().gracefulShutdownInProgress()) ||
+            storedKey.equals(getContext().routerHash())) {
+            // don't send our RI if the store was our RI (from PeerTestJob)
+            msg2 = null;
+        } else {
+            // we aren't ff, send a go-away message
+            msg2 = new DatabaseStoreMessage(getContext());
+            RouterInfo me = getContext().router().getRouterInfo();
+            msg2.setEntry(me);
+            if (_log.shouldWarn())
+                _log.warn("Got a store w/ reply token, but we aren't ff: from: " + _from +
+                          " fromHash: " + _fromHash + " msg: " + _message, new Exception());
+        }
+        Hash toPeer = _message.getReplyGateway();
+        boolean toUs = getContext().routerHash().equals(toPeer);
+        // to reduce connection congestion, send directly if connected already,
+        // else through an exploratory tunnel.
+        if (toUs && replyTunnel != null) {
+            // if we are the gateway, act as if we received it
             TunnelGatewayMessage tgm = new TunnelGatewayMessage(getContext());
             tgm.setMessage(msg);
-            tgm.setTunnelId(_message.getReplyTunnel());
+            tgm.setTunnelId(replyTunnel);
             tgm.setMessageExpiration(msg.getMessageExpiration());
-            
-            getContext().jobQueue().addJob(new SendMessageDirectJob(getContext(), tgm, _message.getReplyGateway(), 10*1000, 200));
+            getContext().tunnelDispatcher().dispatch(tgm);
+            if (msg2 != null) {
+                TunnelGatewayMessage tgm2 = new TunnelGatewayMessage(getContext());
+                tgm2.setMessage(msg2);
+                tgm2.setTunnelId(replyTunnel);
+                tgm2.setMessageExpiration(msg.getMessageExpiration());
+                getContext().tunnelDispatcher().dispatch(tgm2);
+            }
+        } else if (toUs || getContext().commSystem().isEstablished(toPeer)) {
+            Job send = new SendMessageDirectJob(getContext(), msg, toPeer, REPLY_TIMEOUT, MESSAGE_PRIORITY);
+            send.runJob();
+            if (msg2 != null) {
+                Job send2 = new SendMessageDirectJob(getContext(), msg2, toPeer, REPLY_TIMEOUT, MESSAGE_PRIORITY);
+                send2.runJob();
+            }
         } else {
-         */
-            TunnelInfo outTunnel = selectOutboundTunnel();
+            // pick tunnel with endpoint closest to toPeer
+            TunnelInfo outTunnel = getContext().tunnelManager().selectOutboundExploratoryTunnel(toPeer);
             if (outTunnel == null) {
                 if (_log.shouldLog(Log.WARN))
                     _log.warn("No outbound tunnel could be found");
                 return;
-            } else {
-                getContext().tunnelDispatcher().dispatchOutbound(msg, outTunnel.getSendTunnelId(0),
-                                                                 _message.getReplyTunnel(), _message.getReplyGateway());
             }
-        //}
-    }
-
-    private TunnelInfo selectOutboundTunnel() {
-        return getContext().tunnelManager().selectOutboundTunnel();
+            getContext().tunnelDispatcher().dispatchOutbound(msg, outTunnel.getSendTunnelId(0),
+                                                             replyTunnel, toPeer);
+            if (msg2 != null)
+                getContext().tunnelDispatcher().dispatchOutbound(msg2, outTunnel.getSendTunnelId(0),
+                                                                 replyTunnel, toPeer);
+        }
     }
  
     public String getName() { return "Handle Database Store Message"; }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupJob.java
index ac283109caa317bd9e87174d3e25b34284cdcfab..6b243b76958043a21e2536eb86b493777ca7f3af 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupJob.java
@@ -58,7 +58,7 @@ class IterativeLookupJob extends JobImpl {
                         continue;
                     }
                     if (peer.equals(from)) {
-                        // wtf
+                        // unusual
                         invalidPeers++;
                         continue;
                     }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java
index 55464735e2c84ea4cf0668ccd00aba8c9648bb10..251bd736347754f95224378f196a92b9a5a321a4 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeSearchJob.java
@@ -71,7 +71,7 @@ class IterativeSearchJob extends FloodSearchJob {
     private static Hash _alwaysQueryHash;
     /** Max number of peers to query */
     private final int _totalSearchLimit;
-
+    
     private static final int MAX_NON_FF = 3;
     /** Max number of peers to query */
     private static final int TOTAL_SEARCH_LIMIT = 6;
@@ -84,6 +84,10 @@ class IterativeSearchJob extends FloodSearchJob {
      *  Longer than the typ. response time of 1.0 - 1.5 sec, but short enough that we move
      *  on to another peer quickly.
      */
+    private final long _singleSearchTime;
+    /** 
+     * The default single search time
+     */
     private static final long SINGLE_SEARCH_TIME = 3*1000;
     /** the actual expire time for a search message */
     private static final long SINGLE_SEARCH_MSG_TIME = 10*1000;
@@ -92,6 +96,10 @@ class IterativeSearchJob extends FloodSearchJob {
      *  For now, we don't do concurrent, but we keep SINGLE_SEARCH_TIME very short,
      *  so we have effective concurrency in that we fail a search quickly.
      */
+    private final int _maxConcurrent;
+    /**
+     * The default _maxConcurrent
+     */
     private static final int MAX_CONCURRENT = 1;
 
     public static final String PROP_ENCRYPT_RI = "router.encryptRouterLookups";
@@ -125,8 +133,11 @@ class IterativeSearchJob extends FloodSearchJob {
         _expiration = _timeoutMs + ctx.clock().now();
         _rkey = ctx.routingKeyGenerator().getRoutingKey(key);
         _toTry = new TreeSet<Hash>(new XORComparator<Hash>(_rkey));
-        _totalSearchLimit = (facade.floodfillEnabled() && ctx.router().getUptime() > 30*60*1000) ?
+        int totalSearchLimit = (facade.floodfillEnabled() && ctx.router().getUptime() > 30*60*1000) ?
                             TOTAL_SEARCH_LIMIT_WHEN_FF : TOTAL_SEARCH_LIMIT;
+        _totalSearchLimit = ctx.getProperty("netdb.searchLimit", totalSearchLimit);
+        _singleSearchTime = ctx.getProperty("netdb.singleSearchTime", SINGLE_SEARCH_TIME);
+        _maxConcurrent = ctx.getProperty("netdb.maxConcurrent", MAX_CONCURRENT);
         _unheardFrom = new HashSet<Hash>(CONCURRENT_SEARCHES);
         _failedPeers = new HashSet<Hash>(_totalSearchLimit);
         _sentTime = new ConcurrentHashMap<Hash, Long>(_totalSearchLimit);
@@ -187,11 +198,15 @@ class IterativeSearchJob extends FloodSearchJob {
                 floodfillPeers.add(iter.next());
             }
         }
-        _toTry.addAll(floodfillPeers);
-        // don't ask ourselves or the target
-        _toTry.remove(getContext().routerHash());
-        _toTry.remove(_key);
-        if (_toTry.isEmpty()) {
+        final boolean empty;
+        synchronized(this) {
+            _toTry.addAll(floodfillPeers);
+            // don't ask ourselves or the target
+            _toTry.remove(getContext().routerHash());
+            _toTry.remove(_key);
+            empty = _toTry.isEmpty();
+        }
+        if (empty) {
             if (_log.shouldLog(Log.WARN))
                 _log.warn(getJobId() + ": ISJ for " + _key + " had no peers to send to");
             // no floodfill peers, fail
@@ -227,23 +242,26 @@ class IterativeSearchJob extends FloodSearchJob {
         }
         while (true) {
             Hash peer;
+            final int done, pend;
             synchronized (this) {
                 if (_dead) return;
-                int pend = _unheardFrom.size();
-                if (pend >= MAX_CONCURRENT)
-                    return;
-                int done = _failedPeers.size();
-                if (done >= _totalSearchLimit) {
-                    failed();
-                    return;
-                }
-                // even if pend and todo are empty, we don't fail, as there may be more peers
-                // coming via newPeerToTry()
-                if (done + pend >= _totalSearchLimit)
+                pend = _unheardFrom.size();
+                if (pend >= _maxConcurrent)
                     return;
+                done = _failedPeers.size();
+            }
+            if (done >= _totalSearchLimit) {
+                failed();
+                return;
+            }
+            // even if pend and todo are empty, we don't fail, as there may be more peers
+            // coming via newPeerToTry()
+            if (done + pend >= _totalSearchLimit)
+                return;
+            synchronized(this) {
                 if (_alwaysQueryHash != null &&
-                    !_unheardFrom.contains(_alwaysQueryHash) &&
-                    !_failedPeers.contains(_alwaysQueryHash)) {
+                        !_unheardFrom.contains(_alwaysQueryHash) &&
+                        !_failedPeers.contains(_alwaysQueryHash)) {
                     // For testing or local networks... we will
                     // pretend that the specified router is floodfill, and always closest-to-the-key.
                     // May be set after startup but can't be changed or unset later.
@@ -404,7 +422,7 @@ class IterativeSearchJob extends FloodSearchJob {
             // The timeout job is always run (never cancelled)
             // Note that the timeout is much shorter than the message expiration (see above)
             Job j = new IterativeTimeoutJob(getContext(), peer, this);
-            long expire = Math.min(_expiration, now + SINGLE_SEARCH_TIME);
+            long expire = Math.min(_expiration, now + _singleSearchTime);
             j.getTiming().setStartAfter(expire);
             getContext().jobQueue().addJob(j);
 
@@ -513,12 +531,14 @@ class IterativeSearchJob extends FloodSearchJob {
             _facade.lookupFailed(_key);
         getContext().messageRegistry().unregisterPending(_out);
         int tries;
+        final List<Hash> unheard;
         synchronized(this) {
             tries = _unheardFrom.size() + _failedPeers.size();
-            // blame the unheard-from (others already blamed in failed() above)
-            for (Hash h : _unheardFrom)
-                getContext().profileManager().dbLookupFailed(h);
+            unheard = new ArrayList<Hash>(_unheardFrom);
         }
+        // blame the unheard-from (others already blamed in failed() above)
+        for (Hash h : unheard)
+            getContext().profileManager().dbLookupFailed(h);
         long time = System.currentTimeMillis() - _created;
         if (_log.shouldLog(Log.INFO)) {
             long timeRemaining = _expiration - getContext().clock().now();
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
index 11ffa9d274999b8a032602c11acd6e1e6aa5af4c..794638708b2980e1acdbb6324114b38dae0c26a4 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
@@ -274,7 +274,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
         //_ds = new TransientDataStore();
 //        _exploreKeys = new HashSet(64);
         _dbDir = dbDir;
-        _negativeCache = new NegativeLookupCache();
+        _negativeCache = new NegativeLookupCache(_context);
         
         createHandlers();
         
@@ -646,7 +646,7 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
         try {
             store(h, localLeaseSet);
         } catch (IllegalArgumentException iae) {
-            _log.error("wtf, locally published leaseSet is not valid?", iae);
+            _log.error("locally published leaseSet is not valid?", iae);
             throw iae;
         }
         if (!_context.clientManager().shouldPublishLeaseSet(h))
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java b/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java
index 1915caf4ee56d890e237ef9082061291c0aa23ab..d9164225d44a9f151b27f78a494b5e84bc63d360 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/NegativeLookupCache.java
@@ -4,6 +4,7 @@ import java.util.Map;
 
 import net.i2p.data.Destination;
 import net.i2p.data.Hash;
+import net.i2p.router.RouterContext;
 import net.i2p.util.LHMCache;
 import net.i2p.util.ObjectCounter;
 import net.i2p.util.SimpleTimer;
@@ -17,15 +18,18 @@ import net.i2p.util.SimpleTimer2;
 class NegativeLookupCache {
     private final ObjectCounter<Hash> counter;
     private final Map<Hash, Destination> badDests;
-
+    private final int _maxFails;
+    
     private static final int MAX_FAILS = 3;
     private static final int MAX_BAD_DESTS = 128;
     private static final long CLEAN_TIME = 2*60*1000;
 
-    public NegativeLookupCache() {
+    public NegativeLookupCache(RouterContext context) {
         this.counter = new ObjectCounter<Hash>();
         this.badDests = new LHMCache<Hash, Destination>(MAX_BAD_DESTS);
-        SimpleTimer2.getInstance().addPeriodicEvent(new Cleaner(), CLEAN_TIME);
+        this._maxFails = context.getProperty("netdb.negativeCache.maxFails",MAX_FAILS);
+        final long cleanTime = context.getProperty("netdb.negativeCache.cleanupInterval", CLEAN_TIME);
+        SimpleTimer2.getInstance().addPeriodicEvent(new Cleaner(), cleanTime);
     }
 
     public void lookupFailed(Hash h) {
@@ -33,7 +37,7 @@ class NegativeLookupCache {
     }
 
     public boolean isCached(Hash h) {
-        if (counter.count(h) >= MAX_FAILS)
+        if (counter.count(h) >= _maxFails)
             return true;
         synchronized(badDests) {
             return badDests.get(h) != null;
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
index 01c5e991fb255273e1ae5fa5c3c657f4d96ffb41..a04a339ccb1f097b4ba51cc7bdd1a778bca9b299 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/PersistentDataStore.java
@@ -13,6 +13,7 @@ import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FilenameFilter;
+import java.io.Flushable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -43,8 +44,10 @@ import net.i2p.util.SecureFileOutputStream;
  * Write out keys to disk when we get them and periodically read ones we don't know
  * about into memory, with newly read routers are also added to the routing table.
  *
+ * Public only for access to static methods by startup classes
+ *
  */
-class PersistentDataStore extends TransientDataStore {
+public class PersistentDataStore extends TransientDataStore {
     private final File _dbDir;
     private final KademliaNetworkDatabaseFacade _facade;
     private final Writer _writer;
@@ -193,7 +196,7 @@ class PersistentDataStore extends TransientDataStore {
      * we will soon have to implement a scheme for keeping only
      * a subset of all DatabaseEntrys in memory and keeping the rest on disk.
      */
-    private class Writer implements Runnable {
+    private class Writer implements Runnable, Flushable {
         private final Map<Hash, DatabaseEntry>_keys;
         private final Object _waitLock;
         private volatile boolean _quit;
@@ -484,7 +487,7 @@ class PersistentDataStore extends TransientDataStore {
                 // don't overwrite recent netdb RIs with reseed data
                 return fileDate > _knownDate + (60*60*1000);
             } else {
-                // wtf - prevent injection from reseeding
+                // safety measure - prevent injection from reseeding
                 _log.error("Prevented LS overwrite by RI " + _key + " from " + _routerFile);
                 return false;
             }
@@ -629,7 +632,25 @@ class PersistentDataStore extends TransientDataStore {
             return ROUTERINFO_PREFIX + b64 + ROUTERINFO_SUFFIX;
         return DIR_PREFIX + b64.charAt(0) + File.separatorChar + ROUTERINFO_PREFIX + b64 + ROUTERINFO_SUFFIX;
     }
+
+    /**
+     *  The persistent RI file for a hash.
+     *  This is available before the netdb subsystem is running, so we can delete our old RI.
+     *
+     *  @return non-null, should be absolute, does not necessarily exist
+     *  @since 0.9.23
+     */
+    public static File getRouterInfoFile(RouterContext ctx, Hash hash) {
+        String b64 = hash.toBase64();
+        File dir = new File(ctx.getRouterDir(), ctx.getProperty(KademliaNetworkDatabaseFacade.PROP_DB_DIR, KademliaNetworkDatabaseFacade.DEFAULT_DB_DIR));
+        if (ctx.getBooleanProperty(PROP_FLAT))
+            return new File(dir, ROUTERINFO_PREFIX + b64 + ROUTERINFO_SUFFIX);
+        return new File(dir, DIR_PREFIX + b64.charAt(0) + File.separatorChar + ROUTERINFO_PREFIX + b64 + ROUTERINFO_SUFFIX);
+    }
     
+    /**
+     *  Package private for installer BundleRouterInfos
+     */
     static Hash getRouterInfoHash(String filename) {
         return getHash(filename, ROUTERINFO_PREFIX, ROUTERINFO_SUFFIX);
     }
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
index 450aca44338eabda1da66a2b14232eaf425c3787..18fa99b5fe491d077f7205f01ac714f54b1ea7a5 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchJob.java
@@ -94,7 +94,7 @@ class SearchJob extends JobImpl {
                      Job onSuccess, Job onFailure, long timeoutMs, boolean keepStats, boolean isLease) {
         super(context);
         if ( (key == null) || (key.getData() == null) ) 
-            throw new IllegalArgumentException("Search for null key?  wtf");
+            throw new IllegalArgumentException("Search for null key?");
         _log = getContext().logManager().getLog(getClass());
         _facade = facade;
         _state = new SearchState(getContext(), key);
@@ -425,7 +425,7 @@ class SearchJob extends JobImpl {
         Hash to = router.getIdentity().getHash();
         TunnelInfo inTunnel = getContext().tunnelManager().selectInboundExploratoryTunnel(to);
         if (inTunnel == null) {
-            _log.warn("No tunnels to get search replies through!  wtf!");
+            _log.warn("No tunnels to get search replies through!");
             getContext().jobQueue().addJob(new FailedJob(getContext(), router));
             return;
         }
@@ -436,7 +436,7 @@ class SearchJob extends JobImpl {
         
         //RouterInfo inGateway = getContext().netDb().lookupRouterInfoLocally(inTunnel.getPeer(0));
         //if (inGateway == null) {
-        //    _log.error("We can't find the gateway to our inbound tunnel?! wtf");
+        //    _log.error("We can't find the gateway to our inbound tunnel?!");
         //    getContext().jobQueue().addJob(new FailedJob(getContext(), router));
         //    return;
         //}
@@ -445,10 +445,14 @@ class SearchJob extends JobImpl {
         long expiration = getContext().clock().now() + timeout;
 
         I2NPMessage msg = buildMessage(inTunnelId, inTunnel.getPeer(0), expiration, router);	
-	
+        if (msg == null) {
+            getContext().jobQueue().addJob(new FailedJob(getContext(), router));
+            return;
+        }
+
         TunnelInfo outTunnel = getContext().tunnelManager().selectOutboundExploratoryTunnel(to);
         if (outTunnel == null) {
-            _log.warn("No tunnels to send search out through!  wtf!");
+            _log.warn("No tunnels to send search out through! Impossible?");
             getContext().jobQueue().addJob(new FailedJob(getContext(), router));
             return;
         }        
@@ -480,6 +484,10 @@ class SearchJob extends JobImpl {
         // use the 4-arg one so we pick up the override in ExploreJob
         //I2NPMessage msg = buildMessage(expiration);
         I2NPMessage msg = buildMessage(null, router.getIdentity().getHash(), expiration, router);	
+        if (msg == null) {
+            getContext().jobQueue().addJob(new FailedJob(getContext(), router));
+            return;
+        }
 
         if (_log.shouldLog(Log.DEBUG))
             _log.debug(getJobId() + ": Sending router search directly to " + router.getIdentity().getHash()
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java
index 63cc1c18f8947384830e6eaaf3b88c7f6d40d99b..881410c4a5c97f4cf8b6a5d72a48692f86d63d5b 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java
@@ -101,7 +101,7 @@ class SearchUpdateReplyFoundJob extends JobImpl implements ReplyJob {
             _job.replyFound((DatabaseSearchReplyMessage)message, _peer);
         } else {
             if (_log.shouldLog(Log.ERROR))
-                _log.error(getJobId() + ": WTF, reply job matched a strange message: " + message);
+                _log.error(getJobId() + ": What?! Reply job matched a strange message: " + message);
             return;
         }
         
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SingleLookupJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SingleLookupJob.java
index 62a878d6dedf70988315cebba31198febc6f06e1..b7fd6161e4f51d04c87fd30e3c199c871fd46d86 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/SingleLookupJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/SingleLookupJob.java
@@ -42,7 +42,7 @@ class SingleLookupJob extends JobImpl {
             Hash peer = _dsrm.getReply(i);
             if (peer.equals(getContext().routerHash())) // us
                 continue;
-            if (peer.equals(from)) // wtf
+            if (peer.equals(from)) // unusual?
                 continue;
             RouterInfo ri = getContext().netDb().lookupRouterInfoLocally(peer);
             if (ri == null)
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java
index 809b9601541ae0efeeaa64a47803ab99f872a252..2845de561425914312378847c3de7e7f80bf9ba9 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreJob.java
@@ -33,6 +33,8 @@ import net.i2p.util.Log;
 import net.i2p.util.VersionComparator;
 
 /**
+ *  Stores through this always request a reply.
+ *
  *  Unused directly - see FloodfillStoreJob
  */
 class StoreJob extends JobImpl {
diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
index 4d4d85468c6f6005711724a9d7c1a6fd1882b188..59e69725316d18332739f837fba1354105fc9231 100644
--- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
+++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java
@@ -81,7 +81,6 @@ public class Reseeder {
 
               // Disabling everything, use SSL
               //"http://i2p.mooo.com/netDb/" + "," +
-              //"http://193.150.121.66/netDb/" + "," +
               //"http://uk.reseed.i2p2.no/" + "," +
               //"http://netdb.i2p2.no/"; // Only SU3 (v3) support
               "";
@@ -89,15 +88,15 @@ public class Reseeder {
     /** @since 0.8.2 */
     public static final String DEFAULT_SSL_SEED_URL =
               "https://reseed.i2p-projekt.de/" + "," + // Only HTTPS
-              "https://netdb.rows.io:444/" + "," + // Only HTTPS and SU3 (v3) support
+              //"https://netdb.rows.io:444/" + "," + // Only HTTPS and SU3 (v3) support
               "https://i2pseed.zarrenspry.info/" + "," + // Only HTTPS and SU3 (v3) support
               "https://i2p.mooo.com/netDb/" + "," +
-              "https://193.150.121.66/netDb/" + "," +
               "https://netdb.i2p2.no/" + "," + // Only SU3 (v3) support, SNI required
               "https://us.reseed.i2p2.no:444/" + "," +
               "https://uk.reseed.i2p2.no:444/" + "," +
+              "https://www.torontocrypto.org:8443/" + "," +
               "https://reseed.i2p.vzaws.com:8443/" + ", " + // Only SU3 (v3) support
-              "https://link.mx24.eu/" + "," + // Only HTTPS and SU3 (v3) support
+              "https://user.mx24.eu/" + "," + // Only HTTPS and SU3 (v3) support
               "https://ieb9oopo.mooo.com/"; // Only HTTPS and SU3 (v3) support
 
     private static final String SU3_FILENAME = "i2pseeds.su3";
@@ -208,7 +207,7 @@ public class Reseeder {
             if (fetched <= 0)
                 throw new IOException("No seeds extracted");
             _checker.setStatus(
-                _("Reseeding: got router info from file ({0} successful, {1} errors).", fetched, errors));
+                _t("Reseeding: got router info from file ({0} successful, {1} errors).", fetched, errors));
             System.err.println("Reseed got " + fetched + " router infos from file with " + errors + " errors");
             _context.router().eventLog().addEvent(EventLog.RESEED, fetched + " from file");
             return fetched;
@@ -280,7 +279,7 @@ public class Reseeder {
         private void run2() {
             _isRunning = true;
             _checker.setError("");
-            _checker.setStatus(_("Reseeding"));
+            _checker.setStatus(_t("Reseeding"));
             if (_context.getBooleanProperty(PROP_PROXY_ENABLE)) {
                 _proxyHost = _context.getProperty(PROP_PROXY_HOST);
                 _proxyPort = _context.getProperty(PROP_PROXY_PORT, -1);
@@ -312,9 +311,9 @@ public class Reseeder {
                                        "and if nothing helps, read the FAQ about reseeding manually.");
                 } // else < 0, no valid URLs
                 String old = _checker.getError();
-                _checker.setError(_("Reseed failed.") + ' '  +
-                                  _("See {0} for help.",
-                                    "<a target=\"_top\" href=\"/configreseed\">" + _("reseed configuration page") + "</a>") +
+                _checker.setError(_t("Reseed failed.") + ' '  +
+                                  _t("See {0} for help.",
+                                    "<a target=\"_top\" href=\"/configreseed\">" + _t("reseed configuration page") + "</a>") +
                                   "<br>" + old);
             }
             _isRunning = false;
@@ -562,7 +561,7 @@ public class Reseeder {
             try {
                 // Don't use context clock as we may be adjusting the time
                 final long timeLimit = System.currentTimeMillis() + MAX_TIME_PER_HOST;
-                _checker.setStatus(_("Reseeding: fetching seed URL."));
+                _checker.setStatus(_t("Reseeding: fetching seed URL."));
                 System.err.println("Reseeding from " + seedURL);
                 byte contentRaw[] = readURL(seedURL);
                 if (contentRaw == null) {
@@ -571,7 +570,7 @@ public class Reseeder {
                     System.err.println("Reseed got no router infos from " + seedURL);
                     return 0;
                 }
-                String content = new String(contentRaw);
+                String content = DataHelper.getUTF8(contentRaw);
                 // This isn't really URLs, but Base64 hashes
                 // but they may include % encoding
                 Set<String> urls = new HashSet<String>(1024);
@@ -619,7 +618,7 @@ public class Reseeder {
                      iter.hasNext() && fetched < 200 && System.currentTimeMillis() < timeLimit; ) {
                     try {
                         _checker.setStatus(
-                            _("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors));
+                            _t("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors));
 
                         if (!fetchSeed(seedURL.toString(), iter.next()))
                             continue;
@@ -693,7 +692,7 @@ public class Reseeder {
             int errors = 0;
             File contentRaw = null;
             try {
-                _checker.setStatus(_("Reseeding: fetching seed URL."));
+                _checker.setStatus(_t("Reseeding: fetching seed URL."));
                 System.err.println("Reseeding from " + seedURL);
                 // don't use context time, as we may be step-changing it
                 // from the server header
@@ -729,7 +728,7 @@ public class Reseeder {
                     contentRaw.delete();
             }
             _checker.setStatus(
-                _("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors));
+                _t("Reseeding: fetching router info from seed URL ({0} successful, {1} errors).", fetched, errors));
             System.err.println("Reseed got " + fetched + " router infos from " + seedURL + " with " + errors + " errors");
             return fetched;
         }
@@ -1001,17 +1000,17 @@ public class Reseeder {
     private static final String BUNDLE_NAME = "net.i2p.router.web.messages";
 
     /** translate */
-    private String _(String key) {
+    private String _t(String key) {
         return Translate.getString(key, _context, BUNDLE_NAME);
     }
 
     /** translate */
-    private String _(String s, Object o) {
+    private String _t(String s, Object o) {
         return Translate.getString(s, o, _context, BUNDLE_NAME);
     }
 
     /** translate */
-    private String _(String s, Object o, Object o2) {
+    private String _t(String s, Object o, Object o2) {
         return Translate.getString(s, o, o2, _context, BUNDLE_NAME);
     }
 
diff --git a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java
index d433e889eeb180c0033a5217131eee8503ff1542..b67189e0760e4b80dbfcbef7b9fa32422fddd565 100644
--- a/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java
+++ b/router/java/src/net/i2p/router/peermanager/CapacityCalculator.java
@@ -1,6 +1,8 @@
 package net.i2p.router.peermanager;
 
-import net.i2p.I2PAppContext;
+import net.i2p.data.router.RouterInfo;
+import net.i2p.router.RouterContext;
+import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
 import net.i2p.stat.Rate;
 import net.i2p.stat.RateAverages;
 import net.i2p.stat.RateStat;
@@ -25,6 +27,9 @@ class CapacityCalculator {
     private static final double BONUS_SAME_COUNTRY = 0;
     private static final double BONUS_XOR = .25;
     private static final double PENALTY_UNREACHABLE = 2;
+    // we make this a bonus for non-ff, not a penalty for ff, so we
+    // don't drive the ffs below the default
+    private static final double BONUS_NON_FLOODFILL = 0.5;
     
     public static double calc(PeerProfile profile) {
         double capacity;
@@ -54,7 +59,7 @@ class CapacityCalculator {
         
         // now take into account non-rejection tunnel rejections (which haven't 
         // incremented the rejection counter, since they were only temporary)
-        I2PAppContext context = profile.getContext();
+        RouterContext context = profile.getContext();
         long now = context.clock().now();
         if (profile.getTunnelHistory().getLastRejectedTransient() > now - 5*60*1000)
             capacity = 1;
@@ -83,8 +88,15 @@ class CapacityCalculator {
         // penalize unreachable peers
         if (profile.wasUnreachable())
             capacity -= PENALTY_UNREACHABLE;
+
+        // credit non-floodfill to reduce conn limit issues at floodfills
+        // TODO only if we aren't floodfill ourselves?
+        RouterInfo ri = context.netDb().lookupRouterInfoLocally(profile.getPeer());
+        if (!FloodfillNetworkDatabaseFacade.isFloodfill(ri))
+            capacity += BONUS_NON_FLOODFILL;
+
         // a tiny tweak to break ties and encourage closeness, -.25 to +.25
-            capacity -= profile.getXORDistance() * (BONUS_XOR / 128);
+        capacity -= profile.getXORDistance() * (BONUS_XOR / 128);
 
         capacity += profile.getCapacityBonus();
         if (capacity < 0)
@@ -173,7 +185,7 @@ class CapacityCalculator {
             case 30*60*1000: return .3;
             case 60*60*1000: return .2;
             case 24*60*60*1000: return .1;
-            default: throw new IllegalArgumentException("wtf, period [" + period + "]???");
+            default: throw new IllegalArgumentException("undefined period passed, period [" + period + "]???");
         }
     }
 }
diff --git a/router/java/src/net/i2p/router/peermanager/DBHistory.java b/router/java/src/net/i2p/router/peermanager/DBHistory.java
index c5c94c2ca85a06f40cbbc6d16f5e1ea2829cf92d..b2b46faca3dae1f8b8739dc7121bb182e1d4444d 100644
--- a/router/java/src/net/i2p/router/peermanager/DBHistory.java
+++ b/router/java/src/net/i2p/router/peermanager/DBHistory.java
@@ -228,7 +228,7 @@ public class DBHistory {
         add(buf, "unpromptedDbStoreOld", _unpromptedDbStoreOld, "How times have they sent us something we didn't ask for but have seen before?");
         add(buf, "lastLookupReceived", _lastLookupReceived, "When was the last time they send us a lookup?  (milliseconds since the epoch)");
         add(buf, "avgDelayBetweenLookupsReceived", _avgDelayBetweenLookupsReceived, "How long is it typically between each db lookup they send us?  (in milliseconds)");
-        out.write(buf.toString().getBytes());
+        out.write(buf.toString().getBytes("UTF-8"));
         _failedLookupRate.store(out, "dbHistory.failedLookupRate");
         _invalidReplyRate.store(out, "dbHistory.invalidReplyRate");
     }
diff --git a/router/java/src/net/i2p/router/peermanager/PeerManager.java b/router/java/src/net/i2p/router/peermanager/PeerManager.java
index bb88fed790c96492c2b081c7ed898edcfa0808b9..b3cc3643b029881c435b6239de036407b15525c9 100644
--- a/router/java/src/net/i2p/router/peermanager/PeerManager.java
+++ b/router/java/src/net/i2p/router/peermanager/PeerManager.java
@@ -165,7 +165,7 @@ class PeerManager {
      *  @since 0.8.8
      */
     private void loadProfilesInBackground() {
-        (new Thread(new ProfileLoader())).start();
+        (new I2PThread(new ProfileLoader())).start();
     }
 
     /**
@@ -193,7 +193,8 @@ class PeerManager {
     }
     
     /**
-     * Find some peers that meet the criteria and we have the netDb info for locally
+     * Find some peers that meet the criteria and we have the netDb info for locally.
+     * Returned list will not include ourselves.
      *
      * Only used by PeerTestJob (PURPOSE_TEST)
      */
diff --git a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java
index 466c63ec190e0507eea0625c2f829eef94f1088c..903386189e29c87f191ec2a8bd168a1cc53f95c8 100644
--- a/router/java/src/net/i2p/router/peermanager/PeerTestJob.java
+++ b/router/java/src/net/i2p/router/peermanager/PeerTestJob.java
@@ -24,7 +24,8 @@ import net.i2p.util.Log;
  * selection to the peer manager and tests the peer by sending it a useless
  * database store message
  *
- * TODO - What's the point? Disable this? See also notes in PeerManager.selectPeers()
+ * TODO - What's the point? Disable this? See also notes in PeerManager.selectPeers().
+ * TODO - Use something besides sending the peer's RI to itself?
  */
 public class PeerTestJob extends JobImpl {
     private final Log _log;
@@ -82,6 +83,7 @@ public class PeerTestJob extends JobImpl {
     
     /**
      * Retrieve a group of 0 or more peers that we want to test. 
+     * Returned list will not include ourselves.
      *
      * @return set of RouterInfo structures
      */
@@ -110,12 +112,13 @@ public class PeerTestJob extends JobImpl {
     
     /**
      * Fire off the necessary jobs and messages to test the given peer
-     *
+     * The message is a store of the peer's RI to itself,
+     * with a reply token.
      */
     private void testPeer(RouterInfo peer) {
         TunnelInfo inTunnel = getInboundTunnelId(); 
         if (inTunnel == null) {
-            _log.warn("No tunnels to get peer test replies through!  wtf!");
+            _log.warn("No tunnels to get peer test replies through!");
             return;
         }
         TunnelId inTunnelId = inTunnel.getReceiveTunnelId(0);
@@ -123,19 +126,19 @@ public class PeerTestJob extends JobImpl {
         RouterInfo inGateway = getContext().netDb().lookupRouterInfoLocally(inTunnel.getPeer(0));
         if (inGateway == null) {
             if (_log.shouldLog(Log.WARN))
-                _log.warn("We can't find the gateway to our inbound tunnel?! wtf");
+                _log.warn("We can't find the gateway to our inbound tunnel?! Impossible?");
             return;
         }
 	
         int timeoutMs = getTestTimeout();
         long expiration = getContext().clock().now() + timeoutMs;
 
-        long nonce = getContext().random().nextLong(I2NPMessage.MAX_ID_VALUE);
+        long nonce = 1 + getContext().random().nextLong(I2NPMessage.MAX_ID_VALUE - 1);
         DatabaseStoreMessage msg = buildMessage(peer, inTunnelId, inGateway.getIdentity().getHash(), nonce, expiration);
 	
         TunnelInfo outTunnel = getOutboundTunnelId();
         if (outTunnel == null) {
-            _log.warn("No tunnels to send search out through!  wtf!");
+            _log.warn("No tunnels to send search out through! Something is wrong...");
             return;
         }
         
@@ -172,7 +175,9 @@ public class PeerTestJob extends JobImpl {
     }
 
     /**
-     * Build a message to test the peer with 
+     * Build a message to test the peer with.
+     * The message is a store of the peer's RI to itself,
+     * with a reply token.
      */
     private DatabaseStoreMessage buildMessage(RouterInfo peer, TunnelId replyTunnel, Hash replyGateway, long nonce, long expiration) {
         DatabaseStoreMessage msg = new DatabaseStoreMessage(getContext());
diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java
index 32c15038c0f25a7e470df1a45a20ac01de941922..305d0f343454323036ee3f1c51371f544866a5ec 100644
--- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java
+++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java
@@ -139,7 +139,7 @@ class ProfilePersistenceHelper {
         add(buf, "tunnelPeakTunnel1mThroughput", profile.getPeakTunnel1mThroughputKBps(), "KBytes/sec");
         buf.append(NL);
         
-        out.write(buf.toString().getBytes());
+        out.write(buf.toString().getBytes("UTF-8"));
         
         if (profile.getIsExpanded()) {
             // only write out expanded data if, uh, we've got it
diff --git a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java
index 8cffc431f6dccd23809b602b63bc4e201f8aec7e..37e91b3f297a53005d6e8046e02fd3fb0796af3f 100644
--- a/router/java/src/net/i2p/router/peermanager/TunnelHistory.java
+++ b/router/java/src/net/i2p/router/peermanager/TunnelHistory.java
@@ -151,7 +151,7 @@ public class TunnelHistory {
         add(buf, "lifetimeAgreedTo", _lifetimeAgreedTo.get(), "How many tunnels has the peer ever agreed to participate in?");
         add(buf, "lifetimeFailed", _lifetimeFailed.get(), "How many tunnels has the peer ever agreed to participate in that failed prematurely?");
         add(buf, "lifetimeRejected", _lifetimeRejected.get(), "How many tunnels has the peer ever refused to participate in?");
-        out.write(buf.toString().getBytes());
+        out.write(buf.toString().getBytes("UTF-8"));
         _rejectRate.store(out, "tunnelHistory.rejectRate");
         _failRate.store(out, "tunnelHistory.failRate");
     }
diff --git a/router/java/src/net/i2p/router/startup/BootCommSystemJob.java b/router/java/src/net/i2p/router/startup/BootCommSystemJob.java
index 2b3be55868bbc99181b7c57acf8bbebdc4c235b3..bb9f308463d20dea1af2ec7a0af820111f48a5e4 100644
--- a/router/java/src/net/i2p/router/startup/BootCommSystemJob.java
+++ b/router/java/src/net/i2p/router/startup/BootCommSystemJob.java
@@ -14,6 +14,7 @@ import net.i2p.router.RouterContext;
 import net.i2p.router.RouterClock;
 import net.i2p.router.tasks.ReadConfigJob;
 import net.i2p.util.Log;
+import net.i2p.util.SystemVersion;
 
 /** This actually boots almost everything */
 class BootCommSystemJob extends JobImpl {
@@ -46,9 +47,12 @@ class BootCommSystemJob extends JobImpl {
         // start I2CP
         getContext().jobQueue().addJob(new StartAcceptingClientsJob(getContext()));
 
-        Job j = new ReadConfigJob(getContext());
-        j.getTiming().setStartAfter(getContext().clock().now() + 2*60*1000);
-        getContext().jobQueue().addJob(j);
+        if (!SystemVersion.isAndroid()) {
+            Job j = new ReadConfigJob(getContext());
+            j.getTiming().setStartAfter(getContext().clock().now() + 2*60*1000);
+            getContext().jobQueue().addJob(j);
+        }
+
         ((RouterClock) getContext().clock()).addShiftListener(getContext().router());
     }
         
diff --git a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java
index 03076cb1e89d33f7a350266c433e551d69a2a718..7c18f63334f41f5a012cc156221ec6148f5e0630 100644
--- a/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java
+++ b/router/java/src/net/i2p/router/startup/CreateRouterInfoJob.java
@@ -35,6 +35,7 @@ import net.i2p.router.RouterContext;
 import net.i2p.router.util.EventLog;
 import net.i2p.util.Log;
 import net.i2p.util.SecureFileOutputStream;
+import net.i2p.util.SystemVersion;
 
 /**
  *  Warning - misnamed. This creates a new RouterIdentity, i.e.
@@ -49,9 +50,10 @@ public class CreateRouterInfoJob extends JobImpl {
     public static final String INFO_FILENAME = "router.info";
     public static final String KEYS_FILENAME = "router.keys";
     public static final String KEYS2_FILENAME = "router.keys.dat";
-    private static final String PROP_ROUTER_SIGTYPE = "router.sigType";
-    /** TODO when changing, check isAvailable() and fallback to DSA_SHA1 */
-    private static final SigType DEFAULT_SIGTYPE = SigType.DSA_SHA1;
+    static final String PROP_ROUTER_SIGTYPE = "router.sigType";
+    /** TODO make everybody Ed */
+    private static final SigType DEFAULT_SIGTYPE = (SystemVersion.isARM() || SystemVersion.isAndroid()) ?
+                                                   SigType.DSA_SHA1 : SigType.EdDSA_SHA512_Ed25519;
 
     CreateRouterInfoJob(RouterContext ctx, Job next) {
         super(ctx);
@@ -166,7 +168,7 @@ public class CreateRouterInfoJob extends JobImpl {
      *  @since 0.9.16
      */
     public static SigType getSigTypeConfig(RouterContext ctx) {
-        SigType cstype = CreateRouterInfoJob.DEFAULT_SIGTYPE;
+        SigType cstype = DEFAULT_SIGTYPE;
         String sstype = ctx.getProperty(PROP_ROUTER_SIGTYPE);
         if (sstype != null) {
             SigType ntype = SigType.parseSigType(sstype);
diff --git a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java
index 3fbfc381f0d0db87838f0f738dd6fdb4e618ddae..05969ec03aa89dabd6f6199cd54d4b73b42936a2 100644
--- a/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java
+++ b/router/java/src/net/i2p/router/startup/LoadClientAppsJob.java
@@ -207,7 +207,7 @@ public class LoadClientAppsJob extends JobImpl {
         if (args == null)
             args = new String[0];
         Class<?> cls = Class.forName(className, true, cl);
-        Method method = cls.getMethod("main", new Class[] { String[].class });
+        Method method = cls.getMethod("main", String[].class);
         method.invoke(cls, new Object[] { args });
     }
 
@@ -287,7 +287,7 @@ public class LoadClientAppsJob extends JobImpl {
                     ClientApp app = (ClientApp) con.newInstance(conArgs);
                     mgr.addAndStart(app, _args);
                 } else {
-                    Method method = cls.getMethod("main", new Class[] { String[].class });
+                    Method method = cls.getMethod("main", String[].class);
                     method.invoke(cls, new Object[] { _args });
                 }
             } catch (Throwable t) {
diff --git a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java
index cebd333d2355779cc37991dea32f1dbccf35856d..1ddce12b9874e8c92322453ad3058caa7fd3216a 100644
--- a/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java
+++ b/router/java/src/net/i2p/router/startup/LoadRouterInfoJob.java
@@ -20,6 +20,7 @@ import net.i2p.crypto.SigType;
 import net.i2p.data.Certificate;
 import net.i2p.data.DataFormatException;
 import net.i2p.data.DataHelper;
+import net.i2p.data.Hash;
 import net.i2p.data.PrivateKey;
 import net.i2p.data.PublicKey;
 import net.i2p.data.SigningPrivateKey;
@@ -30,6 +31,7 @@ import net.i2p.data.router.RouterPrivateKeyFile;
 import net.i2p.router.JobImpl;
 import net.i2p.router.Router;
 import net.i2p.router.RouterContext;
+import net.i2p.router.networkdb.kademlia.PersistentDataStore;
 import net.i2p.util.Log;
 
 /**
@@ -83,7 +85,7 @@ class LoadRouterInfoJob extends JobImpl {
         try {
             // if we have a routerinfo but no keys, things go bad in a hurry:
             // CRIT   ...rkdb.PublishLocalRouterInfoJob: Internal error - signing private key not known?  rescheduling publish for 30s
-            // CRIT      net.i2p.router.Router         : Internal error - signing private key not known?  wtf
+            // CRIT      net.i2p.router.Router         : Internal error - signing private key not known? Impossible?
             // CRIT   ...sport.udp.EstablishmentManager: Error in the establisher java.lang.NullPointerException
             // at net.i2p.router.transport.udp.PacketBuilder.buildSessionConfirmedPacket(PacketBuilder.java:574)
             // so pretend the RI isn't there if there is no keyfile
@@ -110,11 +112,30 @@ class LoadRouterInfoJob extends JobImpl {
                 // check if the sigtype config changed
                 SigType cstype = CreateRouterInfoJob.getSigTypeConfig(getContext());
                 boolean sigTypeChanged = stype != cstype;
+                if (sigTypeChanged && getContext().getProperty(CreateRouterInfoJob.PROP_ROUTER_SIGTYPE) == null) {
+                    // Not explicitly configured, and default has changed
+                    // Give a 15% chance of rekeying for each restart
+                    // TODO reduce to ~3 (i.e. increase probability) in future release
+                    if (getContext().random().nextInt(7) > 0) {
+                        sigTypeChanged = false;
+                        if (_log.shouldWarn())
+                            _log.warn("Deferring RI rekey from " + stype + " to " + cstype);
+                    }
+                }
 
                 if (sigTypeChanged || shouldRebuild(privkey)) {
+                    if (_us != null) {
+                        Hash h = _us.getIdentity().getHash();
+                        _log.logAlways(Log.WARN, "Deleting old router identity " + h.toBase64());
+                        // the netdb hasn't started yet, but we want to delete the RI
+                        File f = PersistentDataStore.getRouterInfoFile(getContext(), h);
+                        f.delete();
+                        // the banlist can be called at any time
+                        getContext().banlist().banlistRouterForever(h, "Our previous identity");
+                        _us = null;
+                    }
                     if (sigTypeChanged)
                         _log.logAlways(Log.WARN, "Rebuilding RouterInfo with new signature type " + cstype);
-                    _us = null;
                     // windows... close before deleting
                     if (fis1 != null) {
                         try { fis1.close(); } catch (IOException ioe) {}
diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java
index b8503224f6f2cc0d1b14064a20f43b48a5046649..8e3a19c93fdfe3a3d984687326a7f97b9c63df82 100644
--- a/router/java/src/net/i2p/router/startup/WorkingDir.java
+++ b/router/java/src/net/i2p/router/startup/WorkingDir.java
@@ -252,7 +252,7 @@ public class WorkingDir {
         }
         System.setProperty(PROP_WRAPPER_LOG, logfile.getAbsolutePath());
         try {
-            PrintStream ps = new PrintStream(new SecureFileOutputStream(logfile, true));
+            PrintStream ps = new PrintStream(new SecureFileOutputStream(logfile, true), true, "UTF-8");
             System.setOut(ps);
             System.setErr(ps);
         } catch (IOException ioe) {
diff --git a/router/java/src/net/i2p/router/tasks/CryptoChecker.java b/router/java/src/net/i2p/router/tasks/CryptoChecker.java
index e022931ff1c3dc3960564512c9ee10435b0d7ba9..49bd84da52715c33dc909921de263f8a06c9e400 100644
--- a/router/java/src/net/i2p/router/tasks/CryptoChecker.java
+++ b/router/java/src/net/i2p/router/tasks/CryptoChecker.java
@@ -5,6 +5,7 @@ import java.security.NoSuchAlgorithmException;
 import javax.crypto.Cipher;
 import javax.crypto.spec.SecretKeySpec;
 
+import net.i2p.crypto.CryptoCheck;
 import net.i2p.crypto.SigType;
 import net.i2p.router.RouterContext;
 import net.i2p.util.Log;
@@ -57,7 +58,7 @@ public class CryptoChecker {
                     log.logAlways(Log.WARN, s);
                 System.out.println(s);
             }
-            if (!isUnlimited()) {
+            if (!CryptoCheck.isUnlimited()) {
                 s = "Please consider installing the Java Cryptography Unlimited Strength Jurisdiction Policy Files from ";
                 //if (SystemVersion.isJava8())
                 //    s  += JRE8;
@@ -79,28 +80,6 @@ public class CryptoChecker {
         }
     }
 
-    /**
-     *  Copied from CryptixAESEngine
-     */
-    private static boolean isUnlimited() {
-        try {
-            if (Cipher.getMaxAllowedKeyLength("AES") < 256)
-                return false;
-        } catch (NoSuchAlgorithmException e) {
-            return false;
-        } catch (NoSuchMethodError e) {
-            // JamVM, gij
-            try {
-                Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
-                SecretKeySpec key = new SecretKeySpec(new byte[32], "AES");
-                cipher.init(Cipher.ENCRYPT_MODE, key);
-            } catch (GeneralSecurityException gse) {
-                return false;
-            }
-        }
-        return true;
-    }
-
     public static void main(String[] args) {
         warnUnavailableCrypto(null);
     }
diff --git a/router/java/src/net/i2p/router/tasks/MarkLiveliness.java b/router/java/src/net/i2p/router/tasks/MarkLiveliness.java
index 00bba1a5bdac4faf20431d47035a761e6d59ad0b..34420f2d97b3815d1bee01aba8e537528e0bbba1 100644
--- a/router/java/src/net/i2p/router/tasks/MarkLiveliness.java
+++ b/router/java/src/net/i2p/router/tasks/MarkLiveliness.java
@@ -12,6 +12,7 @@ import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 
+import net.i2p.data.DataHelper;
 import net.i2p.router.Router;
 import net.i2p.util.Log;
 import net.i2p.util.SecureFileOutputStream;
@@ -45,7 +46,7 @@ public class MarkLiveliness implements SimpleTimer.TimedEvent {
         FileOutputStream fos = null;
         try { 
             fos = new SecureFileOutputStream(_pingFile);
-            fos.write(Long.toString(System.currentTimeMillis()).getBytes());
+            fos.write(DataHelper.getASCII(Long.toString(System.currentTimeMillis())));
         } catch (IOException ioe) {
             if (!_errorLogged) {
                 Log log = _router.getContext().logManager().getLog(MarkLiveliness.class);
diff --git a/router/java/src/net/i2p/router/tasks/OOMListener.java b/router/java/src/net/i2p/router/tasks/OOMListener.java
index d303659932a339305f4848bc4f934d3262849997..7f09f677dc9fdb7aea721ea863d46774d0174df5 100644
--- a/router/java/src/net/i2p/router/tasks/OOMListener.java
+++ b/router/java/src/net/i2p/router/tasks/OOMListener.java
@@ -8,6 +8,7 @@ import net.i2p.router.RouterContext;
 import net.i2p.router.util.EventLog;
 import net.i2p.util.I2PThread;
 import net.i2p.util.Log;
+import net.i2p.util.SystemVersion;
 
 /**
  *  Kaboom
@@ -48,9 +49,19 @@ public class OOMListener implements I2PThread.OOMEventListener {
             log.log(Log.CRIT, "Thread ran out of memory, shutting down I2P", oom);
             log.log(Log.CRIT, "free mem: " + Runtime.getRuntime().freeMemory() + 
                               " total mem: " + Runtime.getRuntime().totalMemory());
-            if (_context.hasWrapper())
+            if (_context.hasWrapper()) {
+                // Can't find any System property or wrapper property that gives
+                // you the actual config file path, have to guess
+                String path;
+                if (!SystemVersion.isWindows() && !SystemVersion.isMac() &&
+                    "i2psvc".equals(System.getProperty("user.name"))) {
+                    path = "/etc/i2p";
+                } else {
+                    path = _context.getBaseDir().toString();
+                }
                 log.log(Log.CRIT, "To prevent future shutdowns, increase wrapper.java.maxmemory in " +
-                                  _context.getBaseDir() + File.separatorChar + "wrapper.config");
+                                  path + File.separatorChar + "wrapper.config");
+            }
         } catch (OutOfMemoryError oome) {}
         try { 
             ThreadDump.dump(_context, 1);
diff --git a/router/java/src/net/i2p/router/time/NtpClient.java b/router/java/src/net/i2p/router/time/NtpClient.java
index 68c325f94a5dd2935fcdfeb75556395fc033b4e6..d5fecdc2df4b41fb40cd64e6f95bd65304c0a05b 100644
--- a/router/java/src/net/i2p/router/time/NtpClient.java
+++ b/router/java/src/net/i2p/router/time/NtpClient.java
@@ -55,7 +55,8 @@ class NtpClient {
     /** difference between the unix epoch and jan 1 1900 (NTP uses that) */
     private final static double SECONDS_1900_TO_EPOCH = 2208988800.0;
     private final static int NTP_PORT = 123;
-    
+    private static final int DEFAULT_TIMEOUT = 10*1000;
+
     /**
      * Query the ntp servers, returning the current time from first one we find
      *
@@ -84,7 +85,7 @@ class NtpClient {
      * @throws IllegalArgumentException if none of the servers are reachable
      * @since 0.7.12
      */
-    public static long[] currentTimeAndStratum(String serverNames[]) {
+    public static long[] currentTimeAndStratum(String serverNames[], int perServerTimeout) {
         if (serverNames == null) 
             throw new IllegalArgumentException("No NTP servers specified");
         ArrayList<String> names = new ArrayList<String>(serverNames.length);
@@ -92,7 +93,7 @@ class NtpClient {
             names.add(serverNames[i]);
         Collections.shuffle(names);
         for (int i = 0; i < names.size(); i++) {
-            long[] rv = currentTimeAndStratum(names.get(i));
+            long[] rv = currentTimeAndStratum(names.get(i), perServerTimeout);
             if (rv != null && rv[0] > 0)
                 return rv;
         }
@@ -105,7 +106,7 @@ class NtpClient {
      * @return milliseconds since january 1, 1970 (UTC), or -1 on error
      */
     public static long currentTime(String serverName) {
-         long[] la = currentTimeAndStratum(serverName);
+         long[] la = currentTimeAndStratum(serverName, DEFAULT_TIMEOUT);
          if (la != null)
              return la[0];
          return -1;
@@ -116,7 +117,7 @@ class NtpClient {
      * @return time in rv[0] and stratum in rv[1], or null for error
      * @since 0.7.12
      */
-    private static long[] currentTimeAndStratum(String serverName) {
+    private static long[] currentTimeAndStratum(String serverName, int timeout) {
         DatagramSocket socket = null;
         try {
             // Send request
@@ -135,7 +136,7 @@ class NtpClient {
 
             // Get response
             packet = new DatagramPacket(buf, buf.length);
-            socket.setSoTimeout(10*1000);
+            socket.setSoTimeout(timeout);
             socket.receive(packet);
 
             // Immediately record the incoming timestamp
diff --git a/router/java/src/net/i2p/router/time/NtpMessage.java b/router/java/src/net/i2p/router/time/NtpMessage.java
index 8a3aa0397796a9394017e3a89dc4c9737ed8ee03..ea02cce5f8884005e2ce3d90a4c7d68b0d648b43 100644
--- a/router/java/src/net/i2p/router/time/NtpMessage.java
+++ b/router/java/src/net/i2p/router/time/NtpMessage.java
@@ -77,7 +77,7 @@ import net.i2p.util.RandomSource;
 class NtpMessage {
     /**
      * This is a two-bit code warning of an impending leap second to be
-     * inserted/deleted in the last minute of the current day.  It's values
+     * inserted/deleted in the last minute of the current day.  Its values
      * may be as follows:
      *
      * Value     Meaning
@@ -442,7 +442,13 @@ class NtpMessage {
         // or stratum-1 (primary) servers, this is a four-character ASCII
         // string, left justified and zero padded to 32 bits.
         if(stratum==0 || stratum==1) {
-            return new String(ref);
+            StringBuilder buf = new StringBuilder(4);
+            for (int i = 0; i < 4; i++) {
+                if (ref[i] == 0)
+                    break;
+                buf.append((char) (ref[i] & 0xff));
+            }
+            return buf.toString();
         }
         
         // In NTP Version 3 secondary servers, this is the 32-bit IPv4
diff --git a/router/java/src/net/i2p/router/time/RouterTimestamper.java b/router/java/src/net/i2p/router/time/RouterTimestamper.java
index 4d8892442de2eea180f4adc9a94564cf7f7b1cd7..cde08d093d47029aa440bc52911382af6f17c05c 100644
--- a/router/java/src/net/i2p/router/time/RouterTimestamper.java
+++ b/router/java/src/net/i2p/router/time/RouterTimestamper.java
@@ -43,6 +43,8 @@ public class RouterTimestamper extends Timestamper {
     /** how many times do we have to query if we are changing the clock? */
     private static final int DEFAULT_CONCURRING_SERVERS = 3;
     private static final int MAX_CONSECUTIVE_FAILS = 10;
+    private static final int DEFAULT_TIMEOUT = 10*1000;
+    private static final int SHORT_TIMEOUT = 5*1000;
     
     public static final String PROP_QUERY_FREQUENCY = "time.queryFrequencyMs";
     public static final String PROP_SERVER_LIST = "time.sntpServerList";
@@ -177,7 +179,7 @@ public class RouterTimestamper extends Timestamper {
                             if (_log != null && _log.shouldDebug())
                                 _log.debug("Querying servers " + servers);
                             try {
-                                lastFailed = !queryTime(servers.toArray(new String[servers.size()]));
+                                lastFailed = !queryTime(servers.toArray(new String[servers.size()]), SHORT_TIMEOUT);
                             } catch (IllegalArgumentException iae) {
                                 if (!lastFailed && _log != null && _log.shouldWarn())
                                     _log.warn("Unable to reach any regional NTP servers: " + servers);
@@ -192,7 +194,7 @@ public class RouterTimestamper extends Timestamper {
                         if (_log != null && _log.shouldDebug())
                             _log.debug("Querying servers " + _servers);
                         try {
-                            lastFailed = !queryTime(_servers.toArray(new String[_servers.size()]));
+                            lastFailed = !queryTime(_servers.toArray(new String[_servers.size()]), DEFAULT_TIMEOUT);
                         } catch (IllegalArgumentException iae) {
                             lastFailed = true;
                         }
@@ -259,18 +261,18 @@ public class RouterTimestamper extends Timestamper {
     /**
      * True if the time was queried successfully, false if it couldn't be
      */
-    private boolean queryTime(String serverList[]) throws IllegalArgumentException {
+    private boolean queryTime(String serverList[], int perServerTimeout) throws IllegalArgumentException {
         long found[] = new long[_concurringServers];
         long now = -1;
         int stratum = -1;
         long expectedDelta = 0;
         _wellSynced = false;
         for (int i = 0; i < _concurringServers; i++) {
-            if (i > 0) {
-                // this delays startup when net is disconnected or the timeserver list is bad, don't make it too long
-                try { Thread.sleep(2*1000); } catch (InterruptedException ie) {}
-            }
-            long[] timeAndStratum = NtpClient.currentTimeAndStratum(serverList);
+            //if (i > 0) {
+            //    // this delays startup when net is disconnected or the timeserver list is bad, don't make it too long
+            //    try { Thread.sleep(2*1000); } catch (InterruptedException ie) {}
+            //}
+            long[] timeAndStratum = NtpClient.currentTimeAndStratum(serverList, perServerTimeout);
             now = timeAndStratum[0];
             stratum = (int) timeAndStratum[1];
             long delta = now - _context.clock().now();
diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java
index a9b8020607ea8f634696fa03b9d2c902fa0d9d89..fbea0299088118e861d7d141f694efc8daf2e7b0 100644
--- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java
+++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java
@@ -499,7 +499,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade {
         buf.append("<tt>");
         boolean found = _context.netDb().lookupRouterInfoLocally(peer) != null;
         if (found)
-            buf.append("<a title=\"").append(_("NetDb entry")).append("\" href=\"netdb?r=").append(h).append("\">");
+            buf.append("<a title=\"").append(_t("NetDb entry")).append("\" href=\"netdb?r=").append(h).append("\">");
         buf.append(h);
         if (found)
             buf.append("</a>");
@@ -519,7 +519,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade {
     /**
      *  Translate
      */
-    private final String _(String s) {
+    private final String _t(String s) {
         return Translate.getString(s, _context, BUNDLE_NAME);
     }
 
diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java
index b650e5c03e965c89b28cc308e0da8e2904f85a10..209d7ba62c05fa3b71935b64286f3ecda0940a5b 100644
--- a/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java
+++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthLimiter.java
@@ -98,7 +98,7 @@ public class FIFOBandwidthLimiter {
         _lastStatsUpdated = now();
         _refiller = new FIFOBandwidthRefiller(_context, this);
         _refillerThread = new I2PThread(_refiller, "BWRefiller", true);
-        _refillerThread.setPriority(I2PThread.NORM_PRIORITY-1);
+        _refillerThread.setPriority(I2PThread.NORM_PRIORITY + 1);
         _refillerThread.start();
     }
 
@@ -433,7 +433,7 @@ public class FIFOBandwidthLimiter {
                     if (_log.shouldLog(Log.DEBUG))
                         _log.debug("Still denying the " + _pendingInboundRequests.size() 
                                   + " pending inbound requests (status: " + getStatus().toString()
-                                  + ", longest waited " + locked_getLongestInboundWait() + " in)");
+                                  + ", longest waited " + locked_getLongestInboundWait() + ')');
                 }
             }
         }
@@ -505,7 +505,6 @@ public class FIFOBandwidthLimiter {
      */
     private final void locked_satisfyInboundAvailable(List<Request> satisfied) {
         for (int i = 0; i < _pendingInboundRequests.size(); i++) {
-            if (_availableInbound.get() <= 0) break;
             SimpleRequest req = _pendingInboundRequests.get(i);
             long waited = now() - req.getRequestTime();
             if (req.getAborted()) {
@@ -520,17 +519,22 @@ public class FIFOBandwidthLimiter {
                 i--;
                 continue;
             }
-            if ( (req.getAllocationsSinceWait() > 0) && (req.getCompleteListener() == null) ) {
+            int avi = _availableInbound.get();
+            if (avi <= 0) break;
+            // NO, don't do this, since SSU requires a full allocation to proceed.
+            // By stopping after a partial allocation, we stall SSU.
+            // This never affected NTCP (which also requires a full allocation)
+            // since it registers a CompleteListener, so getAllocationsSinceWait() was always zero.
+            //if (req.getAllocationsSinceWait() > 0) {
                 // we have already allocated some values to this request, but
                 // they haven't taken advantage of it yet (most likely they're
                 // IO bound)
                 // (also, the complete listener is only set for situations where 
                 // waitForNextAllocation() is never called)
-                continue;
-            }
+            //    continue;
+            //}
             // ok, they are really waiting for us to give them stuff
             int requested = req.getPendingRequested();
-            int avi = _availableInbound.get();
             int allocated;
             if (avi >= requested) 
                 allocated = requested;
@@ -579,7 +583,7 @@ public class FIFOBandwidthLimiter {
                     if (_log.shouldLog(Log.INFO))
                         _log.info("Still denying the " + _pendingOutboundRequests.size() 
                                   + " pending outbound requests (status: " + getStatus().toString()
-                                  + ", longest waited " + locked_getLongestOutboundWait() + " out)");
+                                  + ", longest waited " + locked_getLongestOutboundWait() + ')');
                 }
             }
         }
@@ -623,7 +627,6 @@ public class FIFOBandwidthLimiter {
      */
     private final void locked_satisfyOutboundAvailable(List<Request> satisfied) {
         for (int i = 0; i < _pendingOutboundRequests.size(); i++) {
-            if (_availableOutbound.get() <= 0) break;
             SimpleRequest req = _pendingOutboundRequests.get(i);
             long waited = now() - req.getRequestTime();
             if (req.getAborted()) {
@@ -638,17 +641,22 @@ public class FIFOBandwidthLimiter {
                 i--;
                 continue;
             }
-            if (req.getAllocationsSinceWait() > 0) {
+            int avo = _availableOutbound.get();
+            if (avo <= 0) break;
+            // NO, don't do this, since SSU requires a full allocation to proceed.
+            // By stopping after a partial allocation, we stall SSU.
+            // This never affected NTCP (which also requires a full allocation)
+            // since it registers a CompleteListener, so getAllocationsSinceWait() was always zero.
+            //if (req.getAllocationsSinceWait() > 0) {
                 // we have already allocated some values to this request, but
                 // they haven't taken advantage of it yet (most likely they're
                 // IO bound)
-                if (_log.shouldLog(Log.WARN))
-                    _log.warn("multiple allocations since wait... ntcp shouldn't do this: " + req);
-                continue;
-            }
+            //    if (_log.shouldLog(Log.WARN))
+            //        _log.warn("multiple allocations since wait... ntcp shouldn't do this: " + req);
+            //    continue;
+            //}
             // ok, they are really waiting for us to give them stuff
             int requested = req.getPendingRequested();
-            int avo = _availableOutbound.get();
             int allocated;
             if (avo >= requested) 
                 allocated = requested;
@@ -659,15 +667,6 @@ public class FIFOBandwidthLimiter {
             req.allocateBytes(allocated);
             satisfied.add(req);
             if (req.getPendingRequested() > 0) {
-                if (req.attachment() != null) {
-                    if (_log.shouldLog(Log.INFO))
-                         _log.info("Allocating " + allocated + " bytes outbound as a partial grant to " 
-                                    + req
-                                    + " waited " 
-                                    + waited
-                                    + "ms) pending " + _pendingOutboundRequests.size()
-                                    + ", longest waited " + locked_getLongestOutboundWait() + " out");
-                }
                 if (_log.shouldLog(Log.DEBUG))
                      _log.debug("Allocating " + allocated + " bytes outbound as a partial grant to " 
                                 + req
@@ -676,15 +675,6 @@ public class FIFOBandwidthLimiter {
                                 + "ms) pending " + _pendingOutboundRequests.size()
                                 + ", longest waited " + locked_getLongestOutboundWait() + " out");
             } else {
-                if (req.attachment() != null) {
-                    if (_log.shouldLog(Log.INFO))
-                         _log.info("Allocating " + allocated + " bytes outbound to finish the partial grant to " 
-                                    + req
-                                    + " waited " 
-                                    + waited
-                                    + "ms) pending " + _pendingOutboundRequests.size()
-                                    + ", longest waited " + locked_getLongestOutboundWait() + " out)");
-                }
                 if (_log.shouldLog(Log.DEBUG))
                      _log.debug("Allocating " + allocated + " bytes outbound to finish the partial grant to " 
                                 + req
@@ -717,8 +707,8 @@ public class FIFOBandwidthLimiter {
             _availableInbound.addAndGet(0 - requested);
             _totalAllocatedInboundBytes.addAndGet(requested);
         }
-        if (_log.shouldLog(Log.INFO))
-            _log.info("IB shortcut for " + requested + "B? " + rv);
+        //if (_log.shouldLog(Log.INFO))
+        //    _log.info("IB shortcut for " + requested + "B? " + rv);
         return rv;
     }
     
@@ -739,8 +729,8 @@ public class FIFOBandwidthLimiter {
             _availableOutbound.addAndGet(0 - requested);
             _totalAllocatedOutboundBytes.addAndGet(requested);
         }
-        if (_log.shouldLog(Log.INFO))
-            _log.info("OB shortcut for " + requested + "B? " + rv);
+        //if (_log.shouldLog(Log.INFO))
+        //    _log.info("OB shortcut for " + requested + "B? " + rv);
         return rv;
     }
 
@@ -807,11 +797,19 @@ public class FIFOBandwidthLimiter {
         /** uses System clock, not context clock */
         public long getRequestTime() { return _requestTime; }
         public int getTotalRequested() { return _total; }
-        public int getPendingRequested() { return _total - _allocated; }
+        public synchronized int getPendingRequested() { return _total - _allocated; }
         public boolean getAborted() { return _aborted; }
-        public void abort() { _aborted = true; }
+        public synchronized void abort() {
+            _aborted = true;
+            // so isComplete() will return true
+            _allocated = _total;
+            notifyAllocation();
+        }
         public CompleteListener getCompleteListener() { return _lsnr; }
 
+        /**
+         *  Only used by NTCP.
+         */
         public void setCompleteListener(CompleteListener lsnr) {
             boolean complete = false;
             synchronized (this) {
@@ -827,35 +825,44 @@ public class FIFOBandwidthLimiter {
             }
         }
         
-        private boolean isComplete() { return _allocated >= _total; }
+        private synchronized boolean isComplete() { return _allocated >= _total; }
         
+        /**
+         *  Only used by SSU.
+         *  May return without allocating.
+         *  Check getPendingRequested() > 0 in a loop.
+         */
         public void waitForNextAllocation() {
-            _waited = true;
-            _allocationsSinceWait = 0;
             boolean complete = false;
             try {
                 synchronized (this) {
+                    _waited = true;
+                    _allocationsSinceWait = 0;
                     if (isComplete())
                         complete = true;
                     else
-                        wait();
+                        wait(100);
                 }
             } catch (InterruptedException ie) {}
             if (complete && _lsnr != null)
                 _lsnr.complete(this);
         }
 
-        int getAllocationsSinceWait() { return _waited ? _allocationsSinceWait : 0; }
+        /**
+         *  Only returns nonzero if there's no listener and waitForNextAllocation()
+         *  has been called (i.e. SSU)
+         *  Now unused.
+         */
+        synchronized int getAllocationsSinceWait() { return _waited ? _allocationsSinceWait : 0; }
 
-        void allocateBytes(int bytes) {
+        /**
+         *  Increments allocationsSinceWait only if there is a listener.
+         *  Does not notify; caller must call notifyAllocation()
+         */
+        synchronized void allocateBytes(int bytes) {
             _allocated += bytes;
             if (_lsnr == null)
                 _allocationsSinceWait++;
-            //if (isComplete()) {
-            //    if (_log.shouldLog(Log.INFO))
-            //        _log.info("allocate " + bytes + " completed, listener=" + _lsnr);
-            //}
-            //notifyAllocation(); // handled within the satisfy* methods
         }
 
         void notifyAllocation() {
@@ -884,8 +891,8 @@ public class FIFOBandwidthLimiter {
 
         @Override
         public String toString() {
-            return "Req" + _requestId + " priority " + _priority +
-                   _allocated + '/' + _total + " bytes";
+            return "Req: " + _requestId + " priority: " + _priority +
+                   ' ' + _allocated + '/' + _total + " bytes";
         }
     }
 
@@ -899,7 +906,11 @@ public class FIFOBandwidthLimiter {
         public int getTotalRequested();
         /** how many bytes were requested and haven't yet been allocated? */
         public int getPendingRequested();
-        /** block until we are allocated some more bytes */
+        /**
+         *  Block until we are allocated some more bytes.
+         *  May return without allocating.
+         *  Check getPendingRequested() > 0 in a loop.
+         */
         public void waitForNextAllocation();
         /** we no longer want the data requested (the connection closed) */
         public void abort();
diff --git a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java
index 190c3b6416078782733e2299f7caf659f95a406b..3ba1515af6f131f4f8d8846f9dc926f21bf19b05 100644
--- a/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java
+++ b/router/java/src/net/i2p/router/transport/FIFOBandwidthRefiller.java
@@ -56,9 +56,9 @@ public class FIFOBandwidthRefiller implements Runnable {
      *  of moving the default bandwidth class from L to M, or maybe
      *  adjusting bandwidth class boundaries.
      */
-    public static final int DEFAULT_OUTBOUND_BANDWIDTH = 40;
+    public static final int DEFAULT_OUTBOUND_BANDWIDTH = 60;
     public static final int DEFAULT_INBOUND_BURST_BANDWIDTH = 96;
-    public static final int DEFAULT_OUTBOUND_BURST_BANDWIDTH = 40;
+    public static final int DEFAULT_OUTBOUND_BURST_BANDWIDTH = 60;
 
     public static final int DEFAULT_BURST_SECONDS = 60;
     
@@ -75,7 +75,7 @@ public class FIFOBandwidthRefiller implements Runnable {
      *  Do not increase without adding a new Bloom filter size!
      *  See util/DecayingBloomFilter and tunnel/BloomFilterIVValidator.
      */
-    public static final int MAX_OUTBOUND_BANDWIDTH = 8192;
+    public static final int MAX_OUTBOUND_BANDWIDTH = 16384;
     
     /** 
      * how often we replenish the queues.  
diff --git a/router/java/src/net/i2p/router/transport/GetBidsJob.java b/router/java/src/net/i2p/router/transport/GetBidsJob.java
index 676f72e163f53518a43644275451ee84cfa1b77e..aaa50ee45c484d9b434ec6798c3eebee9080c3fe 100644
--- a/router/java/src/net/i2p/router/transport/GetBidsJob.java
+++ b/router/java/src/net/i2p/router/transport/GetBidsJob.java
@@ -58,7 +58,7 @@ class GetBidsJob extends JobImpl {
         Hash us = context.routerHash();
         if (to.equals(us)) {
             if (log.shouldLog(Log.ERROR))
-                log.error("wtf, send a message to ourselves?  nuh uh. msg = " + msg);
+                log.error("send a message to ourselves?  nuh uh. msg = " + msg);
             context.statManager().addRateData("transport.bidFailSelf", msg.getLifetime());
             fail(context, msg);
             return;
diff --git a/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java b/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java
index 584da497fe8a0a260d73e90227ef3642a9d46780..9c04f52b63e6d2e03892952643de6c289aae0deb 100644
--- a/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java
+++ b/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java
@@ -96,6 +96,7 @@ public class OutboundMessageRegistry {
      * @return non-null List of OutNetMessage describing messages that were waiting for 
      *         the payload
      */
+    @SuppressWarnings("unchecked")
     public List<OutNetMessage> getOriginalMessages(I2NPMessage message) {
         List<MessageSelector> matchedSelectors = null;
         List<MessageSelector> removedSelectors = null;
@@ -193,11 +194,12 @@ public class OutboundMessageRegistry {
     /**
      *  @param allowEmpty is msg.getMessage() allowed to be null?
      */
+    @SuppressWarnings("unchecked")
     private void registerPending(OutNetMessage msg, boolean allowEmpty) {
         if ( (!allowEmpty) && (msg.getMessage() == null) )
-                throw new IllegalArgumentException("OutNetMessage doesn't contain an I2NPMessage? wtf");
+                throw new IllegalArgumentException("OutNetMessage doesn't contain an I2NPMessage? Impossible?");
         MessageSelector sel = msg.getReplySelector();
-        if (sel == null) throw new IllegalArgumentException("No reply selector?  wtf");
+        if (sel == null) throw new IllegalArgumentException("No reply selector? Impossible?");
 
         if (!_activeMessages.add(msg))
             return; // dont add dups
@@ -229,6 +231,7 @@ public class OutboundMessageRegistry {
     /**
      *  @param msg may be be null
      */
+    @SuppressWarnings("unchecked")
     public void unregisterPending(OutNetMessage msg) {
         if (msg == null) return;
         MessageSelector sel = msg.getReplySelector();
@@ -262,6 +265,7 @@ public class OutboundMessageRegistry {
             _nextExpire = -1;
         }
 
+        @SuppressWarnings("unchecked")
         public void timeReached() {
             long now = _context.clock().now();
             List<MessageSelector> removing = new ArrayList<MessageSelector>(8);
@@ -326,12 +330,14 @@ public class OutboundMessageRegistry {
                 if (r > 0 || e > 0 || a > 0)
                     _log.debug("Expired: " + e + " remaining: " + r + " active: " + a);
             }
-            if (_nextExpire <= now)
-                _nextExpire = now + 10*1000;
-            schedule(_nextExpire - now);
+            synchronized(this) {
+                if (_nextExpire <= now)
+                    _nextExpire = now + 10*1000;
+                schedule(_nextExpire - now);
+            }
         }
 
-        public void scheduleExpiration(MessageSelector sel) {
+        public synchronized void scheduleExpiration(MessageSelector sel) {
             long now = _context.clock().now();
             if ( (_nextExpire <= now) || (sel.getExpiration() < _nextExpire) ) {
                 _nextExpire = sel.getExpiration();
diff --git a/router/java/src/net/i2p/router/transport/TransportImpl.java b/router/java/src/net/i2p/router/transport/TransportImpl.java
index df536c42cc2f06640be65288d747dfa089157221..11fb08b96a8c7e111a734de91382ce4f95a1b6ba 100644
--- a/router/java/src/net/i2p/router/transport/TransportImpl.java
+++ b/router/java/src/net/i2p/router/transport/TransportImpl.java
@@ -373,9 +373,9 @@ public abstract class TransportImpl implements Transport {
                           + "): " + allTime + "ms/" + sendTime + "ms after failing on: "
                           + msg.getFailedTransports() + " and succeeding on " + getStyle());
             if ( (allTime > 60*1000) && (sendSuccessful) ) {
-                // WTF!!@#
+                // VERY slow
                 if (_log.shouldLog(Log.WARN))
-                    _log.warn("WTF, more than a minute slow? " + msg.getMessageType()
+                    _log.warn("Severe latency? More than a minute slow? " + msg.getMessageType()
                               + " of id " + msg.getMessageId() + " (send begin on "
                               + new Date(msg.getSendBegin()) + " / created on "
                               + new Date(msg.getCreated()) + "): " + msg);
@@ -497,7 +497,7 @@ public abstract class TransportImpl implements Transport {
             _listener.messageReceived(inMsg, remoteIdent, remoteIdentHash);
         } else {
             if (_log.shouldLog(Log.ERROR))
-                _log.error("WTF! Null listener! this = " + toString(), new Exception("Null listener"));
+                _log.error("Null listener! this = " + toString(), new Exception("Null listener"));
         }
     }
 
@@ -983,7 +983,7 @@ public abstract class TransportImpl implements Transport {
      *  Translate
      *  @since 0.9.8 moved from transports
      */
-    protected String _(String s) {
+    protected String _t(String s) {
         return Translate.getString(s, _context, BUNDLE_NAME);
     }
 
@@ -991,7 +991,7 @@ public abstract class TransportImpl implements Transport {
      *  Translate
      *  @since 0.9.8 moved from transports
      */
-    protected String _(String s, Object o) {
+    protected String _t(String s, Object o) {
         return Translate.getString(s, o, _context, BUNDLE_NAME);
     }
 
diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java
index e5240d6a2d1b0d06c3bee482aefa16c46314d596..b49ff1551429868cbecd57fcefbaa1481c7f7d56 100644
--- a/router/java/src/net/i2p/router/transport/TransportManager.java
+++ b/router/java/src/net/i2p/router/transport/TransportManager.java
@@ -530,7 +530,7 @@ public class TransportManager implements TransportEventListener {
         if (msg == null)
             throw new IllegalArgumentException("Null message?  no bidding on a null outNetMessage!");
         if (_context.router().getRouterInfo().equals(msg.getTarget()))
-            throw new IllegalArgumentException("WTF, bids for a message bound to ourselves?");
+            throw new IllegalArgumentException("Bids for a message bound to ourselves?");
 
         List<TransportBid> rv = new ArrayList<TransportBid>(_transports.size());
         Set<String> failedTransports = msg.getFailedTransports();
@@ -671,9 +671,9 @@ public class TransportManager implements TransportEventListener {
     public void renderStatusHTML(Writer out, String urlBase, int sortFlags) throws IOException {
         if (_context.getBooleanProperty(PROP_ADVANCED)) {
             out.write("<p><b>");
-            out.write(_("Status"));
+            out.write(_t("Status"));
             out.write(": ");
-            out.write(_(getReachabilityStatus().toStatusString()));
+            out.write(_t(getReachabilityStatus().toStatusString()));
             out.write("</b></p>");
         }
         TreeMap<String, Transport> transports = new TreeMap<String, Transport>();
@@ -689,7 +689,7 @@ public class TransportManager implements TransportEventListener {
         }
 
         StringBuilder buf = new StringBuilder(4*1024);
-        buf.append("<h3>").append(_("Router Transport Addresses")).append("</h3><pre>\n");
+        buf.append("<h3>").append(_t("Router Transport Addresses")).append("</h3><pre>\n");
         for (Transport t : _transports.values()) {
             if (t.hasCurrentAddress()) {
                 for (RouterAddress ra : t.getCurrentAddresses()) {
@@ -697,7 +697,7 @@ public class TransportManager implements TransportEventListener {
                     buf.append("\n\n");
                 }
             } else {
-                buf.append(_("{0} is used for outbound connections only", t.getStyle()));
+                buf.append(_t("{0} is used for outbound connections only", t.getStyle()));
                 buf.append("\n\n");
             }
         }
@@ -708,7 +708,7 @@ public class TransportManager implements TransportEventListener {
         } else if (_upnpManager != null) {
             out.write(_upnpManager.renderStatusHTML());
         } else {
-            out.write("<h3><a name=\"upnp\"></a>" + _("UPnP is not enabled") + "</h3>\n");
+            out.write("<h3><a name=\"upnp\"></a>" + _t("UPnP is not enabled") + "</h3>\n");
         }
         out.write("</p>\n");
         out.flush();
@@ -717,38 +717,38 @@ public class TransportManager implements TransportEventListener {
 
     private final String getTransportsLegend() {
         StringBuilder buf = new StringBuilder(1024);
-        buf.append("<h3 id=\"help\">").append(_("Help")).append("</h3><div class=\"configure\"><p>")
-           .append(_("Your transport connection limits are automatically set based on your configured bandwidth."))
+        buf.append("<h3 id=\"help\">").append(_t("Help")).append("</h3><div class=\"configure\"><p>")
+           .append(_t("Your transport connection limits are automatically set based on your configured bandwidth."))
            .append('\n')
-           .append(_("To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page."))
+           .append(_t("To override these limits, add the settings i2np.ntcp.maxConnections=nnn and i2np.udp.maxConnections=nnn on the advanced configuration page."))
            .append("</p></div>\n");
-        buf.append("<h3>").append(_("Definitions")).append("</h3><div class=\"configure\">" +
-                   "<p><b id=\"def.peer\">").append(_("Peer")).append("</b>: ").append(_("The remote peer, identified by router hash")).append("<br>\n" +
-                   "<b id=\"def.dir\">").append(_("Dir")).append("</b>: " +
-                   "<img alt=\"Inbound\" src=\"/themes/console/images/inbound.png\"> ").append(_("Inbound connection")).append("<br>\n" +
+        buf.append("<h3>").append(_t("Definitions")).append("</h3><div class=\"configure\">" +
+                   "<p><b id=\"def.peer\">").append(_t("Peer")).append("</b>: ").append(_t("The remote peer, identified by router hash")).append("<br>\n" +
+                   "<b id=\"def.dir\">").append(_t("Dir")).append("</b>: " +
+                   "<img alt=\"Inbound\" src=\"/themes/console/images/inbound.png\"> ").append(_t("Inbound connection")).append("<br>\n" +
                    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
-                   "<img alt=\"Outbound\" src=\"/themes/console/images/outbound.png\"> ").append(_("Outbound connection")).append("<br>\n" +
+                   "<img alt=\"Outbound\" src=\"/themes/console/images/outbound.png\"> ").append(_t("Outbound connection")).append("<br>\n" +
                    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
-                   "<img src=\"/themes/console/images/inbound.png\" alt=\"V\" height=\"8\" width=\"12\"> ").append(_("They offered to introduce us (help other peers traverse our firewall)")).append("<br>\n" +
+                   "<img src=\"/themes/console/images/inbound.png\" alt=\"V\" height=\"8\" width=\"12\"> ").append(_t("They offered to introduce us (help other peers traverse our firewall)")).append("<br>\n" +
                    "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" +
-                   "<img src=\"/themes/console/images/outbound.png\" alt=\"^\" height=\"8\" width=\"12\"> ").append(_("We offered to introduce them (help other peers traverse their firewall)")).append("<br>\n" +
-                   "<b id=\"def.idle\">").append(_("Idle")).append("</b>: ").append(_("How long since a packet has been received / sent")).append("<br>\n" +
-                   "<b id=\"def.rate\">").append(_("In/Out")).append("</b>: ").append(_("The smoothed inbound / outbound transfer rate (KBytes per second)")).append("<br>\n" +
-                   "<b id=\"def.up\">").append(_("Up")).append("</b>: ").append(_("How long ago this connection was established")).append("<br>\n" +
-                   "<b id=\"def.skew\">").append(_("Skew")).append("</b>: ").append(_("The difference between the peer's clock and your own")).append("<br>\n" +
-                   "<b id=\"def.cwnd\">CWND</b>: ").append(_("The congestion window, which is how many bytes can be sent without an acknowledgement")).append(" / <br>\n" +
-                   "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ").append(_("The number of sent messages awaiting acknowledgement")).append(" /<br>\n" +
-                   "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ").append(_("The maximum number of concurrent messages to send")).append(" /<br>\n"+
-                   "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ").append(_("The number of pending sends which exceed congestion window")).append("<br>\n" +
-                   "<b id=\"def.ssthresh\">SST</b>: ").append(_("The slow start threshold")).append("<br>\n" +
-                   "<b id=\"def.rtt\">RTT</b>: ").append(_("The round trip time in milliseconds")).append("<br>\n" +
-                   //"<b id=\"def.dev\">").append(_("Dev")).append("</b>: ").append(_("The standard deviation of the round trip time in milliseconds")).append("<br>\n" +
-                   "<b id=\"def.rto\">RTO</b>: ").append(_("The retransmit timeout in milliseconds")).append("<br>\n" +
-                   "<b id=\"def.mtu\">MTU</b>: ").append(_("Current maximum send packet size / estimated maximum receive packet size (bytes)")).append("<br>\n" +
-                   "<b id=\"def.send\">").append(_("TX")).append("</b>: ").append(_("The total number of packets sent to the peer")).append("<br>\n" +
-                   "<b id=\"def.recv\">").append(_("RX")).append("</b>: ").append(_("The total number of packets received from the peer")).append("<br>\n" +
-                   "<b id=\"def.resent\">").append(_("Dup TX")).append("</b>: ").append(_("The total number of packets retransmitted to the peer")).append("<br>\n" +
-                   "<b id=\"def.dupRecv\">").append(_("Dup RX")).append("</b>: ").append(_("The total number of duplicate packets received from the peer")).append("</p>" +
+                   "<img src=\"/themes/console/images/outbound.png\" alt=\"^\" height=\"8\" width=\"12\"> ").append(_t("We offered to introduce them (help other peers traverse their firewall)")).append("<br>\n" +
+                   "<b id=\"def.idle\">").append(_t("Idle")).append("</b>: ").append(_t("How long since a packet has been received / sent")).append("<br>\n" +
+                   "<b id=\"def.rate\">").append(_t("In/Out")).append("</b>: ").append(_t("The smoothed inbound / outbound transfer rate (KBytes per second)")).append("<br>\n" +
+                   "<b id=\"def.up\">").append(_t("Up")).append("</b>: ").append(_t("How long ago this connection was established")).append("<br>\n" +
+                   "<b id=\"def.skew\">").append(_t("Skew")).append("</b>: ").append(_t("The difference between the peer's clock and your own")).append("<br>\n" +
+                   "<b id=\"def.cwnd\">CWND</b>: ").append(_t("The congestion window, which is how many bytes can be sent without an acknowledgement")).append(" / <br>\n" +
+                   "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ").append(_t("The number of sent messages awaiting acknowledgement")).append(" /<br>\n" +
+                   "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ").append(_t("The maximum number of concurrent messages to send")).append(" /<br>\n"+
+                   "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ").append(_t("The number of pending sends which exceed congestion window")).append("<br>\n" +
+                   "<b id=\"def.ssthresh\">SST</b>: ").append(_t("The slow start threshold")).append("<br>\n" +
+                   "<b id=\"def.rtt\">RTT</b>: ").append(_t("The round trip time in milliseconds")).append("<br>\n" +
+                   //"<b id=\"def.dev\">").append(_t("Dev")).append("</b>: ").append(_t("The standard deviation of the round trip time in milliseconds")).append("<br>\n" +
+                   "<b id=\"def.rto\">RTO</b>: ").append(_t("The retransmit timeout in milliseconds")).append("<br>\n" +
+                   "<b id=\"def.mtu\">MTU</b>: ").append(_t("Current maximum send packet size / estimated maximum receive packet size (bytes)")).append("<br>\n" +
+                   "<b id=\"def.send\">").append(_t("TX")).append("</b>: ").append(_t("The total number of packets sent to the peer")).append("<br>\n" +
+                   "<b id=\"def.recv\">").append(_t("RX")).append("</b>: ").append(_t("The total number of packets received from the peer")).append("<br>\n" +
+                   "<b id=\"def.resent\">").append(_t("Dup TX")).append("</b>: ").append(_t("The total number of packets retransmitted to the peer")).append("<br>\n" +
+                   "<b id=\"def.dupRecv\">").append(_t("Dup RX")).append("</b>: ").append(_t("The total number of duplicate packets received from the peer")).append("</p>" +
                    "</div>\n");
         return buf.toString();
     }
@@ -770,14 +770,14 @@ public class TransportManager implements TransportEventListener {
     /**
      *  Translate
      */
-    private final String _(String s) {
+    private final String _t(String s) {
         return Translate.getString(s, _context, BUNDLE_NAME);
     }
 
     /**
      *  Translate
      */
-    private final String _(String s, Object o) {
+    private final String _t(String s, Object o) {
         return Translate.getString(s, o, _context, BUNDLE_NAME);
     }
 }
diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java
index 6753c09fcc927aaf958c83584fc9e2484fe1a333..26c7610b5f41c26e4062de8a2e9c83ff205aa95a 100644
--- a/router/java/src/net/i2p/router/transport/UPnP.java
+++ b/router/java/src/net/i2p/router/transport/UPnP.java
@@ -19,6 +19,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import net.i2p.I2PAppContext;
 import net.i2p.data.DataHelper;
 import net.i2p.util.Addresses;
+import net.i2p.util.I2PThread;
 import net.i2p.util.Log;
 import net.i2p.util.Translate;
 
@@ -557,68 +558,68 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		for(int i=0; i<sl.size(); i++) {
 			Service serv = sl.getService(i);
 			if(serv == null) continue;
-			sb.append("<li>").append(_("Service")).append(": ");
+			sb.append("<li>").append(_t("Service")).append(": ");
 			// NOTE: Group all toString() of common actions together
 			// to avoid excess fetches, since toString() caches.
 			if("urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1".equals(serv.getServiceType())){
-				sb.append(_("WAN Common Interface Configuration"));
-				sb.append("<ul><li>").append(_("Status")).append(": ")
+				sb.append(_t("WAN Common Interface Configuration"));
+				sb.append("<ul><li>").append(_t("Status")).append(": ")
 				  .append(toString("GetCommonLinkProperties", "NewPhysicalLinkStatus", serv));
-				sb.append("<li>").append(_("Type")).append(": ")
+				sb.append("<li>").append(_t("Type")).append(": ")
 				  .append(toString("GetCommonLinkProperties", "NewWANAccessType", serv));
-				sb.append("<li>").append(_("Upstream")).append(": ")
+				sb.append("<li>").append(_t("Upstream")).append(": ")
 				  .append(toString("GetCommonLinkProperties", "NewLayer1UpstreamMaxBitRate", serv));
-				sb.append("<li>").append(_("Downstream")).append(": ")
+				sb.append("<li>").append(_t("Downstream")).append(": ")
 				  .append(toString("GetCommonLinkProperties", "NewLayer1DownstreamMaxBitRate", serv))
 				  .append("</li>");
 			}else if("urn:schemas-upnp-org:service:WANPPPConnection:1".equals(serv.getServiceType())){
-				sb.append(_("WAN PPP Connection"));
-				sb.append("<ul><li>").append(_("Status")).append(": ")
+				sb.append(_t("WAN PPP Connection"));
+				sb.append("<ul><li>").append(_t("Status")).append(": ")
 				  .append(toString("GetStatusInfo", "NewConnectionStatus", serv));
 				String up = toString("GetStatusInfo", "NewUptime", serv);
 				if (up != null) {
 					try {
 						long uptime = Long.parseLong(up);
 						uptime *= 1000;
-						sb.append("<li>").append(_("Uptime")).append(": ")
+						sb.append("<li>").append(_t("Uptime")).append(": ")
 						  .append(DataHelper.formatDuration2(uptime));
 					} catch (NumberFormatException nfe) {}
 				}
-				sb.append("<li>").append(_("Type")).append(": ")
+				sb.append("<li>").append(_t("Type")).append(": ")
 				  .append(toString("GetConnectionTypeInfo", "NewConnectionType", serv));
-				sb.append("<li>").append(_("Upstream")).append(": ")
+				sb.append("<li>").append(_t("Upstream")).append(": ")
 				  .append(toString("GetLinkLayerMaxBitRates", "NewUpstreamMaxBitRate", serv));
-				sb.append("<li>").append(_("Downstream")).append(": ")
+				sb.append("<li>").append(_t("Downstream")).append(": ")
 				  .append(toString("GetLinkLayerMaxBitRates", "NewDownstreamMaxBitRate", serv) + "<br>");
-				sb.append("<li>").append(_("External IP")).append(": ")
+				sb.append("<li>").append(_t("External IP")).append(": ")
 				  .append(toString("GetExternalIPAddress", "NewExternalIPAddress", serv))
 				  .append("</li>");
 			}else if("urn:schemas-upnp-org:service:Layer3Forwarding:1".equals(serv.getServiceType())){
-				sb.append(_("Layer 3 Forwarding"));
-				sb.append("<ul><li>").append(_("Default Connection Service")).append(": ")
+				sb.append(_t("Layer 3 Forwarding"));
+				sb.append("<ul><li>").append(_t("Default Connection Service")).append(": ")
 				  .append(toString("GetDefaultConnectionService", "NewDefaultConnectionService", serv))
 				  .append("</li>");
 			}else if(WAN_IP_CONNECTION.equals(serv.getServiceType())){
-				sb.append(_("WAN IP Connection"));
-				sb.append("<ul><li>").append(_("Status")).append(": ")
+				sb.append(_t("WAN IP Connection"));
+				sb.append("<ul><li>").append(_t("Status")).append(": ")
 				  .append(toString("GetStatusInfo", "NewConnectionStatus", serv));
 				String up = toString("GetStatusInfo", "NewUptime", serv);
 				if (up != null) {
 					try {
 						long uptime = Long.parseLong(up);
 						uptime *= 1000;
-						sb.append("<li>").append(_("Uptime")).append(": ")
+						sb.append("<li>").append(_t("Uptime")).append(": ")
 						  .append(DataHelper.formatDuration2(uptime));
 					} catch (NumberFormatException nfe) {}
 				}
-				sb.append("<li>").append(_("Type")).append(": ")
+				sb.append("<li>").append(_t("Type")).append(": ")
 				  .append(toString("GetConnectionTypeInfo", "NewConnectionType", serv));
-				sb.append("<li>").append(_("External IP")).append(": ")
+				sb.append("<li>").append(_t("External IP")).append(": ")
 				  .append(toString("GetExternalIPAddress", "NewExternalIPAddress", serv))
 				  .append("</li>");
 			}else if("urn:schemas-upnp-org:service:WANEthernetLinkConfig:1".equals(serv.getServiceType())){
-				sb.append(_("WAN Ethernet Link Configuration"));
-				sb.append("<ul><li>").append(_("Status")).append(": ")
+				sb.append(_t("WAN Ethernet Link Configuration"));
+				sb.append("<ul><li>").append(_t("Status")).append(": ")
 				  .append(toString("GetEthernetLinkStatus", "NewEthernetLinkStatus", serv))
 				  .append("</li>");
 			} else {
@@ -638,9 +639,9 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 	
 	private void listSubDev(String prefix, Device dev, StringBuilder sb){
                 if (prefix == null)
-			sb.append("<p>").append(_("Found Device")).append(": ");
+			sb.append("<p>").append(_t("Found Device")).append(": ");
 		else
-			sb.append("<li>").append(_("Subdevice")).append(": ");
+			sb.append("<li>").append(_t("Subdevice")).append(": ");
 		sb.append(DataHelper.escapeHTML(dev.getFriendlyName()));
                 if (prefix == null)
 			sb.append("</p>");
@@ -661,11 +662,11 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 	/** warning - slow */
 	public String renderStatusHTML() {
 		final StringBuilder sb = new StringBuilder();
-		sb.append("<h3><a name=\"upnp\"></a>").append(_("UPnP Status")).append("</h3>");
+		sb.append("<h3><a name=\"upnp\"></a>").append(_t("UPnP Status")).append("</h3>");
 		
 		synchronized(_otherUDNs) {
 			if (!_otherUDNs.isEmpty()) {
-				sb.append(_("Disabled UPnP Devices"));
+				sb.append(_t("Disabled UPnP Devices"));
 				sb.append("<ul>");
 				for (Map.Entry<String, String> e : _otherUDNs.entrySet()) {
 					String udn = e.getKey();
@@ -679,10 +680,10 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		}
 
 		if(isDisabled) {
-			sb.append(_("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?"));
+			sb.append(_t("UPnP has been disabled; Do you have more than one UPnP Internet Gateway Device on your LAN ?"));
 			return sb.toString();
 		} else if(!isNATPresent()) {
-			sb.append(_("UPnP has not found any UPnP-aware, compatible device on your LAN."));
+			sb.append(_t("UPnP has not found any UPnP-aware, compatible device on your LAN."));
 			return sb.toString();
 		}
 		
@@ -690,15 +691,15 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		String addr = getNATAddress();
 		sb.append("<p>");
 		if (addr != null)
-		    sb.append(_("The current external IP address reported by UPnP is {0}", DataHelper.escapeHTML(addr)));
+		    sb.append(_t("The current external IP address reported by UPnP is {0}", DataHelper.escapeHTML(addr)));
 		else
-		    sb.append(_("The current external IP address is not available."));
+		    sb.append(_t("The current external IP address is not available."));
 		int downstreamMaxBitRate = getDownstreamMaxBitRate();
 		int upstreamMaxBitRate = getUpstreamMaxBitRate();
 		if(downstreamMaxBitRate > 0)
-			sb.append("<br>").append(_("UPnP reports the maximum downstream bit rate is {0}bits/sec", DataHelper.formatSize2(downstreamMaxBitRate)));
+			sb.append("<br>").append(_t("UPnP reports the maximum downstream bit rate is {0}bits/sec", DataHelper.formatSize2(downstreamMaxBitRate)));
 		if(upstreamMaxBitRate > 0)
-			sb.append("<br>").append(_("UPnP reports the maximum upstream bit rate is {0}bits/sec", DataHelper.formatSize2(upstreamMaxBitRate)));
+			sb.append("<br>").append(_t("UPnP reports the maximum upstream bit rate is {0}bits/sec", DataHelper.formatSize2(upstreamMaxBitRate)));
 		synchronized(lock) {
 			for(ForwardPort port : portsToForward) {
 				sb.append("<br>");
@@ -706,9 +707,9 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 					// {0} is TCP or UDP
 					// {1,number,#####} prevents 12345 from being output as 12,345 in the English locale.
 					// If you want the digit separator in your locale, translate as {1}.
-					sb.append(_("{0} port {1,number,#####} was successfully forwarded by UPnP.", protoToString(port.protocol), port.portNumber));
+					sb.append(_t("{0} port {1,number,#####} was successfully forwarded by UPnP.", protoToString(port.protocol), port.portNumber));
 				else
-					sb.append(_("{0} port {1,number,#####} was not forwarded by UPnP.", protoToString(port.protocol), port.portNumber));
+					sb.append(_t("{0} port {1,number,#####} was not forwarded by UPnP.", protoToString(port.protocol), port.portNumber));
 			}
 		}
 		
@@ -994,7 +995,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		}
 		if (_log.shouldLog(Log.INFO))
 			_log.info("Starting thread to forward " + portsToForwardNow.size() + " ports");
-	        Thread t = new Thread(new RegisterPortsThread(portsToForwardNow));
+	        Thread t = new I2PThread(new RegisterPortsThread(portsToForwardNow));
 		t.setName("UPnP Port Opener " + __id.incrementAndGet());
 		t.setDaemon(true);
 		t.start();
@@ -1034,7 +1035,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 	private void unregisterPorts(Set<ForwardPort> portsToForwardNow) {
 		if (_log.shouldLog(Log.INFO))
 			_log.info("Starting thread to un-forward " + portsToForwardNow.size() + " ports");
-	        Thread t = new Thread(new UnregisterPortsThread(portsToForwardNow));
+	        Thread t = new I2PThread(new UnregisterPortsThread(portsToForwardNow));
 		t.setName("UPnP Port Closer " + __id.incrementAndGet());
 		t.setDaemon(true);
 		t.start();
@@ -1067,9 +1068,16 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 		I2PAppContext ctx = new I2PAppContext(props);
 		UPnP upnp = new UPnP(ctx);
 		ControlPoint cp = new ControlPoint();
-		System.out.println("Searching for UPnP devices:");
+		long start = System.currentTimeMillis();
 		cp.start();
+		long s2 = System.currentTimeMillis();
+		System.out.println("Start took " + (s2 - start));
+		System.out.println("Searching for UPnP devices");
+		start = System.currentTimeMillis();
 		cp.search();
+		s2 = System.currentTimeMillis();
+		System.out.println("Search kickoff took " + (s2 - start));
+		System.out.println("Waiting 10 seconds for responses");
 		Thread.sleep(10000);
 		//while(true) {
 			DeviceList list = cp.getDeviceList();
@@ -1081,7 +1089,7 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
 				Device device = it.next();
 				upnp.listSubDev(device.toString(), device, sb);
 				System.out.println("Here is the listing for device " + (++i) +
-				                   ' ' + device.getFriendlyName() + " :");
+				                   ": " + device.getFriendlyName() + " :");
 				System.out.println(sb.toString());
 				sb.setLength(0);
 			}
@@ -1094,21 +1102,21 @@ class UPnP extends ControlPoint implements DeviceChangeListener, EventListener {
     /**
      *  Translate
      */
-    private final String _(String s) {
+    private final String _t(String s) {
         return Translate.getString(s, _context, BUNDLE_NAME);
     }
 
     /**
      *  Translate
      */
-    private final String _(String s, Object o) {
+    private final String _t(String s, Object o) {
         return Translate.getString(s, o, _context, BUNDLE_NAME);
     }
 
     /**
      *  Translate
      */
-    private final String _(String s, Object o, Object o2) {
+    private final String _t(String s, Object o, Object o2) {
         return Translate.getString(s, o, o2, _context, BUNDLE_NAME);
     }
 }
diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java
index 0ff6d5d8482b4c9a5814126ea91c2f49f1a80538..9d7a6918a0d16fb358c08022cc4def4b7fa1813c 100644
--- a/router/java/src/net/i2p/router/transport/UPnPManager.java
+++ b/router/java/src/net/i2p/router/transport/UPnPManager.java
@@ -233,7 +233,17 @@ class UPnPManager {
         public void portForwardStatus(Map<ForwardPort,ForwardPortStatus> statuses) {
             if (_log.shouldLog(Log.DEBUG))
                  _log.debug("UPnP Callback:");
+            // Let's not have two of these running at once.
+            // Deadlock reported in ticket #1699
+            // and the locking isn't foolproof in UDPTransport.
+            // UPnP runs the callbacks in a thread, so we can block.
+            // There is only one UPnPCallback, so lock on this
+            synchronized(this) {
+                locked_PFS(statuses);
+            }
+        }
 
+        private void locked_PFS(Map<ForwardPort,ForwardPortStatus> statuses) {
             byte[] ipaddr = null;
             DetectedIP[] ips = _upnp.getAddress();
             if (ips != null) {
@@ -244,6 +254,7 @@ class UPnPManager {
                             _log.debug("External address: " + ip.publicAddress + " type: " + ip.natType);
                         if (!ip.publicAddress.equals(_detectedAddress)) {
                             _detectedAddress = ip.publicAddress;
+                            // deadlock path 1
                             _manager.externalAddressReceived(SOURCE_UPNP, _detectedAddress.getAddress(), 0);
                         }
                         ipaddr = ip.publicAddress.getAddress();
@@ -269,6 +280,7 @@ class UPnPManager {
                 else
                     continue;
                 boolean success = fps.status >= ForwardPortStatus.MAYBE_SUCCESS;
+                // deadlock path 2
                 _manager.forwardPortStatus(style, ipaddr, fp.portNumber, fps.externalPort, success, fps.reasonString);
             }
         }
@@ -280,7 +292,7 @@ class UPnPManager {
      */
     public String renderStatusHTML() {
         if (!_isRunning)
-            return "<h3><a name=\"upnp\"></a>" + _("UPnP is not enabled") + "</h3>\n";
+            return "<h3><a name=\"upnp\"></a>" + _t("UPnP is not enabled") + "</h3>\n";
         return _upnp.renderStatusHTML();
     }
 
@@ -289,7 +301,7 @@ class UPnPManager {
     /**
      *  Translate
      */
-    private final String _(String s) {
+    private final String _t(String s) {
         return Translate.getString(s, _context, BUNDLE_NAME);
     }
 
diff --git a/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java b/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java
index a30215ce36c5e7987f922c6c7944e96ac5bff30c..ad9a3e43d8a2f1cee7e313be517594902d6d93ff 100644
--- a/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java
+++ b/router/java/src/net/i2p/router/transport/crypto/DHSessionKeyBuilder.java
@@ -470,7 +470,8 @@ public class DHSessionKeyBuilder {
                 _log.debug("DH Precalc (minimum: " + _minSize + " max: " + _maxSize + ", delay: "
                            + _calcDelay + ")");
             _builders = new LinkedBlockingQueue<DHSessionKeyBuilder>(_maxSize);
-            setPriority(Thread.MIN_PRIORITY);
+            if (!SystemVersion.isWindows())
+                setPriority(Thread.NORM_PRIORITY - 1);
         }
         
         /**
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
index 3f77d73a7eaa7ce07d22fbb64eaa968ce4e6707f..703ee5050a3b6d9314dfe9af3944fb7247c29b52 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java
@@ -1,5 +1,6 @@
 package net.i2p.router.transport.ntcp;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.net.Inet6Address;
 import java.nio.ByteBuffer;
@@ -64,7 +65,7 @@ import net.i2p.util.VersionComparator;
  *</pre>
  *
  */
-class NTCPConnection {
+class NTCPConnection implements Closeable {
     private final RouterContext _context;
     private final Log _log;
     private SocketChannel _chan;
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java
index 1431b110fa591a4963880998a6f6c7d4075f9144..72061efe2bcfcd3a9fc6fc6febd172716cf2b02a 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java
@@ -100,7 +100,7 @@ class NTCPSendFinisher {
                 // appx 0.1 ms
                 //_context.statManager().addRateData("ntcp.sendFinishTime", _context.clock().now() - _queued, 0);
             } catch (Throwable t) {
-                _log.log(Log.CRIT, " wtf, afterSend borked", t);
+                _log.log(Log.CRIT, " afterSend broken?", t);
             }
         }
     }
diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
index 382d4d89e45b84ccd8a6ccc7b83218bb8dc4c374..c38e932d5b64f690f516ff747d0169ef63568c05 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
@@ -1341,26 +1341,26 @@ public class NTCPTransport extends TransportImpl {
         }
 
         StringBuilder buf = new StringBuilder(512);
-        buf.append("<h3 id=\"ntcpcon\">").append(_("NTCP connections")).append(": ").append(peers.size());
-        buf.append(". ").append(_("Limit")).append(": ").append(getMaxConnections());
-        buf.append(". ").append(_("Timeout")).append(": ").append(DataHelper.formatDuration2(_pumper.getIdleTimeout()));
+        buf.append("<h3 id=\"ntcpcon\">").append(_t("NTCP connections")).append(": ").append(peers.size());
+        buf.append(". ").append(_t("Limit")).append(": ").append(getMaxConnections());
+        buf.append(". ").append(_t("Timeout")).append(": ").append(DataHelper.formatDuration2(_pumper.getIdleTimeout()));
         if (_context.getBooleanProperty(PROP_ADVANCED)) {
-            buf.append(". ").append(_("Status")).append(": ").append(_(getReachabilityStatus().toStatusString()));
+            buf.append(". ").append(_t("Status")).append(": ").append(_t(getReachabilityStatus().toStatusString()));
         }
         buf.append(".</h3>\n" +
                    "<table>\n" +
-                   "<tr><th><a href=\"#def.peer\">").append(_("Peer")).append("</a></th>" +
-                   "<th>").append(_("Dir")).append("</th>" +
-                   "<th>").append(_("IPv6")).append("</th>" +
-                   "<th align=\"right\"><a href=\"#def.idle\">").append(_("Idle")).append("</a></th>" +
-                   "<th align=\"right\"><a href=\"#def.rate\">").append(_("In/Out")).append("</a></th>" +
-                   "<th align=\"right\"><a href=\"#def.up\">").append(_("Up")).append("</a></th>" +
-                   "<th align=\"right\"><a href=\"#def.skew\">").append(_("Skew")).append("</a></th>" +
-                   "<th align=\"right\"><a href=\"#def.send\">").append(_("TX")).append("</a></th>" +
-                   "<th align=\"right\"><a href=\"#def.recv\">").append(_("RX")).append("</a></th>" +
-                   "<th>").append(_("Out Queue")).append("</th>" +
-                   "<th>").append(_("Backlogged?")).append("</th>" +
-                   //"<th>").append(_("Reading?")).append("</th>" +
+                   "<tr><th><a href=\"#def.peer\">").append(_t("Peer")).append("</a></th>" +
+                   "<th>").append(_t("Dir")).append("</th>" +
+                   "<th>").append(_t("IPv6")).append("</th>" +
+                   "<th align=\"right\"><a href=\"#def.idle\">").append(_t("Idle")).append("</a></th>" +
+                   "<th align=\"right\"><a href=\"#def.rate\">").append(_t("In/Out")).append("</a></th>" +
+                   "<th align=\"right\"><a href=\"#def.up\">").append(_t("Up")).append("</a></th>" +
+                   "<th align=\"right\"><a href=\"#def.skew\">").append(_t("Skew")).append("</a></th>" +
+                   "<th align=\"right\"><a href=\"#def.send\">").append(_t("TX")).append("</a></th>" +
+                   "<th align=\"right\"><a href=\"#def.recv\">").append(_t("RX")).append("</a></th>" +
+                   "<th>").append(_t("Out Queue")).append("</th>" +
+                   "<th>").append(_t("Backlogged?")).append("</th>" +
+                   //"<th>").append(_t("Reading?")).append("</th>" +
                    " </tr>\n");
         out.write(buf.toString());
         buf.setLength(0);
@@ -1372,9 +1372,9 @@ public class NTCPTransport extends TransportImpl {
             //    buf.append(' ').append(_context.blocklist().toStr(ip));
             buf.append("</td><td class=\"cells\" align=\"center\">");
             if (con.isInbound())
-                buf.append("<img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"").append(_("Inbound")).append("\"/>");
+                buf.append("<img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"").append(_t("Inbound")).append("\"/>");
             else
-                buf.append("<img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"").append(_("Outbound")).append("\"/>");
+                buf.append("<img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"").append(_t("Outbound")).append("\"/>");
             buf.append("</td><td class=\"cells\" align=\"center\">");
             if (con.isIPv6())
                 buf.append("&#x2713;");
diff --git a/router/java/src/net/i2p/router/transport/udp/ACKSender.java b/router/java/src/net/i2p/router/transport/udp/ACKSender.java
index a94572ace35d58f1cc6462986e7fca3138ecb7fd..8e608ab136f938d1439864dc1eaecb0dbf828904 100644
--- a/router/java/src/net/i2p/router/transport/udp/ACKSender.java
+++ b/router/java/src/net/i2p/router/transport/udp/ACKSender.java
@@ -168,7 +168,7 @@ class ACKSender implements Runnable {
                 
                 if (wanted < 0) {
                     if (_log.shouldLog(Log.WARN))
-                        _log.warn("wtf, why are we acking something they dont want?  remaining=" + remaining + ", peer=" + peer + ", bitfields=" + ackBitfields);
+                        _log.warn("why are we acking something they dont want?  remaining=" + remaining + ", peer=" + peer + ", bitfields=" + ackBitfields);
                     continue;
                 }
                 
diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
index fce85e9266d70103a60063c8e87587f029f14bb3..89076f9ce34d48726df5b412e0b1b5b3584a939a 100644
--- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
@@ -850,11 +850,20 @@ class EstablishmentManager {
             if (_log.shouldLog(Log.WARN))
                 _log.warn("Peer " + state + " sent us an invalid DH parameter", ippe);
             _inboundStates.remove(state.getRemoteHostId());
+            state.fail();
             return;
         }
-        _transport.send(_builder.buildSessionCreatedPacket(state,
+        UDPPacket pkt = _builder.buildSessionCreatedPacket(state,
                                                            _transport.getExternalPort(state.getSentIP().length == 16),
-                                                           _transport.getIntroKey()));
+                                                           _transport.getIntroKey());
+        if (pkt == null) {
+            if (_log.shouldLog(Log.WARN))
+                _log.warn("Peer " + state + " sent us an invalid IP?");
+            _inboundStates.remove(state.getRemoteHostId());
+            state.fail();
+            return;
+        }
+        _transport.send(pkt);
         state.createdPacketSent();
     }
 
diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
index ab91478f171b5e7642370e2d85d0ae42638bb4ee..d9cdfe01aed965839ef5a0b8ca01d9a545e47dfd 100644
--- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
+++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
@@ -178,7 +178,7 @@ class OutboundMessageFragments {
     public void add(OutboundMessageState state) {
         PeerState peer = state.getPeer();
         if (peer == null)
-            throw new RuntimeException("wtf, null peer for " + state);
+            throw new RuntimeException("null peer for " + state);
         peer.add(state);
         add(peer);
         //_context.statManager().addRateData("udp.outboundActiveCount", active, 0);
diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
index 35f2bb763087a89a2c76e0030de4ac731b369b30..3029f96c39de4fab539fb555a68a0aa3a7e6acd7 100644
--- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
+++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
@@ -9,13 +9,13 @@ import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
-import net.i2p.I2PAppContext;
 import net.i2p.data.Base64;
 import net.i2p.data.DataHelper;
 import net.i2p.data.Hash;
 import net.i2p.data.router.RouterIdentity;
 import net.i2p.data.SessionKey;
 import net.i2p.data.Signature;
+import net.i2p.router.RouterContext;
 import net.i2p.router.transport.TransportUtil;
 import net.i2p.util.Addresses;
 import net.i2p.util.Log;
@@ -99,7 +99,7 @@ around briefly, to address packet loss and reordering.</p>
  *
  */
 class PacketBuilder {
-    private final I2PAppContext _context;
+    private final RouterContext _context;
     private final Log _log;
     private final UDPTransport _transport;
     
@@ -169,7 +169,7 @@ class PacketBuilder {
     /**
      *  @param transport may be null for unit testing only
      */
-    public PacketBuilder(I2PAppContext ctx, UDPTransport transport) {
+    public PacketBuilder(RouterContext ctx, UDPTransport transport) {
         _context = ctx;
         _transport = transport;
         _log = ctx.logManager().getLog(PacketBuilder.class);
diff --git a/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java b/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java
index 193c1751fb6b67f5e2e926087280de95dfaa1aa6..c6dbdb8e222c9d6f5622de488418abfb3ea6adda 100644
--- a/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java
+++ b/router/java/src/net/i2p/router/transport/udp/TimedWeightedPriorityMessageQueue.java
@@ -57,6 +57,7 @@ class TimedWeightedPriorityMessageQueue implements MessageQueue, OutboundMessage
      *                  specifically, this means how many messages in this queue
      *                  should be pulled off in a row before moving on to the next.
      */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     public TimedWeightedPriorityMessageQueue(RouterContext ctx, int[] priorityLimits, int[] weighting, FailedListener lsnr) {
         _context = ctx;
         _log = ctx.logManager().getLog(TimedWeightedPriorityMessageQueue.class);
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPAddress.java b/router/java/src/net/i2p/router/transport/udp/UDPAddress.java
index 691601933e9cf408abcec6f1c47d7ad2a22cca63..3d22e41b72f0222da863dc24cccd96941cc1b8fa 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPAddress.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPAddress.java
@@ -4,6 +4,8 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.Map;
 
+import org.apache.http.conn.util.InetAddressUtils;
+
 import net.i2p.data.Base64;
 import net.i2p.data.router.RouterAddress;
 import net.i2p.data.SessionKey;
@@ -262,12 +264,9 @@ class UDPAddress {
         }
         if (rv == null) {
             try {
-                boolean isIPv4 = host.replaceAll("[0-9\\.]", "").length() == 0;
-                if (isIPv4 && host.replaceAll("[0-9]", "").length() != 3)
-                    return null;
                 rv = InetAddress.getByName(host);
-                if (isIPv4 ||
-                    host.replaceAll("[0-9a-fA-F:]", "").length() == 0) {
+                if (InetAddressUtils.isIPv4Address(host) ||
+                    InetAddressUtils.isIPv6Address(host)) {
                     synchronized (_inetAddressCache) {
                         _inetAddressCache.put(host, rv);
                     }
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java
index 33eb2d2e6758553e94e818949f2fac46f519836d..e2e1b3f592ae0926306ef2e50f754e467170ac6c 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java
@@ -6,11 +6,11 @@ import java.util.Arrays;
 import java.util.Queue;
 import java.util.concurrent.LinkedBlockingQueue;
 
-import net.i2p.I2PAppContext;
 import net.i2p.data.Base64;
 import net.i2p.data.DataHelper;
 import net.i2p.data.SessionKey;
 import net.i2p.router.RouterContext;
+import net.i2p.router.transport.FIFOBandwidthLimiter;
 import net.i2p.router.util.CDQEntry;
 import net.i2p.util.Addresses;
 import net.i2p.util.Log;
@@ -22,7 +22,7 @@ import net.i2p.util.SystemVersion;
  *
  */
 class UDPPacket implements CDQEntry {
-    private I2PAppContext _context;
+    private RouterContext _context;
     private final DatagramPacket _packet;
     private volatile short _priority;
     private volatile long _initializeTime;
@@ -43,6 +43,7 @@ class UDPPacket implements CDQEntry {
     //private long _afterHandlingTime;
     private int _validateCount;
     // private boolean _isInbound;
+    private FIFOBandwidthLimiter.Request _bandwidthRequest;
   
     //  Warning - this mixes contexts in a multi-router JVM
     private static final Queue<UDPPacket> _packetCache;
@@ -102,7 +103,7 @@ class UDPPacket implements CDQEntry {
     
     private static final int MAX_VALIDATE_SIZE = MAX_PACKET_SIZE;
 
-    private UDPPacket(I2PAppContext ctx) {
+    private UDPPacket(RouterContext ctx) {
         //ctx.statManager().createRateStat("udp.fetchRemoteSlow", "How long it takes to grab the remote ip info", "udp", UDPTransport.RATES);
         // the data buffer is clobbered on init(..), but we need it to bootstrap
         _data = new byte[MAX_PACKET_SIZE];
@@ -112,7 +113,7 @@ class UDPPacket implements CDQEntry {
         init(ctx);
     }
 
-    private synchronized void init(I2PAppContext ctx) {
+    private synchronized void init(RouterContext ctx) {
         _context = ctx;
         //_dataBuf = _dataCache.acquire();
         Arrays.fill(_data, (byte)0);
@@ -231,7 +232,7 @@ class UDPPacket implements CDQEntry {
                     str.append("\n\tCalc HMAC: ").append(Base64.encode(calc, 0, MAC_SIZE));
                     str.append("\n\tRead HMAC: ").append(Base64.encode(_data, _packet.getOffset(), MAC_SIZE));
                     str.append("\n\tUsing key: ").append(macKey.toBase64());
-                    if (DataHelper.eq(macKey.getData(), 0, ((RouterContext)_context).routerHash().getData(), 0, 32))
+                    if (DataHelper.eq(macKey.getData(), 0, _context.routerHash().getData(), 0, 32))
                         str.append(" (Intro)");
                     else
                         str.append(" (Session)");
@@ -300,6 +301,40 @@ class UDPPacket implements CDQEntry {
     /** a packet handler has finished parsing out the good bits */
     //long getTimeSinceHandling() { return (_afterHandlingTime > 0 ? _context.clock().now() - _afterHandlingTime : 0); }
     
+    /**
+     *  So that we can compete with NTCP, we want to request bandwidth
+     *  in parallel, on the way into the queue, not on the way out.
+     *  Call before enqueueing.
+     *  @since 0.9.21
+     *  @deprecated unused
+     */
+    public synchronized void requestInboundBandwidth() {
+        verifyNotReleased();
+        _bandwidthRequest = _context.bandwidthLimiter().requestInbound(_packet.getLength(), "UDP receiver");
+    }
+    
+    /**
+     *  So that we can compete with NTCP, we want to request bandwidth
+     *  in parallel, on the way into the queue, not on the way out.
+     *  Call before enqueueing.
+     *  @since 0.9.21
+     */
+    public synchronized void requestOutboundBandwidth() {
+        verifyNotReleased();
+        _bandwidthRequest = _context.bandwidthLimiter().requestOutbound(_packet.getLength(), 0, "UDP sender");
+    }
+    
+    /**
+     *  So that we can compete with NTCP, we want to request bandwidth
+     *  in parallel, on the way into the queue, not on the way out.
+     *  Call after dequeueing.
+     *  @since 0.9.21
+     */
+    public synchronized FIFOBandwidthLimiter.Request getBandwidthRequest() {
+        verifyNotReleased();
+        return _bandwidthRequest;
+    }
+
     // Following 5: All used only for stats in PacketHandler, commented out
 
     /** when it was pulled off the endpoint receive queue */
@@ -339,7 +374,7 @@ class UDPPacket implements CDQEntry {
     /**
      *  @param inbound unused
      */
-    public static UDPPacket acquire(I2PAppContext ctx, boolean inbound) {
+    public static UDPPacket acquire(RouterContext ctx, boolean inbound) {
         UDPPacket rv = null;
         if (CACHE) {
             rv = _packetCache.poll();
@@ -375,6 +410,13 @@ class UDPPacket implements CDQEntry {
         //_acquiredBy = null;
         //
         //_dataCache.release(_dataBuf);
+        if (_bandwidthRequest != null) {
+            synchronized(_bandwidthRequest) {
+                if (_bandwidthRequest.getPendingRequested() > 0)
+                    _bandwidthRequest.abort();
+            }
+            _bandwidthRequest = null;
+        }
         if (!CACHE)
             return;
         _packetCache.offer(this);
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java
index bc16de99cb9bb6a9082b5fd21e39242f2242a5e8..cae3030f2e99820ac54e238dae1e40ac55907a81 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java
@@ -52,6 +52,7 @@ class UDPReceiver {
         //_context.statManager().createRateStat("udp.droppedInbound", "How many packet are queued up but not yet received when we drop", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.receiveHolePunch", "How often we receive a NAT hole punch", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.ignorePacketFromDroplist", "Packet lifetime for those dropped on the drop list", "udp", UDPTransport.RATES);
+        _context.statManager().createRateStat("udp.receiveFailsafe", "limiter stuck?", "udp", new long[] { 24*60*60*1000L });
     }
     
     /**
@@ -265,8 +266,16 @@ class UDPReceiver {
                         //_context.bandwidthLimiter().requestInbound(req, size, "UDP receiver");
                         FIFOBandwidthLimiter.Request req =
                               _context.bandwidthLimiter().requestInbound(size, "UDP receiver");
-                        while (req.getPendingRequested() > 0)
+                        // failsafe, don't wait forever
+                        int waitCount = 0;
+                        while (req.getPendingRequested() > 0 && waitCount++ < 5) {
                             req.waitForNextAllocation();
+                        }
+                        if (waitCount >= 5) {
+                            // tell FBL we didn't receive it, but receive it anyway
+                            req.abort();
+                            _context.statManager().addRateData("udp.receiveFailsafe", 1);
+                        }
                         
                         receive(packet);
                         //_context.statManager().addRateData("udp.receivePacketSize", size);
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPSender.java b/router/java/src/net/i2p/router/transport/udp/UDPSender.java
index 9c1fdf2abb9e7d1b0eac7550b3b7dc93eac524d6..ebb2de795e098f74ce8277bec7fb98f62ecd5960 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPSender.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPSender.java
@@ -32,6 +32,9 @@ class UDPSender {
 
     private static final int TYPE_POISON = 99999;
 
+    // Queue needs to be big enough that we can compete with NTCP for
+    // bandwidth requests, and so CoDel can work well.
+    // When full, packets back up into the PacketPusher thread, pre-CoDel.
     private static final int MIN_QUEUE_SIZE = 64;
     private static final int MAX_QUEUE_SIZE = 384;
     
@@ -54,6 +57,7 @@ class UDPSender {
         //_context.statManager().createRateStat("udp.socketSendTime", "How long the actual socket.send took", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.sendBWThrottleTime", "How long the send is blocked by the bandwidth throttle", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.sendACKTime", "How long an ACK packet is blocked for (duration == lifetime)", "udp", UDPTransport.RATES);
+        _context.statManager().createRateStat("udp.sendFailsafe", "limiter stuck?", "udp", new long[] { 24*60*60*1000L });
         // used in RouterWatchdog
         _context.statManager().createRequiredRateStat("udp.sendException", "Send fails (Windows exception?)", "udp", new long[] { 60*1000, 10*60*1000 });
 
@@ -194,9 +198,11 @@ class UDPSender {
             packet.release();
             return;
         }
+        packet.requestOutboundBandwidth();
         try {
             _outboundQueue.put(packet);
         } catch (InterruptedException ie) {
+            packet.release();
             return;
         }
         //size = _outboundQueue.size();
@@ -228,10 +234,19 @@ class UDPSender {
                     // ?? int size2 = packet.getPacket().getLength();
                     if (size > 0) {
                         //_context.bandwidthLimiter().requestOutbound(req, size, "UDP sender");
-                        FIFOBandwidthLimiter.Request req =
-                              _context.bandwidthLimiter().requestOutbound(size, 0, "UDP sender");
-                        while (req.getPendingRequested() > 0)
-                            req.waitForNextAllocation();
+                        FIFOBandwidthLimiter.Request req = packet.getBandwidthRequest();
+                        if (req != null) {
+                            // failsafe, don't wait forever
+                            int waitCount = 0;
+                            while (req.getPendingRequested() > 0 && waitCount++ < 5) {
+                                req.waitForNextAllocation();
+                            }
+                            if (waitCount >= 5) {
+                                // tell FBL we didn't send it, but send it anyway
+                                req.abort();
+                                _context.statManager().addRateData("udp.sendFailsafe", 1);
+                            }
+                        }
                     }
                     
                     long afterBW = _context.clock().now();
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index 7429314f62bf9878e3760990c43bb939da37aeb1..edcfef26bbe711f38dfa8597517815899143489c 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -86,6 +86,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
     private final DHSessionKeyBuilder.Factory _dhFactory;
     private int _mtu;
     private int _mtu_ipv6;
+    private boolean _mismatchLogged;
 
     /**
      *  Do we have a public IPv6 address?
@@ -992,6 +993,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                 // save PROP_EXTERNAL_PORT
                 _context.router().saveConfig(changes, null);
             }
+            // deadlock thru here ticket #1699
             _context.router().rebuildRouterInfo();
         }
         _testEvent.forceRunImmediately();
@@ -1229,10 +1231,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             _expireEvent.remove(oldPeer2);
         }
 
-        if (_log.shouldLog(Log.WARN) && _peersByIdent.size() != _peersByRemoteHost.size())
+        if (_log.shouldLog(Log.WARN) && !_mismatchLogged && _peersByIdent.size() != _peersByRemoteHost.size()) {
+            _mismatchLogged = true;
             _log.warn("Size Mismatch after add: " + peer
                        + " byIDsz = " + _peersByIdent.size()
                        + " byHostsz = " + _peersByRemoteHost.size());
+        }
         
         _activeThrottle.unchoke(peer.getRemotePeer());
         markReachable(peer.getRemotePeer(), peer.isInbound());
@@ -2112,6 +2116,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
      *  @since 0.9.18
      */
     private RouterAddress getCurrentExternalAddress(boolean isIPv6) {
+        // deadlock thru here ticket #1699
         synchronized (_rebuildLock) {
             return isIPv6 ? _currentOurV6Address : _currentOurV4Address;
         }
@@ -2261,7 +2266,6 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
 
     void failed(OutboundMessageState msg, boolean allowPeerFailure) {
         if (msg == null) return;
-        int consecutive = 0;
         OutNetMessage m = msg.getMessage();
         if ( allowPeerFailure && (msg.getPeer() != null) && 
              ( (msg.getMaxSends() >= OutboundMessageFragments.MAX_VOLLEYS) ||
@@ -2273,7 +2277,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             //                + " lastReceived: " + recvDelay
             //                + " lastSentFully: " + sendDelay
             //                + " expired? " + msg.isExpired());
-            consecutive = msg.getPeer().incrementConsecutiveFailedSends();
+            int consecutive = msg.getPeer().incrementConsecutiveFailedSends();
             if (_log.shouldLog(Log.INFO))
                 _log.info("Consecutive failure #" + consecutive 
                           + " on " + msg.toString()
@@ -2463,58 +2467,58 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         int numPeers = 0;
         
         StringBuilder buf = new StringBuilder(512);
-        buf.append("<h3 id=\"udpcon\">").append(_("UDP connections")).append(": ").append(peers.size());
-        buf.append(". ").append(_("Limit")).append(": ").append(getMaxConnections());
-        buf.append(". ").append(_("Timeout")).append(": ").append(DataHelper.formatDuration2(_expireTimeout));
+        buf.append("<h3 id=\"udpcon\">").append(_t("UDP connections")).append(": ").append(peers.size());
+        buf.append(". ").append(_t("Limit")).append(": ").append(getMaxConnections());
+        buf.append(". ").append(_t("Timeout")).append(": ").append(DataHelper.formatDuration2(_expireTimeout));
         if (_context.getBooleanProperty(PROP_ADVANCED)) {
-            buf.append(". ").append(_("Status")).append(": ").append(_(_reachabilityStatus.toStatusString()));
+            buf.append(". ").append(_t("Status")).append(": ").append(_t(_reachabilityStatus.toStatusString()));
         }
         buf.append(".</h3>\n");
         buf.append("<table>\n");
-        buf.append("<tr><th class=\"smallhead\" nowrap><a href=\"#def.peer\">").append(_("Peer")).append("</a><br>");
+        buf.append("<tr><th class=\"smallhead\" nowrap><a href=\"#def.peer\">").append(_t("Peer")).append("</a><br>");
         if (sortFlags != FLAG_ALPHA)
-            appendSortLinks(buf, urlBase, sortFlags, _("Sort by peer hash"), FLAG_ALPHA);
+            appendSortLinks(buf, urlBase, sortFlags, _t("Sort by peer hash"), FLAG_ALPHA);
         buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.dir\" title=\"")
-           .append(_("Direction/Introduction")).append("\">").append(_("Dir"))
-           .append("</a></th><th class=\"smallhead\" nowrap><a href=\"#def.ipv6\">").append(_("IPv6"))
-           .append("</a></th><th class=\"smallhead\" nowrap><a href=\"#def.idle\">").append(_("Idle")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by idle inbound"), FLAG_IDLE_IN);
+           .append(_t("Direction/Introduction")).append("\">").append(_t("Dir"))
+           .append("</a></th><th class=\"smallhead\" nowrap><a href=\"#def.ipv6\">").append(_t("IPv6"))
+           .append("</a></th><th class=\"smallhead\" nowrap><a href=\"#def.idle\">").append(_t("Idle")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by idle inbound"), FLAG_IDLE_IN);
         buf.append(" / ");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by idle outbound"), FLAG_IDLE_OUT);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by idle outbound"), FLAG_IDLE_OUT);
         buf.append("</th>");
-        buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.rate\">").append(_("In/Out")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by inbound rate"), FLAG_RATE_IN);
+        buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.rate\">").append(_t("In/Out")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by inbound rate"), FLAG_RATE_IN);
         buf.append(" / ");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by outbound rate"), FLAG_RATE_OUT);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by outbound rate"), FLAG_RATE_OUT);
         buf.append("</th>\n");
-        buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.up\">").append(_("Up")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by connection uptime"), FLAG_UPTIME);
-        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.skew\">").append(_("Skew")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by clock skew"), FLAG_SKEW);
+        buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.up\">").append(_t("Up")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by connection uptime"), FLAG_UPTIME);
+        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.skew\">").append(_t("Skew")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by clock skew"), FLAG_SKEW);
         buf.append("</th>\n");
         buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.cwnd\">CWND</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by congestion window"), FLAG_CWND);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by congestion window"), FLAG_CWND);
         buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.ssthresh\">SST</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by slow start threshold"), FLAG_SSTHRESH);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by slow start threshold"), FLAG_SSTHRESH);
         buf.append("</th>\n");
         buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.rtt\">RTT</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by round trip time"), FLAG_RTT);
-        //buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.dev\">").append(_("Dev")).append("</a><br>");
-        //appendSortLinks(buf, urlBase, sortFlags, _("Sort by round trip time deviation"), FLAG_DEV);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by round trip time"), FLAG_RTT);
+        //buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.dev\">").append(_t("Dev")).append("</a><br>");
+        //appendSortLinks(buf, urlBase, sortFlags, _t("Sort by round trip time deviation"), FLAG_DEV);
         buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.rto\">RTO</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by retransmission timeout"), FLAG_RTO);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by retransmission timeout"), FLAG_RTO);
         buf.append("</th>\n");
         buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.mtu\">MTU</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by outbound maximum transmit unit"), FLAG_MTU);
-        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.send\">").append(_("TX")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by packets sent"), FLAG_SEND);
-        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.recv\">").append(_("RX")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by packets received"), FLAG_RECV);
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by outbound maximum transmit unit"), FLAG_MTU);
+        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.send\">").append(_t("TX")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets sent"), FLAG_SEND);
+        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.recv\">").append(_t("RX")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets received"), FLAG_RECV);
         buf.append("</th>\n");
-        buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.resent\">").append(_("Dup TX")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by packets retransmitted"), FLAG_RESEND);
-        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.dupRecv\">").append(_("Dup RX")).append("</a><br>");
-        appendSortLinks(buf, urlBase, sortFlags, _("Sort by packets received more than once"), FLAG_DUP);
+        buf.append("<th class=\"smallhead\" nowrap><a href=\"#def.resent\">").append(_t("Dup TX")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets retransmitted"), FLAG_RESEND);
+        buf.append("</th><th class=\"smallhead\" nowrap><a href=\"#def.dupRecv\">").append(_t("Dup RX")).append("</a><br>");
+        appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets received more than once"), FLAG_DUP);
         buf.append("</th></tr>\n");
         out.write(buf.toString());
         buf.setLength(0);
@@ -2530,17 +2534,17 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             //    buf.append(' ').append(_context.blocklist().toStr(ip));
             buf.append("</td><td class=\"cells\" nowrap align=\"left\">");
             if (peer.isInbound())
-                buf.append("<img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"").append(_("Inbound")).append("\">");
+                buf.append("<img src=\"/themes/console/images/inbound.png\" alt=\"Inbound\" title=\"").append(_t("Inbound")).append("\">");
             else
-                buf.append("<img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"").append(_("Outbound")).append("\">");
+                buf.append("<img src=\"/themes/console/images/outbound.png\" alt=\"Outbound\" title=\"").append(_t("Outbound")).append("\">");
             if (peer.getWeRelayToThemAs() > 0)
-                buf.append("&nbsp;&nbsp;<img src=\"/themes/console/images/outbound.png\" height=\"8\" width=\"12\" alt=\"^\" title=\"").append(_("We offered to introduce them")).append("\">");
+                buf.append("&nbsp;&nbsp;<img src=\"/themes/console/images/outbound.png\" height=\"8\" width=\"12\" alt=\"^\" title=\"").append(_t("We offered to introduce them")).append("\">");
             if (peer.getTheyRelayToUsAs() > 0)
-                buf.append("&nbsp;&nbsp;<img src=\"/themes/console/images/inbound.png\" height=\"8\" width=\"12\" alt=\"V\" title=\"").append(_("They offered to introduce us")).append("\">");
+                buf.append("&nbsp;&nbsp;<img src=\"/themes/console/images/inbound.png\" height=\"8\" width=\"12\" alt=\"V\" title=\"").append(_t("They offered to introduce us")).append("\">");
             
             boolean appended = false;
             if (_activeThrottle.isChoked(peer.getRemotePeer())) {
-                buf.append("<br><i>").append(_("Choked")).append("</i>");
+                buf.append("<br><i>").append(_t("Choked")).append("</i>");
                 appended = true;
             }
             int cfs = peer.getConsecutiveFailedSends();
@@ -2548,15 +2552,15 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                 if (!appended) buf.append("<br>");
                 buf.append(" <i>");
                 if (cfs == 1)
-                    buf.append(_("1 fail"));
+                    buf.append(_t("1 fail"));
                 else
-                    buf.append(_("{0} fails", cfs));
+                    buf.append(_t("{0} fails", cfs));
                 buf.append("</i>");
                 appended = true;
             }
             if (_context.banlist().isBanlisted(peer.getRemotePeer(), STYLE)) {
                 if (!appended) buf.append("<br>");
-                buf.append(" <i>").append(_("Banned")).append("</i>");
+                buf.append(" <i>").append(_t("Banned")).append("</i>");
                 appended = true;
             }
             //byte[] ip = getIP(peer.getRemotePeer());
@@ -2615,7 +2619,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             buf.append(THINSP).append(peer.getConcurrentSendWindow());
             buf.append(THINSP).append(peer.getConsecutiveSendRejections());
             if (peer.isBacklogged())
-                buf.append(' ').append(_("backlogged"));
+                buf.append(' ').append(_t("backlogged"));
             buf.append("</td>");
 
             buf.append("<td class=\"cells\" align=\"right\">");
@@ -2947,7 +2951,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                           " from: ", new Exception("traceback"));
             if (old != Status.UNKNOWN)
                 _context.router().eventLog().addEvent(EventLog.REACHABILITY,
-                   "from " + _(old.toStatusString()) + " to " +  _(status.toStatusString()));
+                   "from " + _t(old.toStatusString()) + " to " +  _t(status.toStatusString()));
             // Always rebuild when the status changes, even if our address hasn't changed,
             // as rebuildExternalAddress() calls replaceAddress() which calls CSFI.notifyReplaceAddress()
             // which will start up NTCP inbound when we transition to OK.
diff --git a/router/java/src/net/i2p/router/tunnel/BatchedPreprocessor.java b/router/java/src/net/i2p/router/tunnel/BatchedPreprocessor.java
index d363d7a3f540cda01e194c7d836aeac93c6d8c5b..69fe08243377381313c78663c6e5aff7ac8610b0 100644
--- a/router/java/src/net/i2p/router/tunnel/BatchedPreprocessor.java
+++ b/router/java/src/net/i2p/router/tunnel/BatchedPreprocessor.java
@@ -370,7 +370,7 @@ class BatchedPreprocessor extends TrivialPreprocessor {
         
         if (offset <= 0) {
             StringBuilder buf = new StringBuilder(128);
-            buf.append("wtf, written offset is ").append(offset);
+            buf.append("uh? written offset is ").append(offset);
             buf.append(" for ").append(startAt).append(" through ").append(sendThrough);
             for (int i = startAt; i <= sendThrough; i++) {
                 buf.append(" ").append(pending.get(i).toString());
diff --git a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java
index 0c872fea66fc1ff08a5978c5f3e5fa849768b0fe..62fa46231a0049e0525cb627f90679643b32ea95 100644
--- a/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java
+++ b/router/java/src/net/i2p/router/tunnel/BloomFilterIVValidator.java
@@ -30,10 +30,12 @@ class BloomFilterIVValidator implements IVValidator {
     private static final int MIN_SHARE_KBPS_FOR_BIG_BLOOM = 512;
     private static final int MIN_SHARE_KBPS_FOR_HUGE_BLOOM = 1536;
     private static final int MIN_SHARE_KBPS_FOR_HUGE2_BLOOM = 4096;
+    private static final int MIN_SHARE_KBPS_FOR_HUGE3_BLOOM = 8192;
     private static final long MIN_MEM_TO_USE_BLOOM = 64*1024*1024l;
     private static final long MIN_MEM_FOR_BIG_BLOOM = 128*1024*1024l;
     private static final long MIN_MEM_FOR_HUGE_BLOOM = 256*1024*1024l;
     private static final long MIN_MEM_FOR_HUGE2_BLOOM = 384*1024*1024l;
+    private static final long MIN_MEM_FOR_HUGE3_BLOOM = 512*1024*1024l;
     /** for testing */
     private static final String PROP_FORCE = "router.forceDecayingBloomFilter";
     /** for testing */
@@ -57,8 +59,12 @@ class BloomFilterIVValidator implements IVValidator {
             if (KBps >= MIN_SHARE_KBPS_TO_USE_BLOOM)
                 warn(maxMemory, KBps, MIN_MEM_TO_USE_BLOOM, MIN_SHARE_KBPS_TO_USE_BLOOM);
             _filter = new DecayingHashSet(ctx, HALFLIFE_MS, 16, "TunnelIVV"); // appx. 4MB max
+        } else if (KBps >= MIN_SHARE_KBPS_FOR_HUGE3_BLOOM && maxMemory >= MIN_MEM_FOR_HUGE3_BLOOM) {
+            _filter = new DecayingBloomFilter(ctx, HALFLIFE_MS, 16, "TunnelIVV", 27);  // 32MB fixed
         } else if (KBps >= MIN_SHARE_KBPS_FOR_HUGE2_BLOOM && maxMemory >= MIN_MEM_FOR_HUGE2_BLOOM) {
             _filter = new DecayingBloomFilter(ctx, HALFLIFE_MS, 16, "TunnelIVV", 26);  // 16MB fixed
+            if (KBps >= MIN_SHARE_KBPS_FOR_HUGE3_BLOOM)
+                warn(maxMemory, KBps, MIN_MEM_FOR_HUGE3_BLOOM, MIN_SHARE_KBPS_FOR_HUGE3_BLOOM);
         } else if (KBps >= MIN_SHARE_KBPS_FOR_HUGE_BLOOM && maxMemory >= MIN_MEM_FOR_HUGE_BLOOM) {
             if (KBps >= MIN_SHARE_KBPS_FOR_HUGE2_BLOOM)
                 warn(maxMemory, KBps, MIN_MEM_FOR_HUGE2_BLOOM, MIN_SHARE_KBPS_FOR_HUGE2_BLOOM);
@@ -96,16 +102,26 @@ class BloomFilterIVValidator implements IVValidator {
     private void warn(long maxMemory, int KBps, long recMaxMem, int threshKBps) {
         if (SystemVersion.isAndroid())
             return;
+        // Can't find any System property or wrapper property that gives
+        // you the actual config file path, have to guess
+        // TODO if !SystemVersion.hasWrapper ...
+        String path;
+        if (!SystemVersion.isWindows() && !SystemVersion.isMac() &&
+            "i2psvc".equals(System.getProperty("user.name"))) {
+            path = "/etc/i2p";
+        } else {
+            path = _context.getBaseDir().toString();
+        }
         String msg =
-            "Configured for " + DataHelper.formatSize(KBps *1024) +
+            "Configured for " + DataHelper.formatSize(KBps *1024L) +
             "Bps share bandwidth but only " +
             DataHelper.formatSize(maxMemory) + "B available memory." +
             " Recommend increasing wrapper.java.maxmemory in " +
-            _context.getBaseDir() + File.separatorChar + "wrapper.config" +
+            path + File.separatorChar + "wrapper.config" +
             // getMaxMemory() returns significantly lower than wrapper config, so add 10%
             " to at least " + (recMaxMem * 11 / 10 / (1024*1024)) + " (MB)" +
             " if the actual share bandwidth exceeds " +
-            DataHelper.formatSize(threshKBps * 1024) + "Bps.";
+            DataHelper.formatSize(threshKBps * 1024L) + "Bps.";
         System.out.println("WARN: " + msg);
         _context.logManager().getLog(BloomFilterIVValidator.class).logAlways(Log.WARN, msg);
     }
diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java
index f02e2d57351cb1c20965fadb39e00acb5b3ba5f1..6e0d0675fcbd0740534edb0924b743570f4d33d2 100644
--- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java
@@ -164,7 +164,7 @@ class FragmentHandler {
             if (_log.shouldLog(Log.ERROR))
                 _log.error("Corrupt fragment received: offset = " + offset, e);
             _context.statManager().addRateData("tunnel.corruptMessage", 1, 1);
-            // java.lang.IllegalStateException: wtf, don't get the completed size when we're not complete - null fragment i=0 of 1
+            // java.lang.IllegalStateException: don't get the completed size when we're not complete - null fragment i=0 of 1
             // at net.i2p.router.tunnel.FragmentedMessage.getCompleteSize(FragmentedMessage.java:194)
             // at net.i2p.router.tunnel.FragmentedMessage.toByteArray(FragmentedMessage.java:223)
             // at net.i2p.router.tunnel.FragmentHandler.receiveComplete(FragmentHandler.java:380)
diff --git a/router/java/src/net/i2p/router/tunnel/FragmentedMessage.java b/router/java/src/net/i2p/router/tunnel/FragmentedMessage.java
index c692b2b205717c115431d20bcb0e47e30c5c7c1c..effc2a4c638e320fb5dade25c6c007a3225042e4 100644
--- a/router/java/src/net/i2p/router/tunnel/FragmentedMessage.java
+++ b/router/java/src/net/i2p/router/tunnel/FragmentedMessage.java
@@ -164,7 +164,7 @@ class FragmentedMessage {
     }
     public int getCompleteSize() {
         if (!_lastReceived) 
-            throw new IllegalStateException("wtf, don't get the completed size when we're not complete");
+            throw new IllegalStateException("don't get the completed size when we're not complete!");
         if (_releasedAfter > 0) {
              RuntimeException e = new RuntimeException("use after free in FragmentedMessage");
              _log.error("FM completeSize()", e);
@@ -175,7 +175,7 @@ class FragmentedMessage {
             ByteArray ba = _fragments[i];
             // NPE seen here, root cause unknown
             if (ba == null) 
-                throw new IllegalStateException("wtf, don't get the completed size when we're not complete - null fragment i=" + i + " of " + _highFragmentNum);
+                throw new IllegalStateException("don't get the completed size when we're not complete! - null fragment i=" + i + " of " + _highFragmentNum);
             size += ba.getValid();
         }
         return size;
diff --git a/router/java/src/net/i2p/router/tunnel/InboundGatewayProcessor.java b/router/java/src/net/i2p/router/tunnel/InboundGatewayProcessor.java
index 696825a0696dd4e232532e98d392c40b6619e250..0902de47be80460d90a39238d7f91742c43a6ad7 100644
--- a/router/java/src/net/i2p/router/tunnel/InboundGatewayProcessor.java
+++ b/router/java/src/net/i2p/router/tunnel/InboundGatewayProcessor.java
@@ -20,6 +20,6 @@ class InboundGatewayProcessor extends HopProcessor {
     public void process(byte orig[], int offset, int length) {
         boolean ok = super.process(orig, offset, length, null);
         if (!ok) 
-            throw new RuntimeException("wtf, we are the gateway, how did it fail?");
+            throw new RuntimeException("we are the gateway, how did it fail?");
     }
 }
diff --git a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java
index 62c1e6ed69c1072e8124323119ecfedf95a43d79..a686278e3a07fed2a8b2f65e76f11a6071c024e0 100644
--- a/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java
+++ b/router/java/src/net/i2p/router/tunnel/InboundMessageDistributor.java
@@ -18,6 +18,7 @@ import net.i2p.data.i2np.VariableTunnelBuildReplyMessage;
 import net.i2p.router.ClientMessage;
 import net.i2p.router.RouterContext;
 import net.i2p.router.TunnelInfo;
+import net.i2p.router.TunnelPoolSettings;
 import net.i2p.router.message.GarlicMessageReceiver;
 import net.i2p.router.networkdb.kademlia.FloodfillNetworkDatabaseFacade;
 import net.i2p.util.Log;
@@ -117,8 +118,8 @@ class InboundMessageDistributor implements GarlicMessageReceiver.CloveReceiver {
                         }
                         return;
                     } else if (dsm.getReplyToken() != 0) {
-                        if (_log.shouldLog(Log.WARN))
-                            _log.warn("Dropping LS DSM w/ reply token down a tunnel for " + _client + ": " + msg);
+                        _context.statManager().addRateData("tunnel.dropDangerousClientTunnelMessage", 1, type);
+                        _log.error("Dropping LS DSM w/ reply token down a tunnel for " + _client + ": " + msg);
                         return;
                     } else {
                         // allow DSM of our own key (used by FloodfillVerifyStoreJob)
@@ -143,6 +144,33 @@ class InboundMessageDistributor implements GarlicMessageReceiver.CloveReceiver {
                     return;
 
             } // switch
+        } else {
+            // expl. tunnel
+            switch (type) {
+                case DatabaseStoreMessage.MESSAGE_TYPE:
+                    DatabaseStoreMessage dsm = (DatabaseStoreMessage) msg;
+                    if (dsm.getReplyToken() != 0) {
+                        _context.statManager().addRateData("tunnel.dropDangerousExplTunnelMessage", 1, type);
+                        _log.error("Dropping DSM w/ reply token down a expl. tunnel: " + msg);
+                        return;
+                    }
+                    if (dsm.getEntry().getType() == DatabaseEntry.KEY_TYPE_LEASESET)
+                        ((LeaseSet)dsm.getEntry()).setReceivedAsReply();
+                    break;
+
+                case DatabaseSearchReplyMessage.MESSAGE_TYPE:
+                case DeliveryStatusMessage.MESSAGE_TYPE:
+                case GarlicMessage.MESSAGE_TYPE:
+                case TunnelBuildReplyMessage.MESSAGE_TYPE:
+                case VariableTunnelBuildReplyMessage.MESSAGE_TYPE:
+                    // these are safe, handled below
+                    break;
+
+                default:
+                    _context.statManager().addRateData("tunnel.dropDangerousExplTunnelMessage", 1, type);
+                    _log.error("Dropped dangerous message down expl tunnel: " + msg, new Exception("cause"));
+                    return;
+            } // switch
         } // client != null
 
         if ( (target == null) || ( (tunnel == null) && (_context.routerHash().equals(target) ) ) ) {
@@ -188,7 +216,7 @@ class InboundMessageDistributor implements GarlicMessageReceiver.CloveReceiver {
             TunnelId outId = out.getSendTunnelId(0);
             if (outId == null) {
                 if (_log.shouldLog(Log.ERROR))
-                    _log.error("wtf, outbound tunnel has no outboundId? " + out 
+                    _log.error("strange? outbound tunnel has no outboundId? " + out 
                                + " failing to distribute " + msg);
                 return;
             }
@@ -204,11 +232,11 @@ class InboundMessageDistributor implements GarlicMessageReceiver.CloveReceiver {
      *
      */
     public void handleClove(DeliveryInstructions instructions, I2NPMessage data) {
+        int type = data.getType();
         switch (instructions.getDeliveryMode()) {
             case DeliveryInstructions.DELIVERY_MODE_LOCAL:
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug("local delivery instructions for clove: " + data.getClass().getSimpleName());
-                int type = data.getType();
                 if (type == GarlicMessage.MESSAGE_TYPE) {
                     _receiver.receive((GarlicMessage)data);
                 } else if (type == DatabaseStoreMessage.MESSAGE_TYPE) {
@@ -296,28 +324,45 @@ class InboundMessageDistributor implements GarlicMessageReceiver.CloveReceiver {
                             _context.inNetMessagePool().add(data, null, null);
                 }
                 return;
+
             case DeliveryInstructions.DELIVERY_MODE_DESTINATION:
+                Hash to = instructions.getDestination();
                 // Can we route UnknownI2NPMessages to a destination too?
-                if (!(data instanceof DataMessage)) {
+                if (type != DataMessage.MESSAGE_TYPE) {
                     if (_log.shouldLog(Log.ERROR))
                         _log.error("cant send a " + data.getClass().getSimpleName() + " to a destination");
-                } else if ( (_client != null) && (_client.equals(instructions.getDestination())) ) {
+                } else if (_client != null && _client.equals(to)) {
                     if (_log.shouldLog(Log.DEBUG))
-                        _log.debug("data message came down a tunnel for " 
-                                   + _client);
+                        _log.debug("data message came down a tunnel for " + _client);
                     DataMessage dm = (DataMessage)data;
                     Payload payload = new Payload();
                     payload.setEncryptedData(dm.getData());
                     ClientMessage m = new ClientMessage(_client, payload);
                     _context.clientManager().messageReceived(m);
+                } else if (_client != null) {
+                    // Shared tunnel?
+                    TunnelPoolSettings tgt = _context.tunnelManager().getInboundSettings(to);
+                    if (tgt != null && _client.equals(tgt.getAliasOf())) {
+                        // same as above, just different log
+                        if (_log.shouldLog(Log.DEBUG))
+                            _log.debug("data message came down a tunnel for " 
+                                       + _client + " targeting shared " + to);
+                        DataMessage dm = (DataMessage)data;
+                        Payload payload = new Payload();
+                        payload.setEncryptedData(dm.getData());
+                        ClientMessage m = new ClientMessage(to, payload);
+                        _context.clientManager().messageReceived(m);
+                    } else {
+                        if (_log.shouldLog(Log.ERROR))
+                            _log.error("Data message came down a tunnel for " 
+                                   +  _client + " but targetted " + to);
+                    }
                 } else {
                     if (_log.shouldLog(Log.ERROR))
-                        _log.error("this data message came down a tunnel for " 
-                                   + (_client == null ? "no one" : _client)
-                                   + " but targetted "
-                                   + instructions.getDestination());
+                        _log.error("Data message came down an exploratory tunnel targeting " + to);
                 }
                 return;
+
             case DeliveryInstructions.DELIVERY_MODE_ROUTER: // fall through
             case DeliveryInstructions.DELIVERY_MODE_TUNNEL:
                 if (_log.shouldLog(Log.INFO))
@@ -325,6 +370,7 @@ class InboundMessageDistributor implements GarlicMessageReceiver.CloveReceiver {
                                + ", treat recursively to prevent leakage");
                 distribute(data, instructions.getRouter(), instructions.getTunnelId());
                 return;
+
             default:
                 if (_log.shouldLog(Log.ERROR))
                     _log.error("Unknown instruction " + instructions.getDeliveryMode() + ": " + instructions);
diff --git a/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java b/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java
index 614c7faab9bcca51bd59c1d0e3df3eb95b302373..4f1f82d87d8175e5f2ca0bc25c42c94db79527a0 100644
--- a/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java
+++ b/router/java/src/net/i2p/router/tunnel/PumpedTunnelGateway.java
@@ -58,6 +58,7 @@ class PumpedTunnelGateway extends TunnelGateway {
      * @param receiver this receives the encrypted message and forwards it off 
      *                 to the first hop
      */
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     public PumpedTunnelGateway(RouterContext context, QueuePreprocessor preprocessor,
                                Sender sender, Receiver receiver, TunnelGatewayPumper pumper) {
         super(context, preprocessor, sender, receiver);
diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java
index 09744c5698f6d47cb2fa4777eac747848a539e6e..4e945b9db101e488059bbb809d21c7969fc9a72f 100644
--- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java
+++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java
@@ -211,7 +211,8 @@ public class TunnelDispatcher implements Service {
         ctx.statManager().createRequiredRateStat("tunnel.corruptMessage", "Corrupt messages received", 
                                               "Tunnels", RATES);
         // following are for InboundMessageDistributor
-        ctx.statManager().createRateStat("tunnel.dropDangerousClientTunnelMessage", "How many tunnel messages come down a client tunnel that we shouldn't expect (lifetime is the 'I2NP type')", "Tunnels", new long[] { 60*60*1000 });
+        ctx.statManager().createRateStat("tunnel.dropDangerousClientTunnelMessage", "(lifetime is the I2NP type)", "Tunnels", new long[] { 60*60*1000 });
+        ctx.statManager().createRateStat("tunnel.dropDangerousExplTunnelMessage", "(lifetime is the I2NP type)", "Tunnels", new long[] { 60*60*1000 });
         ctx.statManager().createRateStat("tunnel.handleLoadClove", "When do we receive load test cloves", "Tunnels", new long[] { 60*60*1000 });
         // following is for PumpedTunnelGateway
         ctx.statManager().createRateStat("tunnel.dropGatewayOverflow", "Dropped message at GW, queue full", "Tunnels", new long[] { 60*60*1000 });
@@ -630,7 +631,7 @@ public class TunnelDispatcher implements Service {
      * @param targetPeer gateway to the tunnel to receive the message
      */
     public void dispatchOutbound(I2NPMessage msg, TunnelId outboundTunnel, TunnelId targetTunnel, Hash targetPeer) {
-        if (outboundTunnel == null) throw new IllegalArgumentException("wtf, null outbound tunnel?");
+        if (outboundTunnel == null) throw new IllegalArgumentException("null outbound tunnel?");
         long before = _context.clock().now();
         TunnelGateway gw = _outboundGateways.get(outboundTunnel);
         if (gw != null) {
@@ -677,7 +678,7 @@ public class TunnelDispatcher implements Service {
         //long dispatchTime = _context.clock().now() - before;
         //if (dispatchTime > 1000) {
         //    if (_log.shouldLog(Log.WARN))
-        //        _log.warn("wtf, took " + dispatchTime + " to dispatch " + msg + " out " + outboundTunnel + " in " + gw);
+        //        _log.warn("slow? took " + dispatchTime + " to dispatch " + msg + " out " + outboundTunnel + " in " + gw);
         //}
         //if (gw instanceof TunnelGatewayZeroHop)
         //    _context.statManager().addRateData("tunnel.dispatchOutboundZeroHopTime", dispatchTime, dispatchTime);
diff --git a/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java
new file mode 100644
index 0000000000000000000000000000000000000000..1dc45eb613c32bb5035b90f39c7406b7841f43b6
--- /dev/null
+++ b/router/java/src/net/i2p/router/tunnel/pool/AliasedTunnelPool.java
@@ -0,0 +1,156 @@
+package net.i2p.router.tunnel.pool;
+
+import java.util.List;
+
+import net.i2p.data.Hash;
+import net.i2p.data.Lease;
+import net.i2p.data.LeaseSet;
+import net.i2p.data.TunnelId;
+import net.i2p.router.RouterContext;
+import net.i2p.router.TunnelInfo;
+import net.i2p.router.TunnelPoolSettings;
+import net.i2p.util.Log;
+
+/**
+ *  A tunnel pool with its own settings and Destination,
+ *  but uses another pool for its tunnels.
+ *
+ *  @since 0.9.21
+ */
+public class AliasedTunnelPool extends TunnelPool {
+    
+    private final TunnelPool _aliasOf;
+
+    AliasedTunnelPool(RouterContext ctx, TunnelPoolManager mgr, TunnelPoolSettings settings, TunnelPool aliasOf) {
+        super(ctx, mgr, settings, null);
+        if (settings.isExploratory())
+            throw new IllegalArgumentException();
+        if (settings.getAliasOf() == null)
+            throw new IllegalArgumentException();
+        _aliasOf = aliasOf;
+    }
+    
+    @Override
+    synchronized void startup() {
+        if (_log.shouldLog(Log.INFO))
+            _log.info(toString() + ": Startup() called, was already alive? " + _alive, new Exception());
+        _alive = true;
+        super.refreshLeaseSet();
+    }
+    
+    @Override
+    synchronized void shutdown() {
+        if (_log.shouldLog(Log.WARN))
+            _log.warn(toString() + ": Shutdown called");
+        _alive = false;
+    }
+    
+    @Override
+    TunnelInfo selectTunnel() {
+        return _aliasOf.selectTunnel();
+    }
+
+    @Override
+    TunnelInfo selectTunnel(Hash closestTo) {
+        return _aliasOf.selectTunnel(closestTo);
+    }
+    
+    @Override
+    public TunnelInfo getTunnel(TunnelId gatewayId) {
+        return _aliasOf.getTunnel(gatewayId);
+    }
+    
+    @Override
+    public List<TunnelInfo> listTunnels() {
+        return _aliasOf.listTunnels();
+    }
+    
+    @Override
+    boolean needFallback() {
+        return false;
+    }
+
+    @Override
+    public List<PooledTunnelCreatorConfig> listPending() {
+        return _aliasOf.listPending();
+    }
+    
+    @Override
+    public boolean isAlive() {
+        return _alive && _aliasOf.isAlive();
+    }
+
+    @Override
+    public int size() { 
+        return _aliasOf.size();
+    }
+    
+    @Override
+    void addTunnel(TunnelInfo info) {
+        _aliasOf.addTunnel(info);
+    }
+    
+    @Override
+    void removeTunnel(TunnelInfo info) {
+        _aliasOf.removeTunnel(info);
+    }
+
+    @Override
+    void tunnelFailed(TunnelInfo cfg) {
+        _aliasOf.tunnelFailed(cfg);
+    }
+
+    @Override
+    void tunnelFailed(TunnelInfo cfg, Hash blamePeer) {
+        _aliasOf.tunnelFailed(cfg, blamePeer);
+    }
+
+    @Override
+    void refreshLeaseSet() {}
+
+    @Override
+    boolean buildFallback() {
+        return _aliasOf.buildFallback();
+    }
+
+    @Override
+    protected LeaseSet locked_buildNewLeaseSet() {
+        LeaseSet ls =  _context.netDb().lookupLeaseSetLocally(_aliasOf.getSettings().getDestination());
+        if (ls == null)
+            return null;
+        // copy everything so it isn't corrupted
+        LeaseSet rv = new LeaseSet();
+        for (int i = 0; i < ls.getLeaseCount(); i++) {
+            Lease old = ls.getLease(i);
+            Lease lease = new Lease();
+            lease.setEndDate(old.getEndDate());
+            lease.setTunnelId(old.getTunnelId());
+            lease.setGateway(old.getGateway());
+            rv.addLease(lease);
+        }
+        return rv;
+    }
+
+    @Override
+    public long getLifetimeProcessed() {
+        return _aliasOf.getLifetimeProcessed();
+    }
+
+    @Override
+    int countHowManyToBuild() {
+        return 0;
+    }
+    
+    @Override
+    PooledTunnelCreatorConfig configureNewTunnel() {
+        return null;
+    }
+
+    @Override
+    void buildComplete(PooledTunnelCreatorConfig cfg) {}
+    
+    @Override
+    public String toString() {
+        return "Aliased " + super.toString();
+    }
+}
diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
index ca1b03ff41e3599f36fbcea90258774f0db00774..5b2bdfb2a1a7f2a0d00a05cf152c49da4aa4d844 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
@@ -352,7 +352,7 @@ class BuildHandler implements Runnable {
                         default:
                             _context.statManager().addRateData("tunnel.receiveRejectionCritical", 1);
                     }
-                    // penalize peer based on their bitchiness level
+                    // penalize peer based on their reported error level
                     _context.profileManager().tunnelRejected(peer, rtt, howBad);
                     _context.messageHistory().tunnelParticipantRejected(peer, "peer rejected after " + rtt + " with " + howBad + ": " + cfg.toString());
                 }
@@ -640,7 +640,9 @@ class BuildHandler implements Runnable {
             _context.statManager().addRateData("tunnel.rejectHostile", 1);
             // We are 2 hops in a row? Drop it without a reply.
             // No way to recognize if we are every other hop, but see below
-            _log.error("Dropping build request, we are the next hop");
+            // old i2pd
+            if (_log.shouldWarn())
+                _log.warn("Dropping build request, we are the next hop");
             return;
         }
         // previous test should be sufficient to keep it from getting here but maybe not?
diff --git a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
index 68ad4e046f7939cf837350d92ecc8ed4130b8851..b6b141e7a8eb56b35a4eafff888fef56299f66d7 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ExploratoryPeerSelector.java
@@ -24,7 +24,7 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
         super(context);
     }
 
-	public List<Hash> selectPeers(TunnelPoolSettings settings) {
+    public List<Hash> selectPeers(TunnelPoolSettings settings) {
         Log l = ctx.logManager().getLog(getClass());
         int length = getLength(settings);
         if (length < 0) { 
@@ -33,12 +33,12 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
             return null;
         }
         
-        if (false && shouldSelectExplicit(settings)) {
-            List<Hash> rv = selectExplicit(settings, length);
-            if (l.shouldLog(Log.DEBUG))
-                l.debug("Explicit peers selected: " + rv);
-            return rv;
-        }
+        //if (false && shouldSelectExplicit(settings)) {
+        //    List<Hash> rv = selectExplicit(settings, length);
+        //    if (l.shouldLog(Log.DEBUG))
+        //        l.debug("Explicit peers selected: " + rv);
+        //    return rv;
+        //}
         
         Set<Hash> exclude = getExclude(settings.isInbound(), true);
         exclude.add(ctx.routerHash());
@@ -55,34 +55,43 @@ class ExploratoryPeerSelector extends TunnelPeerSelector {
         // FloodfillNetworkDatabaseFacade fac = (FloodfillNetworkDatabaseFacade)ctx.netDb();
         // exclude.addAll(fac.getFloodfillPeers());
         HashSet<Hash> matches = new HashSet<Hash>(length);
-        boolean exploreHighCap = shouldPickHighCap();
-
-        //
-        // We don't honor IP Restriction here, to be fixed
-        //
-
-        // If hidden and inbound, use fast peers - that we probably have recently
-        // connected to and so they have our real RI - to maximize the chance
-        // that the adjacent hop can connect to us.
-        if (settings.isInbound() && ctx.router().isHidden()) {
-            if (l.shouldLog(Log.INFO))
-                l.info("EPS SFP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
-            ctx.profileOrganizer().selectFastPeers(length, exclude, matches);
-        } else if (exploreHighCap) {
-            if (l.shouldLog(Log.INFO))
-                l.info("EPS SHCP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
-            ctx.profileOrganizer().selectHighCapacityPeers(length, exclude, matches);
-        } else if (ctx.commSystem().haveHighOutboundCapacity()) {
-            if (l.shouldLog(Log.INFO))
-                l.info("EPS SNFP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
-            ctx.profileOrganizer().selectNotFailingPeers(length, exclude, matches, false);
-        } else { // use only connected peers so we don't make more connections
-            if (l.shouldLog(Log.INFO))
-                l.info("EPS SANFP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
-            ctx.profileOrganizer().selectActiveNotFailingPeers(length, exclude, matches);
+
+        if (length > 0) {
+            boolean exploreHighCap = shouldPickHighCap();
+
+            //
+            // We don't honor IP Restriction here, to be fixed
+            //
+
+            // If hidden and inbound, use fast peers - that we probably have recently
+            // connected to and so they have our real RI - to maximize the chance
+            // that the adjacent hop can connect to us.
+            if (settings.isInbound() && ctx.router().isHidden()) {
+                if (l.shouldLog(Log.INFO))
+                    l.info("EPS SFP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
+                ctx.profileOrganizer().selectFastPeers(length, exclude, matches);
+            } else if (exploreHighCap) {
+                if (l.shouldLog(Log.INFO))
+                    l.info("EPS SHCP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
+                ctx.profileOrganizer().selectHighCapacityPeers(length, exclude, matches);
+            } else if (ctx.commSystem().haveHighOutboundCapacity()) {
+                if (l.shouldLog(Log.INFO))
+                    l.info("EPS SNFP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
+                // As of 0.9.23, we include a max of 2 not failing peers,
+                // to improve build success on 3-hop tunnels.
+                // Peer org credits existing items in matches
+                if (length > 2)
+                    ctx.profileOrganizer().selectHighCapacityPeers(length - 2, exclude, matches);
+                ctx.profileOrganizer().selectNotFailingPeers(length, exclude, matches, false);
+            } else { // use only connected peers so we don't make more connections
+                if (l.shouldLog(Log.INFO))
+                    l.info("EPS SANFP " + length + (settings.isInbound() ? " IB" : " OB") + " exclude " + exclude.size());
+                ctx.profileOrganizer().selectActiveNotFailingPeers(length, exclude, matches);
+            }
+            
+            matches.remove(ctx.routerHash());
         }
-        
-        matches.remove(ctx.routerHash());
+
         ArrayList<Hash> rv = new ArrayList<Hash>(matches);
         if (rv.size() > 1)
             orderPeers(rv, settings.getRandomKey());
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
index 521ff740a0f23dd17e0c3b888ecfdcb0a99f98e7..a1dae253c88a97260ac93a8cb764b3b8a61e963b 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java
@@ -8,6 +8,7 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Properties;
+import java.util.Set;
 import java.util.TreeSet;
 
 import net.i2p.data.Hash;
@@ -30,13 +31,13 @@ import net.i2p.util.Log;
  */
 public class TunnelPool {
     private final List<PooledTunnelCreatorConfig> _inProgress = new ArrayList<PooledTunnelCreatorConfig>();
-    private final RouterContext _context;
-    private final Log _log;
+    protected final RouterContext _context;
+    protected final Log _log;
     private TunnelPoolSettings _settings;
     private final List<TunnelInfo> _tunnels;
     private final TunnelPeerSelector _peerSelector;
     private final TunnelPoolManager _manager;
-    private volatile boolean _alive;
+    protected volatile boolean _alive;
     private long _lifetimeProcessed;
     private TunnelInfo _lastSelected;
     private long _lastSelectionPeriod;
@@ -118,19 +119,15 @@ public class TunnelPool {
         }
     }
 
-    void refreshSettings() {
-        if (!_settings.isExploratory()) {
+    private void refreshSettings() {
+        if (!_settings.isExploratory())
             return; // don't override client specified settings
-        } else {
-            if (_settings.isExploratory()) {
-                Properties props = new Properties();
-                props.putAll(_context.router().getConfigMap());
-                if (_settings.isInbound())
-                    _settings.readFromProperties(TunnelPoolSettings.PREFIX_INBOUND_EXPLORATORY, props);
-                else
-                    _settings.readFromProperties(TunnelPoolSettings.PREFIX_OUTBOUND_EXPLORATORY, props);
-            }
-        }
+        Properties props = new Properties();
+        props.putAll(_context.router().getConfigMap());
+        if (_settings.isInbound())
+            _settings.readFromProperties(TunnelPoolSettings.PREFIX_INBOUND_EXPLORATORY, props);
+        else
+            _settings.readFromProperties(TunnelPoolSettings.PREFIX_OUTBOUND_EXPLORATORY, props);
     }
     
     /** 
@@ -412,11 +409,17 @@ public class TunnelPool {
     public List<PooledTunnelCreatorConfig> listPending() { synchronized (_inProgress) { return new ArrayList<PooledTunnelCreatorConfig>(_inProgress); } }
     
     /** duplicate of size(), let's pick one */
-    int getTunnelCount() { synchronized (_tunnels) { return _tunnels.size(); } }
+    int getTunnelCount() { return size(); }
     
     public TunnelPoolSettings getSettings() { return _settings; }
 
     void setSettings(TunnelPoolSettings settings) { 
+        if (settings != null && _settings != null) {
+            if (!(settings.isExploratory() || _settings.isExploratory())) {
+                settings.getAliases().addAll(_settings.getAliases());
+                settings.setAliasOf(_settings.getAliasOf());
+            }
+        }
         _settings = settings; 
         if (_settings != null) {
             if (_log.shouldLog(Log.INFO))
@@ -606,12 +609,18 @@ public class TunnelPool {
         if (_settings.isInbound() && !_settings.isExploratory()) {
             if (_log.shouldLog(Log.DEBUG))
                 _log.debug(toString() + ": refreshing leaseSet on tunnel expiration (but prior to grace timeout)");
-            LeaseSet ls = null;
+            LeaseSet ls;
             synchronized (_tunnels) {
                 ls = locked_buildNewLeaseSet();
             }
             if (ls != null) {
                 _context.clientManager().requestLeaseSet(_settings.getDestination(), ls);
+                Set<Hash> aliases = _settings.getAliases();
+                if (aliases != null && !aliases.isEmpty()) {
+                    for (Hash h : aliases) {
+                        _context.clientManager().requestLeaseSet(h, ls);
+                    }
+                }
             }
         }
     }
@@ -710,7 +719,7 @@ public class TunnelPool {
      *
      * @return null on failure
      */
-    private LeaseSet locked_buildNewLeaseSet() {
+    protected LeaseSet locked_buildNewLeaseSet() {
         if (!_alive)
             return null;
 
@@ -749,7 +758,7 @@ public class TunnelPool {
             TunnelId inId = tunnel.getReceiveTunnelId(0);
             Hash gw = tunnel.getPeer(0);
             if ( (inId == null) || (gw == null) ) {
-                _log.error(toString() + ": wtf, tunnel has no inbound gateway/tunnelId? " + tunnel);
+                _log.error(toString() + ": broken? tunnel has no inbound gateway/tunnelId? " + tunnel);
                 continue;
             }
             Lease lease = new Lease();
diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
index 4cf54cb69d984f86812aff4ad69f7bfb06de1b3e..e2e54e6e1af9cb2f9129d21fef8c08b7e6339398 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPoolManager.java
@@ -97,7 +97,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         ctx.statManager().createRateStat("tunnel.testAborted", "Tunnel test could not occur, since there weren't any tunnels to test with", "Tunnels", 
                                          RATES);
     }
-    
+
     /**
      * Pick a random inbound exploratory tunnel.
      * Warning - selectInboundExploratoryTunnel(Hash) is preferred.
@@ -113,7 +113,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         }
         return info;
     }
-    
+
     /**
      * Pick a random inbound tunnel from the given destination's pool.
      * Warning - selectOutboundTunnel(Hash, Hash) is preferred.
@@ -132,7 +132,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
                      " but there isn't a pool?");
         return null;
     }
-    
+
     /**
      * Pick a random outbound exploratory tunnel.
      * Warning - selectOutboundExploratoryTunnel(Hash) is preferred.
@@ -148,7 +148,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         }
         return info;
     }
-    
+
     /**
      * Pick a random outbound tunnel from the given destination's pool.
      * Warning - selectOutboundTunnel(Hash, Hash) is preferred.
@@ -164,7 +164,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         }
         return null;
     }
-    
+
     /**
      * Pick the inbound exploratory tunnel with the gateway closest to the given hash.
      * By using this instead of the random selectTunnel(),
@@ -184,7 +184,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         }
         return info;
     }
-    
+
     /**
      * Pick the inbound tunnel with the gateway closest to the given hash
      * from the given destination's pool.
@@ -208,7 +208,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
                      " but there isn't a pool?");
         return null;
     }
-    
+
     /**
      * Pick the outbound exploratory tunnel with the endpoint closest to the given hash.
      * By using this instead of the random selectTunnel(),
@@ -228,7 +228,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         }
         return info;
     }
-    
+
     /**
      * Pick the outbound tunnel with the endpoint closest to the given hash
      * from the given destination's pool.
@@ -249,7 +249,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         }
         return null;
     }
-    
+
     /**
      *  Expensive (iterates through all tunnels of all pools) and unnecessary.
      *  @deprecated unused
@@ -267,7 +267,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         if (info != null) return info;
         return null;
     }
-    
+
     /** @return number of inbound exploratory tunnels */
     public int getFreeTunnelCount() { 
             return _inboundExploratory.size(); 
@@ -304,10 +304,11 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             return pool.getTunnelCount();
         return 0;
     }
-    
+
     public int getParticipatingCount() { return _context.tunnelDispatcher().getParticipatingCount(); }
+
     public long getLastParticipatingExpiration() { return _context.tunnelDispatcher().getLastParticipatingExpiration(); }
-    
+
     /**
      *  @return (number of part. tunnels) / (estimated total number of hops in our expl.+client tunnels)
      *  100 max.
@@ -330,7 +331,6 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         return Math.min(part / (double) count, 100d);
     }
 
-
     public boolean isValidTunnel(Hash client, TunnelInfo tunnel) {
         if (tunnel.getExpiration() < _context.clock().now())
             return false;
@@ -386,17 +386,18 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             pool.setSettings(settings);
         }
     }
-    
+
     public synchronized void restart() { 
         _handler.restart();
         _executor.restart();
         shutdownExploratory();
         startup();
     }
-        
+
     /**
      *  Used only at session startup.
      *  Do not use to change settings.
+     *  Do not use for aliased destinations; use addAlias().
      */
     public void buildTunnels(Destination client, ClientTunnelSettings settings) {
         Hash dest = client.calculateHash();
@@ -434,8 +435,89 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         else
             outbound.startup();
     }
-    
-    
+
+    /**
+     *  Add another destination to the same tunnels.
+     *  Must have same encryption key an a different signing key.
+     *  @throws IllegalArgumentException if not
+     *  @return success
+     *  @since 0.9.21
+     */
+    public boolean addAlias(Destination dest, ClientTunnelSettings settings, Destination existingClient) {
+        if (dest.getSigningPublicKey().equals(existingClient.getSigningPublicKey()))
+            throw new IllegalArgumentException("signing key must differ");
+        if (!dest.getPublicKey().equals(existingClient.getPublicKey()))
+            throw new IllegalArgumentException("encryption key mismatch");
+        Hash h = dest.calculateHash();
+        Hash e = existingClient.calculateHash();
+        synchronized(this) {
+            TunnelPool inbound = _clientInboundPools.get(h);
+            TunnelPool outbound = _clientOutboundPools.get(h);
+            if (inbound != null || outbound != null) {
+                if (_log.shouldLog(Log.WARN))
+                    _log.warn("already have alias " + dest);
+                return false;
+            }
+            TunnelPool eInbound = _clientInboundPools.get(e);
+            TunnelPool eOutbound = _clientOutboundPools.get(e);
+            if (eInbound == null || eOutbound == null) {
+                if (_log.shouldLog(Log.WARN))
+                    _log.warn("primary not found " + existingClient);
+                return false;
+            }
+            eInbound.getSettings().getAliases().add(h);
+            eOutbound.getSettings().getAliases().add(h);
+            TunnelPoolSettings newIn = settings.getInboundSettings();
+            TunnelPoolSettings newOut = settings.getOutboundSettings();
+            newIn.setAliasOf(e);
+            newOut.setAliasOf(e);
+            inbound = new AliasedTunnelPool(_context, this, newIn, eInbound);
+            outbound = new AliasedTunnelPool(_context, this, newOut, eOutbound);
+            _clientInboundPools.put(h, inbound);
+            _clientOutboundPools.put(h, outbound);
+            inbound.startup();
+            outbound.startup();
+        }
+        if (_log.shouldLog(Log.WARN))
+            _log.warn("Added " + h + " as alias for " + e + " with settings " + settings);
+        return true;
+    }
+
+    /**
+     *  Remove a destination for the same tunnels as another.
+     *  @since 0.9.21
+     */
+    public void removeAlias(Destination dest) {
+        Hash h = dest.calculateHash();
+        synchronized(this) {
+            TunnelPool inbound = _clientInboundPools.remove(h);
+            if (inbound != null) {
+                Hash p = inbound.getSettings().getAliasOf();
+                if (p != null) {
+                    TunnelPool pri = _clientInboundPools.get(p);
+                    if (pri != null) {
+                        Set<Hash> aliases = pri.getSettings().getAliases();
+                        if (aliases != null)
+                            aliases.remove(h);
+                    }
+                }
+            }
+            TunnelPool outbound = _clientOutboundPools.remove(h);
+            if (outbound != null) {
+                Hash p = outbound.getSettings().getAliasOf();
+                if (p != null) {
+                    TunnelPool pri = _clientOutboundPools.get(p);
+                    if (pri != null) {
+                        Set<Hash> aliases = pri.getSettings().getAliases();
+                        if (aliases != null)
+                            aliases.remove(h);
+                    }
+                }
+            }
+            // TODO if primary already vanished...
+        }
+    }
+
     private static class DelayedStartup implements SimpleTimer.TimedEvent {
         private final TunnelPool pool;
 
@@ -469,7 +551,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         if (outbound != null)
             outbound.shutdown();
     }
-    
+
     /** queue a recurring test job if appropriate */
     void buildComplete(PooledTunnelCreatorConfig cfg) {
         if (cfg.getLength() > 1 &&
@@ -518,7 +600,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
         _context.jobQueue().addJob(new BootstrapPool(_context, _inboundExploratory));
         _context.jobQueue().addJob(new BootstrapPool(_context, _outboundExploratory));
     }
-    
+
     private static class BootstrapPool extends JobImpl {
         private TunnelPool _pool;
         public BootstrapPool(RouterContext ctx, TunnelPool pool) {
@@ -531,7 +613,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             _pool.buildFallback();
         }
     }
-    
+
     /**
      *  Cannot be restarted
      */
@@ -546,7 +628,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
             _inboundExploratory.shutdown();
             _outboundExploratory.shutdown();
     }
-    
+
     /** list of TunnelPool instances currently in play */
     public void listPools(List<TunnelPool> out) {
         out.addAll(_clientInboundPools.values());
diff --git a/router/java/src/net/i2p/router/util/DecayingBloomFilter.java b/router/java/src/net/i2p/router/util/DecayingBloomFilter.java
index a5910e36efbb023735d05c3ad90aa75488ed9fca..bafd1c2c88dbbe2d529678d02f3ba514790a4310 100644
--- a/router/java/src/net/i2p/router/util/DecayingBloomFilter.java
+++ b/router/java/src/net/i2p/router/util/DecayingBloomFilter.java
@@ -86,16 +86,24 @@ public class DecayingBloomFilter {
         this(context, durationMs, entryBytes, name, context.getProperty("router.decayingBloomFilterM", DEFAULT_M));
     }
 
-    /** @param m filter size exponent */
+    /**
+     * @param m filter size exponent, max is 29
+     */
     public DecayingBloomFilter(I2PAppContext context, int durationMs, int entryBytes, String name, int m) {
         _context = context;
         _log = context.logManager().getLog(DecayingBloomFilter.class);
         _entryBytes = entryBytes;
         _name = name;
         int k = DEFAULT_K;
-        // max is (23,11) or (26,10); see KeySelector for details
-        if (m > DEFAULT_M)
+        // max is (23,11) or (26,10) or (29,9); see KeySelector for details
+        if (m > DEFAULT_M) {
             k--;
+            if (m > 26) {
+                k--;
+                if (m > 29)
+                    throw new IllegalArgumentException("Max m is 29");
+            }
+        }
         _current = new BloomSHA1(m, k);
         _previous = new BloomSHA1(m, k);
         _durationMs = durationMs;
@@ -375,6 +383,9 @@ public class DecayingBloomFilter {
      *
      *  Following stats for m=26, k=10:
      *  4096 7.3E-6; 5120 4.5E-5; 6144 1.8E-4; 8192 0.14%; 10240 0.6%, 12288 1.7%
+     *
+     *  Following stats for m=27, k=9:
+     *  8192 1.1E-5; 10240 5.6E-5; 12288 2.0E-4; 14336 5.8E-4; 16384 0.14%
      *</pre>
      */
 /*****
diff --git a/router/java/src/org/cybergarage/xml/parser/JaxpParser.java b/router/java/src/org/cybergarage/xml/parser/JaxpParser.java
index 332c5525fc4d7ea18eebaaa1998338de51ab18d9..af84b14f310abae8cc2280acbb871ae0dcbd6156 100644
--- a/router/java/src/org/cybergarage/xml/parser/JaxpParser.java
+++ b/router/java/src/org/cybergarage/xml/parser/JaxpParser.java
@@ -184,6 +184,40 @@ public class JaxpParser extends Parser
 			}
 			return rv;
 		}
+
+		/** @since 0.9.22 */
+		@Override
+		public int read(byte[] b) throws IOException {
+			return this.read(b, 0, b.length);
+		}
+
+		/** @since 0.9.22 */
+		@Override
+		public int read(byte[] b, int off, int len) throws IOException {
+			if (b == null) {
+				throw new NullPointerException();
+			} else if (off < 0 || len < 0 || len > b.length - off) {
+				throw new IndexOutOfBoundsException();
+			} else if (len == 0) {
+				return 0;
+			}
+
+			int rv = this.read();
+			if (-1 == rv) {
+				return -1;
+			}
+
+			int i = 1;
+			b[off] = (byte) rv;
+			for (; i < len; i++) {
+				rv = this.read();
+				if (-1 == rv) {
+					break;
+				}
+				b[off + i] = (byte) rv;
+			}
+			return i;
+		}
 	}
 
 	/**
diff --git a/router/java/test/junit/net/i2p/router/client/LocalClientConnectionRunner.java b/router/java/test/junit/net/i2p/router/client/LocalClientConnectionRunner.java
index 9ded6ce909defda33a46d9dc0f59046dcfae9dc2..11bed79a9a23402c9ce1f7166d2c1df2e10f46e5 100644
--- a/router/java/test/junit/net/i2p/router/client/LocalClientConnectionRunner.java
+++ b/router/java/test/junit/net/i2p/router/client/LocalClientConnectionRunner.java
@@ -42,9 +42,9 @@ class LocalClientConnectionRunner extends ClientConnectionRunner {
      *  don't instantiate a RequestLeaseSetJob
      */
     @Override
-    void requestLeaseSet(LeaseSet set, long expirationTime, Job onCreateJob, Job onFailedJob) {
+    void requestLeaseSet(Hash h, LeaseSet set, long expirationTime, Job onCreateJob, Job onFailedJob) {
         RequestVariableLeaseSetMessage msg = new RequestVariableLeaseSetMessage();
-        msg.setSessionId(getSessionId());
+        msg.setSessionId(getSessionId(h));
         for (int i = 0; i < set.getLeaseCount(); i++) {
             Lease lease = set.getLease(i);
             msg.addEndpoint(lease);
@@ -60,12 +60,12 @@ class LocalClientConnectionRunner extends ClientConnectionRunner {
      *  No job queue, so super NPEs
      */
     @Override
-    void updateMessageDeliveryStatus(MessageId id, long messageNonce, int status) {
+    void updateMessageDeliveryStatus(Destination dest, MessageId id, long messageNonce, int status) {
         if (messageNonce <= 0)
             return;
         MessageStatusMessage msg = new MessageStatusMessage();
         msg.setMessageId(id.getMessageId());
-        msg.setSessionId(getSessionId().getSessionId());
+        msg.setSessionId(getSessionId(dest.calculateHash()).getSessionId());
         // has to be >= 0, it is initialized to -1
         msg.setNonce(messageNonce);
         msg.setSize(0);
diff --git a/router/java/test/junit/net/i2p/router/client/LocalClientManager.java b/router/java/test/junit/net/i2p/router/client/LocalClientManager.java
index 12666969da0b315e6d170a03810b4a4d0d13e639..0f9ba30aba09a57458f966b4046262ce7d8347c5 100644
--- a/router/java/test/junit/net/i2p/router/client/LocalClientManager.java
+++ b/router/java/test/junit/net/i2p/router/client/LocalClientManager.java
@@ -58,12 +58,12 @@ class LocalClientManager extends ClientManager {
         if (runner != null) {
             runner.receiveMessage(toDest, fromDest, payload);
             if (sender != null)
-                sender.updateMessageDeliveryStatus(msgId, messageNonce, MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL);
+                sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, MessageStatusMessage.STATUS_SEND_SUCCESS_LOCAL);
         } else {
             // remote.  ignore.
             System.out.println("Message " + msgId + " is targeting a REMOTE destination - DROPPED");
             if (sender != null)
-                sender.updateMessageDeliveryStatus(msgId, messageNonce, MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE);
+                sender.updateMessageDeliveryStatus(fromDest, msgId, messageNonce, MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE);
         }
     }
 
diff --git a/router/java/test/junit/net/i2p/router/client/LocalClientMessageEventListener.java b/router/java/test/junit/net/i2p/router/client/LocalClientMessageEventListener.java
index 17cd20e7165986fd68ad264c25f95f92bc78ae45..d4873f4a8656a6e342cce728f3b684ef62fc41c8 100644
--- a/router/java/test/junit/net/i2p/router/client/LocalClientMessageEventListener.java
+++ b/router/java/test/junit/net/i2p/router/client/LocalClientMessageEventListener.java
@@ -25,6 +25,7 @@ import net.i2p.data.i2cp.GetBandwidthLimitsMessage;
 import net.i2p.data.i2cp.HostLookupMessage;
 import net.i2p.data.i2cp.HostReplyMessage;
 import net.i2p.data.i2cp.I2CPMessageException;
+import net.i2p.data.i2cp.SessionConfig;
 import net.i2p.data.i2cp.SessionId;
 import net.i2p.router.RouterContext;
 
@@ -43,7 +44,7 @@ class LocalClientMessageEventListener extends ClientMessageEventListener {
      *  Immediately send a fake leaseset
      */
     @Override
-    protected void startCreateSessionJob() {
+    protected void startCreateSessionJob(SessionConfig config) {
         long exp = _context.clock().now() + 10*60*1000;
         LeaseSet ls = new LeaseSet();
         Lease lease = new Lease();
@@ -53,7 +54,7 @@ class LocalClientMessageEventListener extends ClientMessageEventListener {
         Date date = new Date(exp);
         lease.setEndDate(date);
         ls.addLease(lease);
-        _runner.requestLeaseSet(ls, exp, null, null);
+        _runner.requestLeaseSet(config.getDestination().calculateHash(), ls, exp, null, null);
     }
 
     /**